Comment ลูกค้าอยู่ใน Kubernetes Pod

0

คำถาม

ฉันมองหาวิธีที่จะทำให้ Comment ลูกค้าของงานถูกเป็นตู้คอนเทนเนอร์,ผมอธิบายสิ่งที่ฉันทำแต่คุณสามารถข้ามทั้งหมดของฉันอธิบายและข้อเสนอทางแก้ของคุณโดยตรงฉันไม่สนหรอแทนที่ทั้งหมดด้านล่างของขั้นตอนถ้ามันได้ผล,ฉันอยากจะให้ของตู้คอนเทนเนอร์ต้องการใช้ VPN(ExpressVPN สำหรับตัวอย่าง)อยู่ในทางที่ต่างเว็บเบราว์เซอร์ภายนอกและภายในระบบเครือข่ายได้ผล

ฉันมี docker ภาพนั่นเป็นคำ Comment ลูกค้าของมันได้ผลหากับคำสั่ง:

docker run --rm -it --cap-add=NET_ADMIN --device=/dev/net/tun my-app /bin/bash

ที่ docker ภาพมีรายการจุดตบสคริปต์:

curl https://vpnvendor/configurations.zip -o /app/configurations.zip
mkdir -p /app/open_vpn/ip_vanish/config
unzip /app/configurations.zip -d /app/open_vpn/config
printf "username\npassword\n" > /app/open_vpn/vpn-auth.conf
cd /app/open_vpn/config
openvpn --config ./config.ovpn --auth-user-pass /app/open_vpn/vpn-auth.conf

มันทำงานสบายดีแต่ตอนที่ฉันจะยกขึ้นมันเป็นตู้คอนเทนเนอร์อยู่ใน K8S Pod,มันทำลายมันคือปรับความเข้าใจกัน,K8S กลุ่มก้อนต้องการภายในเครือข่ายการสื่อสารระหว่างโหนดต่างๆดังนั้น VPN ทำลายมันได้ยังไงฉันทำให้มันทำงาน? ในกูเกิ้ลเมื่อค้นเป็นโครตจะผิดหวังเรื่องของวิธีแก้ปัญหาต่างๆที่ทำงานและมีแค่สองสามีหนึ่งเดียวกับที่คล้ายกันเรื่อง: Comment-ลูกค้าของพ็อดบน K8s-เครือข่ายท้องถิ่นไม่ค่อยเป็นมิต แต่ไม่ได้เข้าใจมันดีมาก,ได้โปรดช่วยผมด้วย

ตั้งแต่ IPVanish เป็นที่รู้จักกันดีไปพวกเขา ovpn ตัวอย่างเช่น,ฉันใช้อีกผู้จำหน่ายแต่สามารถเข้าถึงข้อ IPVanish บัญชีผู้ใช้และมันไม่ทำงานเหมือนกั:

client
dev tun
proto udp
remote lon-a52.ipvanish.com 443
resolv-retry infinite
nobind
persist-key
persist-tun
persist-remote-ip
ca ca.ipvanish.com.crt
verify-x509-name lon-a52.ipvanish.com name
auth-user-pass
comp-lzo
verb 3
auth SHA256
cipher AES-256-CBC
keysize 256
tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-DSS-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA

ฉันยอมรับฟื้นคืนชีพใน Golang หรือ LANGUAGE มันไม่สำคัญหรอกถึงแม้ว่าฉันจะใช้ไป-ลูกค้าของฉันรหัสสำหรับพ็การสร้างคือ:

podObj := &v1.Pod{
        ObjectMeta: metav1.ObjectMeta{
            Name:      "mypod",
            Namespace: "default",
        },
        Spec: v1.PodSpec{
            Containers: []v1.Container{
                {
                    Name:            "worker1",
                    Image:           "192.168.1.138:5000/myimage",
                    ImagePullPolicy: v1.PullAlways,
                    Stdin: true,
                    TTY:   true,
                    /* Trying to simulate --device=/dev/net/tun I copied the below, but it does not work
// https://garunski.medium.com/openvpn-and-minikube-25511099f8de
                    VolumeMounts: []v1.VolumeMount{
                        {
                            ReadOnly:  true,
                            Name:      "dev-tun",
                            MountPath: "/dev/net/tun",
                        },
                    },*/
                    SecurityContext: &v1.SecurityContext{
                        // Taken from https://caveofcode.com/how-to-setup-a-vpn-connection-from-inside-a-pod-in-kubernetes/
                        Privileged: boolPtr(true),
                        Capabilities: &v1.Capabilities{
                            Add: []v1.Capability{
                                "NET_ADMIN",
                            },
                        },
                    },
                },
            },
            NodeName: "worker-node01",
        },
    }
