按照 Cloudflare 文章的说法, Argo Tunnel 的 Ingress Controller 在 2019 年年底已经停止维护, 建议用户使用 Sidecar 的方式使用 Argo Tunnel, 所以这里使用 Sidecar 的方式进行部署.
配置 Cert 文件
初次使用时, 首先需要将 Cloudflare 的证书文件转换为 Kubernetes Secret.
生成 Cert 文件
在下载页面下载 cloudflared
文件, 或在 Linux 系统中使用命令行直接安装
1
| curl https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-darwin-amd64.tgz | tar xzC /usr/local/bin
|
Mac 系统也可使用 brew 安装
1
| brew install cloudflare/cloudflare/cloudflared
|
接着使用登录指令绑定账号
1
| cloudflared tunnel login
|
按照提示进行, 完成后证书将会被保存在 ~/.cloudflared/cert.pem
文件中.
转换 Cert 文件为 Secret
例如我们将绑定域名为 xiaolanglang.net
, 则命令为:
1
| kubectl create secret generic xiaolanglang.net --from-file="$HOME/.cloudflared/cert.pem"
|
配置 Deployment 文件
我们将之前的配置文件修改如下:
echo-deploy.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| apiVersion: apps/v1 kind: Deployment metadata: labels: app: echo name: echo spec: replicas: 1 selector: matchLabels: app: echo template: metadata: labels: app: echo spec: containers: - name: echo image: k8s.gcr.io/echoserver:1.10 imagePullPolicy: Always ports: - containerPort: 8080 resources: limits: cpu: 10m memory: 20Mi requests: cpu: 10m memory: 20Mi - name: tunnel image: docker.io/cloudflare/cloudflared:2020.8.0 imagePullPolicy: Always command: ["cloudflared", "tunnel"] args: - --url=http://127.0.0.1:8080 - --hostname=echo.xiaolanglang.net - --origincert=/etc/cloudflared/cert.pem - --no-autoupdate resources: limits: cpu: 10m memory: 20Mi requests: cpu: 10m memory: 20Mi volumeMounts: - mountPath: /etc/cloudflared name: tunnel-secret readOnly: true volumes: - name: tunnel-secret secret: secretName: xiaolanglang.net nodeSelector: network: proxy terminationGracePeriodSeconds: 60
|
验证结果
当节点启动后, 使用浏览器访问 echo.xiaolanglang.net 即可获得响应信息.