最近在使用阿里云流水线发布应用的时,发现 k3s 默认的证书仅针对所在服务器的内网有效,在流水线添加集群的时候会报错 unable to connect to the server: x509: certificate is valid for 10.43.0.1, 127.0.0.1, 172.30.186.237, ::1, not xx.xx.xx.xx(你的外网 ip),这时候需要重新给你的公网ip 生成一下证书,具体操作如下:
1. 先停掉 k3s 服务
sudo systemctl stop k3s
2. 备份现有证书
sudo cp /var/lib/rancher/k3s/server/tls/server-ca.crt /var/lib/rancher/k3s/server/tls/server-ca.crt.bak
sudo cp /var/lib/rancher/k3s/server/tls/server-ca.key /var/lib/rancher/k3s/server/tls/server-ca.key.bak
sudo cp /var/lib/rancher/k3s/server/tls/server.crt /var/lib/rancher/k3s/server/tls/server.crt.bak
sudo cp /var/lib/rancher/k3s/server/tls/server.key /var/lib/rancher/k3s/server/tls/server.key.bak
3. 编辑 k3s 配置文件
编辑配置文件:
vim /etc/rancher/k3s/config.yaml
在配置文件添加或修改 tls-san
选项以包含新的 IP 地址:
tls-san:
- 47.108.119.245
4. 删除现有证书
sudo rm /var/lib/rancher/k3s/server/tls/server-ca.crt
sudo rm /var/lib/rancher/k3s/server/tls/server-ca.key
sudo rm /var/lib/rancher/k3s/server/tls/server.crt
sudo rm /var/lib/rancher/k3s/server/tls/server.key
5. 重启k3s 服务
sudo systemctl start k3s
6. 验证是否生效
验证你的证书是否生效,如果以下命令有输出证书信息,则代表证书重新生成成功,可在外网环境下访问 k3s 集群了。
openssl s_client -connect <your ip>:6443 -showcerts