clientset.CoreV1().Pods("default").Create(context.Background(), podObj, metav1.CreateOptions{})

ฉันสามารถเพิ่ม NET_ADMIN วามสามารถแต่ฉันต้องการก็เพื่อให้เข้าถึง /dev/net/tun อุปกรณ์และนั่นคือปัญหาแต่ถึงแม้ว่าฉันหาทางออก,มันจะแตกภายในระบบเครือข่าย.

ปรับปรุงหนึ่ง

ฉันสร้างเว็บเบราว์เซอร์ภายนอกระบบเครือข่ายทำงานโดยการเพิ่มข้อสองคนอยู่ในบรรทัดของฉัน docker เป็นรายการจุด:

# Taken from https://caveofcode.com/how-to-setup-a-vpn-connection-from-inside-a-pod-in-kubernetes/
mknod /dev/net/tun c 10 200
chmod 600 /dev/net/tun
kubernetes networking openvpn vpn
2021-11-24 00:17:46
2

คำตอบที่ดีที่สุด

2

นี่คือขนาดเล็กที่สุดตัวอย่างของพ็อดกับ Comment ลูกค้า ฉันเคย kylemanna/comment เป็นเซิร์ฟเวอร์และสร้างพื้นฐานลูกค้าของ config. ฉันเพียงถูกเพิ่มสองเส้นทางที่ถูกสร้างขึ้ config เพื่อทำให้มันทำงานอยู่ เห็นด้านล่างนี้:

apiVersion: v1
kind: Pod
metadata:
  name: ovpn
  namespace: default
spec:
  containers:
    - name: ovpn
      image: debian:buster
      args:
        - bash
        - -c
        # install OpenVPN and curl; use curl in an endless loop to print external IP
        - apt update && apt install -y openvpn curl && cd /config && openvpn client & while sleep 5; do echo $(date; curl --silent ifconfig.me/ip); done
      volumeMounts:
        - mountPath: /dev/net/tun
          readOnly: true
          name: tun-device
        - mountPath: /config
          name: config
      securityContext:
        capabilities:
          add: ["NET_ADMIN"]
  volumes:
    - name: tun-device
      hostPath:
        path: /dev/net/tun
    - name: config
      secret:
        secretName: ovpn-config
---
apiVersion: v1
kind: Secret
metadata:
  name: ovpn-config
  namespace: default
stringData:
  client: |

    # A sample config generated by https://github.com/kylemanna/docker-openvpn server
    client
    nobind
    dev tun

    # Remote server params
    remote PASTE.SERVER.IP.HERE 1194 udp

    # Push all traffic through the VPN
    redirect-gateway def1
    # except these two k8s subnets
    route 10.43.0.0 255.255.0.0 net_gateway
    route 10.42.0.0 255.255.0.0 net_gateway

    # Below goes irrelevant TLS config
    remote-cert-tls server
    <key>
    -----BEGIN PRIVATE KEY-----
    -----END PRIVATE KEY-----
    </key>
    <cert>
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
    </cert>
    <ca>
    -----BEGIN CERTIFICATE-----
    -----END CERTIFICATE-----
    </ca>
    key-direction 1
    <tls-auth>
    #
    # 2048 bit OpenVPN static key
    #
    -----BEGIN OpenVPN Static key V1-----
    -----END OpenVPN Static key V1-----
    </tls-auth>
2021-11-24 18:42:15

ขอบคุณสำหรับความช่วยเหลือนี่คือทางออกที่ฉันกำลังมองหา
Melardev
0

พยายาม Tailscale. https://tailscale.com/ มันง่ายมาก และพวกเขาต้องเป็นเจ๋งอิสระขั้น

2021-11-25 08:21:17

ขอบคุณสำหรับคำแนะนำฉันไม่รู้เรื่องแต่มันไม่ใช่สิ่งที่ฉันกำลังมองหา
Melardev

ฉันมีมันกำลังอยู่ใน k8s เป็นกลุ่ม. มันทำให้เป็น VPN เกตเวย์ที่เป็นกลุ่มดังนั้นฉันเห็น ipod ของท้องถิ่นเครื่องมือถ้าพวกเขาอยู่บนของฉันบนเครือข่ายท้องถิ่น. มันเป็น 10 mn ติดตั้งและมัน...ได้ผล นั่นเป็น comment เปรียบเทียบได้ที่นี่: tailscale.com/kb/1170/tailscale-vs-openvpn
Pierre

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่