
该镜像为cert-manager提供GoDaddy DNS01挑战的webhook实现,允许通过GoDaddy DNS API自动完成ACME协议(如Let's Encrypt)的域名验证,实现Kubernetes环境中SSL证书的自动签发、续期与管理。
*.example.com)通过Helm安装webhook组件:
bashhelm install godaddy-webhook \ --set groupName=acme.mycompany.com \ # 自定义webhook组名 --set image.repository=fred78290/cert-manager-godaddy \ # 镜像仓库 --set image.tag=v1.18.14 \ # 镜像标签 --set image.pullPolicy=Always \ # 镜像拉取策略 --namespace cert-manager ./deploy/godaddy-webhook # 安装命名空间
1. 创建GoDaddy API密钥Secret
首先创建存储GoDaddy API密钥的Secret(值需Base64编码):
yamlapiVersion: v1 kind: Secret metadata: name: godaddy-api-key-prod # Secret名称 namespace: cert-manager # 与cert-manager同命名空间 type: Opaque data: key: <godaddy api key base64 encoded> # GoDaddy API Key (Base64编码) secret: <godaddy api secret base64 encoded> # GoDaddy API Secret (Base64编码)
2. 创建ClusterIssuer
配置ACME签发者,使用GoDaddy webhook作为DNS01验证器:
yamlapiVersion: cert-manager.io/v1 kind: ClusterIssuer metadata: name: letsencrypt-prod # Issuer名称 spec: acme: server: https://acme-v02.api.letsencrypt.org/directory # Let's Encrypt生产环境 email: <your email> # 证书通知邮箱 privateKeySecretRef: name: letsencrypt-prod-account-key # 存储ACME账户私钥的Secret solvers: - selector: dnsNames: - '*.example.com' # 匹配的域名(支持通配符) dns01: webhook: config: apiKeySecretRef: name: godaddy-api-key-prod # 引用前面创建的API密钥Secret key: key # Secret中存储API Key的键 secret: secret # Secret中存储API Secret的键 production: true # 是否使用GoDaddy生产API(true为生产,false为测试) ttl: 600 # DNS记录TTL(秒) groupName: acme.mycompany.com # 与Helm安装时的groupName一致 solverName: godaddy # solver名称,固定为godaddy
创建Certificate资源申请证书:
yamlapiVersion: cert-manager.io/v1 kind: Certificate metadata: name: wildcard-example-com # 证书资源名称 spec: secretName: wildcard-example-com-tls # 存储证书的Secret名称 renewBefore: 240h # 证书到期前10天开始续期 dnsNames: - '*.example.com' # 要签发证书的域名 issuerRef: name: letsencrypt-prod # 引用前面创建的ClusterIssuer kind: ClusterIssuer
在Ingress中引用生成的证书:
yamlapiVersion: extensions/v1beta1 kind: Ingress metadata: name: example-ingress # Ingress名称 namespace: default # 应用所在命名空间 annotations: certmanager.k8s.io/cluster-issuer: "letsencrypt-prod" # 引用ClusterIssuer spec: tls: - hosts: - '*.example.com' # 与证书域名匹配 secretName: wildcard-example-com-tls # 引用证书Secret rules: - host: demo.example.com # 具体域名 http: paths: - path: / backend: serviceName: backend-service # 后端服务名称 servicePort: 80 # 后端服务端口
所有DNS提供商必须运行DNS01提供商一致性测试套件,否则在与cert-manager一起使用时可能出现不可预测的行为。创建DNS01 webhook时,配置并运行测试套件至关重要。
准备
bash$ scripts/fetch-test-binaries.sh # 获取测试二进制文件
运行测试
bash$ TEST_ZONE_NAME=example.com go test . # 替换example.com为测试域名
注意:示例测试文件(main_test.go)中有多个区域需要根据实际情况填写和替换,以确保测试通过。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务