選單
GSS 技術部落格
在這個園地裡我們將從技術、專案管理、客戶對談面和大家分享我們多年的經驗,希望大家不管是喜歡或是有意見,都可以回饋給我們,讓我們有機會和大家對話並一起成長!
若有任何問題請來信:gss_crm@gss.com.tw
3 分鐘閱讀時間 (510 個字)

申請免費憑證給K8S使用

申請免費憑證給K8S使用

在 Kubernetes 我們可以藉由 service type=LoadBalancer 或者是 ingress 讓外界訪問走 http 協定的服務,但注意,這只是 http 而非 https。如果要提升到 https 有兩個已知的辦法:

  • 在 ingress 上做手腳,例如 k3s 預設搭配 traefik 其實已有內建自簽憑證,也就是不論以 http:// 或 https:// 訪問都可以,只是在瀏覽器要允許例外,用 curl 的時候要加 -k。
  • 申請一個免費憑證。在 DNS 已確定、80 / 443 埠未被佔用,防火牆開通的狀態下,我們可以透過幾個簡單步驟取得,再轉換成 ingress 可接受的格式。

接下來以 Azure 上的一個 CentOS 7 VM 為例,逐步說明如下:

  1. 虛擬機要取得一個 Public IP,保留或不保留都可以。這裡的差別是重新啟動會不會換 IP 位址,因為我打算讓使用者透過名稱使用服務,IP 位址有沒有換都不影響,不保留還可以省一點錢。
  2. 虛擬機要申請一個 DNS 名稱,這與實體位置有關,例如我開在東亞(香港),後面固定會是 .eastasia.cloudapp.azure.com,前面才是可以自行取名的,例如 gss,只要沒有與他人衝突又符合規則就可以。
  3. 虛擬機本身防火牆預設是關閉的,但在 Azure 上還需要設定相關的 Network security group,允許外界連入 80 / 443 埠。
  4. 在虛擬機安裝 k3s 或其他你熟悉的 k8s。
  5. 在虛擬機安裝 epel-release 與 certbot。注意,雖然之前我們已有 k8s 環境,但憑證申請相關作業是臨時性的,我並不打算放到未來長久性的 k8s 服務環境裡,所以是在外面。
  6. 以 k3s 來說,因為 traefik 已經接管了虛擬機的 80 / 443 埠,而且重開機也會自動啟動,所以我們要暫時關了它:sudo systemctl disable k3s 並重啟系統。
  7. 重啟後的虛擬機應該沒有 k3s 服務以及 traefik 行程,這時我們可以申請免費憑證了:sudo certbot certonly -n -d gss.eastasia.cloudapp.azure.com --standalone。如果一切順利,可以在 /etc/letsencrypt/live/gss.eastasia.cloudapp.azure.com 目錄下找到 fullchain1.pem 以及 privkey1.pem 兩個檔案。
  8. 恢復 k3s 服務:sudo systemctl enable k3s; sudo systemctl start k3s。
  9. 轉換憑證為 ingress 可接受的格式:kubectl create secret tls gss --cert fullchain1.pem --key privkey1.pem。

如此一來我們就有一個名為 gss 的 secret 可被 ingress 引用,在 ingress.yaml 裡面大概是長這樣:

  • spec:
    • tls:
      • -secretName: gss

還不錯,又省下一筆錢。

[GIT] 跨 Repo 取得 commit 資料 (一) - remote + cherry-pi...
PWA - IndexDB Implement

相關文章

 

評論

尚無評論
已經注冊了? 這裡登入
Guest
2024/05/08, 週三

Captcha 圖像