如何利用GoDaddy续签的SSL证书自动更新Kubernetes TLS Secret?
实现GoDaddy托管SSL证书同步更新Kubernetes TLS Secret的方案
可行方案:自定义脚本 + CronJob
由于Cert-Manager原生不支持GoDaddy,最直接的实现方式是通过定期调用GoDaddy API拉取最新证书,再同步到Kubernetes TLS Secret,具体步骤如下:
1. 准备GoDaddy API凭证
在GoDaddy开发者平台创建生产环境的API密钥(需开启对应域名的证书管理权限),然后将密钥存入Kubernetes Secret:
kubectl create secret generic godaddy-api-creds \ --from-literal=api-key=你的GoDaddy_API_KEY \ --from-literal=api-secret=你的GoDaddy_API_SECRET \ -n 目标命名空间
2. 编写证书同步脚本
创建Shell脚本(比如sync-godaddy-cert.sh),实现拉取证书、更新Secret的逻辑:
#!/bin/bash # 配置参数 DOMAIN="your-domain.com" TARGET_SECRET="wildcard-tls-secret" NAMESPACE="default" # 读取API凭证 API_KEY=$(kubectl get secret godaddy-api-creds -n $NAMESPACE -o jsonpath='{.data.api-key}' | base64 -d) API_SECRET=$(kubectl get secret godaddy-api-creds -n $NAMESPACE -o jsonpath='{.data.api-secret}' | base64 -d) # 调用GoDaddy API获取最新证书 CERT_DATA=$(curl -s -u "$API_KEY:$API_SECRET" \ "https://api.godaddy.com/v1/domains/$DOMAIN/certificates") # 提取最新证书和私钥(需根据API返回结构调整jq逻辑) LATEST_CERT=$(echo $CERT_DATA | jq -r '.[0].certificate') LATEST_KEY=$(echo $CERT_DATA | jq -r '.[0].privateKey') # 更新TLS Secret kubectl create secret tls $TARGET_SECRET \ --cert=<(echo "$LATEST_CERT") \ --key=<(echo "$LATEST_KEY") \ -n $NAMESPACE \ --dry-run=client -o yaml | kubectl apply -f -
将脚本存入ConfigMap:
kubectl create configmap godaddy-sync-script --from-file=sync-godaddy-cert.sh -n 目标命名空间
3. 用CronJob实现定期执行
创建CronJob资源,设置在证书到期前(比如提前10天)自动执行同步:
apiVersion: batch/v1 kind: CronJob metadata: name: godaddy-cert-sync namespace: default spec: schedule: "0 0 20 */11 *" # 每11个月的20号零点执行(适配12个月有效期的证书) jobTemplate: spec: template: spec: containers: - name: cert-sync image: alpine/k8s:1.28.0 # 内置curl、jq、kubectl的镜像 command: ["/bin/sh", "-c"] args: ["/scripts/sync-godaddy-cert.sh"] volumeMounts: - name: script-volume mountPath: /scripts volumes: - name: script-volume configMap: name: godaddy-sync-script defaultMode: 0755 restartPolicy: OnFailure
关键注意事项
- 给CronJob绑定的ServiceAccount配置
update secret的RBAC权限,避免权限不足 - 手动执行脚本测试API调用和Secret更新逻辑,确保格式正确
- 可在脚本末尾添加告警逻辑(比如调用企业微信/钉钉接口),同步失败时及时通知
社区现成实现情况
目前没有官方维护的集成工具,但GitHub上有不少开源的第三方脚本(搜索关键词godaddy kubernetes secret sync),大多基于上述思路实现,你可以直接参考或修改后使用。
内容的提问来源于stack exchange,提问作者Devel
相关产品推荐
相关产品推荐

