k8s上部署openvpn

一、openvpn源

helm search repo openvpn

二、下载

helm pull mirror/openvpn

三、修改配置文件

tar -zxf openvpn-4.2.5.tgz

cd openvpn

复制代码
# egrep -v "^#|^$|^ *#" values.yaml 
replicaCount: 1
updateStrategy: {}
imagePullSecretName:
image:
  repository: jfelten/openvpn-docker
  tag: 1.1.0
  pullPolicy: IfNotPresent
service:
  type: NodePort
  externalPort: 443
  internalPort: 443
  externalIPs: [192.168.110.26]
  nodePort: 32085
  annotations: {}
podAnnotations: {}
ipForwardInitContainer: true
resources:
  limits:
    cpu: 500m
    memory: 1024Mi
  requests:
    cpu: 500m
    memory: 1024Mi
readinessProbe:
  initialDelaySeconds: 5
  periodSeconds: 5
  successThreshold: 2
persistence:
  enabled: true
  storageClass: "nfs-hdd"
  accessMode: ReadWriteOnce
  size: 2048M
openvpn:
  OVPN_NETWORK: 10.240.0.0
  OVPN_SUBNET: 255.255.0.0
  OVPN_PROTO: udp
  OVPN_K8S_POD_NETWORK: "10.244.0.0"
  OVPN_K8S_POD_SUBNET: "255.255.0.0"
  OVPN_K8S_SVC_NETWORK: 10.96.0.0
  OVPN_K8S_SVC_SUBNET: 255.240.0.0
  DEFAULT_ROUTE_ENABLED: true
  dhcpOptionDomain: true
  redirectGateway: true
  useCrl: false
  taKey: false
  cipher: AES-256-CBC
  serverConf: |
    max-clients 100
    client-to-client
  istio:
    enabled: false
    proxy:
      port: 15001
  iptablesExtra: []
  ccd:
    enabled: false
    config: {}
nodeSelector: {}
tolerations: []

四、部署

helm upgrade --install openvpn -n openvpn ./ -f values.yaml

这里还修改了svc里面的dns:

kubectl edit cm openvpn -n openvpn

五、生成客户端脚本

复制代码
# cat create-client.sh 
#!/bin/bash
POD_NAME=$(kubectl get pods --namespace "openvpn" -l "app=openvpn,release=openvpn" -o jsonpath='{ .items[0].metadata.name }')
SERVICE_NAME=$(kubectl get svc --namespace "openvpn" -l "app=openvpn,release=openvpn" -o jsonpath='{ .items[0].metadata.name }')
SERVICE_IP=$(kubectl get svc --namespace "openvpn" "$SERVICE_NAME" -o go-template='{{ range $k, $v := (index .status.loadBalancer.ingress 0)}}{{ $v }}{{end}}')
KEY_NAME=kubeVPN16
kubectl --namespace "openvpn" exec -it "$POD_NAME" /etc/openvpn/setup/newClientCert.sh "$KEY_NAME" "$SERVICE_IP"
kubectl --namespace "openvpn" exec -it "$POD_NAME" cat "/etc/openvpn/certs/pki/$KEY_NAME.ovpn" > "$KEY_NAME.ovpn"


此脚本的SERVICE_IP是有问题的,这个可以在生成文件后修改。这个根据实际情况操作。

执行后会生成kubeVPN16.ovpn的文件:

如下:

公网:

内网:

六、客户端导入

相关推荐
无言听风雨丶8 小时前
Kubernetes 控制平面深度剖析:从 kubectl apply 到 etcd 写入的全链路
平面·kubernetes·etcd
openFuyao9 小时前
openFuyao x 复旦大学软件工程实验室 Panel 回顾:Agentic时代,集群调度技术体系将如何演进?
kubernetes·openfuyao
螺蛳粉 螺蛳粉9 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻10 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
相思难忘成疾12 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo12 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
n1121213 小时前
Ollama 接 Open WebUI 中文界面:我踩的 4 个坑
云原生·eureka·ollama·本地大模型·open webui·私有部署·中文界面
阿里云云原生13 小时前
用户说 App“下不了单”:用 Session Replay 看清流程卡在哪一步
云原生
weirong13 小时前
给 K8s 加一个自动值班员:分级故障自愈引擎
kubernetes
云和数据.ChenGuang13 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes