Pod VPN to external ServicesΒΆ

If one of your Kubernetes applications needs to communicate with a service behind a VPN, it is the simplest solution to add a VPN connection to your application.

We recommend taking advantage of how sidecar containers work in a Kubernetes Pod. Instead of installing a VPN stack inside your application, start a sidecar container in the same pod as the VPN stack.

All containers in the same pod share network namespace, meaning that if one container runs a VPN connection, will other containers in the same pod use the same VPN connection.

This has been tested with OpenVPN and Wireguard sidecar containers. No unique configuration was needed for these 2 tests.

Example of a wireguard sidecar configuration

containers:
  - name: wireguard
    image: ghcr.io/linuxserver/wireguard
    imagePullPolicy: IfNotPresent
    securityContext:
      privileged: true
      capabilities:
        add:
          - NET_ADMIN
          - SYS_MODULE
      allowPrivilegeEscalation: true
      readOnlyRootFilesystem: false
    volumeMounts:
      - mountPath: /config
        name: wireguard