ฉันมองหาวิธีที่จะทำให้ 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