K3s 設置 TLS 證書的主題別名

本文介紹兩種設置 K3s TLS 證書主題別名的方法。

目的

相對 IP 地址而言,域名的好處就是易記和靈活性高,即便服務器 IP 改動,只需要改動對應 DNS 解析記錄即可。

然而默認地,當連接 K3s 集群域名地址時,你會遇到以下類似錯誤(以 example.org 為例):

1E0131 12:38:27.974601   45714 memcache.go:265] "Unhandled Error" err="couldn't get current server API group list: Get \"https://example.org:6443/api?timeout=32s\": tls: failed to verify certificate: x509: certificate is valid for archlinux, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not example.org"
2Unable to connect to the server: tls: failed to verify certificate: x509: certificate is valid for archlinux, kubernetes, kubernetes.default, kubernetes.default.svc, kubernetes.default.svc.cluster.local, localhost, not example.org

解決方案

解決的方法很簡單,就是將域名添加為額外的 TLS 證書主題別名。

於創建集群時,指定 --tls-san 參數

1curl -sfL https://get.k3s.io | sh -s -- --tls-san="example.org"

添加 --tls-san 到現有的集群

編輯 /etc/systemd/system/k3s.service,並將 --tls-san 追加到 ExecStart 命令:

1sudo vim /etc/systemd/system/k3s.service
1ExecStart=/usr/local/bin/k3s \
2    server \
3      '--tls-san=example.org' \

接著重啟 K3s 即可。

1sudo systemctl daemon-reload
2
3sudo systemctl restart k3s
razonyang
2025年1月31日 星期五 2025年1月30日 星期四