這是本文件的舊版!
K8s(rke) 內服務設定 SSL 憑證的方式
在一個使用 rke 建置好的 K8s 內, 設定使用 Let's Encrypt 產生的 SSL 憑證 讓裡面的服務 https 可以正確使用
基本處理步驟
- DNS 的設定
- 產生 SSL 憑證 : 參考 申請設定 Let's Encrypt 免費 SSL 憑證(CentOS + Apache/Nginx)
- 將憑證匯入 K8s 內 (建立 secret tls)
- 設定 K8s 使用 secret tls
Exp1. 以 *.ingress-devops.ichiayi.com 來設定為預設服務使用的 SSL 憑證
- 確認 DNS 已設定好 *.ingress-devops.ichiayi.com
rkeuser@pve-devops1:~$ ping ttt.ingress-devops.ichiayi.com PING ttt.ingress-devops.ichiayi.com (172.16.0.190) 56(84) bytes of data. 64 bytes from iiiDevOps.unassigned-domain (172.16.0.190): icmp_seq=1 ttl=64 time=0.025 ms 64 bytes from iiiDevOps.unassigned-domain (172.16.0.190): icmp_seq=2 ttl=64 time=0.042 ms
- 透過 Let's Encrypt 產生 *.ingress-devops.ichiayi.com 憑證
sudo certbot \ -d *.ingress-devops.ichiayi.com \ --manual --preferred-challenges dns certonly --server https://acme-v02.api.letsencrypt.org/directory
產生的憑證檔(cert.pem privkey.pem)應該會出現在 /etc/letsencrypt/live/ingress-devops.ichiayi.com 內
- 將憑證匯入 K8s (建立 secret tls → ingress-wildcard-tls)
kubectl create secret tls ingress-wildcard-tls --cert=cert.pem --key=privkey.pem
- 設定 K8s 預設憑證為 ingress-wildcard-tls (RKE 安裝的 K8s + Rancher v2.4)
- 透過 Rancher Web admin 登入的管理介面
- cluster → System → Resources → Workloads 找到 nginx-ingress-controller → View/Edit YAML
- 加上指定預設憑證為 ingress-wildcard-tls :
--default-ssl-certificate=default/ingress-wildcard-tls
- SAVE 之後 K8s 的 ingress 服務會重新啟動, 等 Ingress 服啟動後就會將預設憑證改成 *.ingress-devops.ichiayi.com
- 檢查之前已在 K8s 內透過 ingress 的 https 連線網頁, 應該可以透過瀏覽器看到 SSL 憑證已經更換