所以我需要更换过期的 SSL 证书。不幸的是,负责这项任务的人突然去世了。我没有使用过 google cloud、kuberneted 或 ingress。
如果我转到 Google Cloud 控制台,转到负载均衡器并单击唯一显示的那个,它会显示名为“k8s-ssl-xyz”的证书,这是我需要更改的已过期证书。我尝试在前端设置下编辑此负载均衡器并创建一个新证书。这有效,但几分钟后它又恢复到旧证书。
在 kubernetes 引擎、服务和 ingress 下有一个名为“basic-ingress4”的服务。它的 yaml 文件包含一行内容:
ingress.kubernetes.io/ssl-cert: k8s-ssl-xyz
我尝试将“k8s-ssl-xyz”更改为我之前创建的证书的名称,但一段时间后它也会恢复为旧证书。
gcloud beta compute ssl-certificates list
返回:
NAME TYPE CREATION_TIMESTAMP EXPIRE_TIME MANAGED_STATUS
k8s-ssl-xyz 2019-10-01 2019-08-15
newcert MANAGED 2019-09-30 2019-12-29 ACTIVE
x.yz.de: ACTIVE
我也试过
gcloud compute target-https-proxies update k8s-tps-xyz --ssl-certificates newcert
它返回“已更新 [...]”,但它也不起作用。
基本上,我在这里迷路了。我怎样才能更改此证书而不使其自行重置?
答案1
我搞定了。basic-ingress4 服务在其 yaml 中有一个名为“spec->tls->secretName”的条目。运行该命令kubectl get secrets
返回了一个具有此名称的密钥。kubectl describe secret/secretname
返回的确实是我想要更改密钥的主机的 tls 密钥。
因此,通过这样做
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /tmp/tls.key -out /tmp/tls.crt -subj "/CN=foo.bar.com"
其次是
kubectl create secret tls foo-secret --key /tmp/tls.key --cert /tmp/tls.crt
我创建了一个包含新证书的新密钥。将secretName
yaml 文件中的密钥更改为密钥的新名称,foo-secret
最终彻底更改了证书。
/E:如果想要使用谷歌管理的证书,删除“secretName”条目并将负载均衡器更改为谷歌管理的证书即可。