
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像为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)中有多个区域需要根据实际情况填写和替换,以确保测试通过。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务