
bcgovimages/certbot注意:此仓库已弃用,不再维护。镜像现在发布于GitHub Container Registry:<[***]>
 |
CERTBOT_DEPLOY_DIR | /etc/letsencrypt/renewal-hooks/deploy | Certbot部署目录 |
CERTBOT_LOGS_DIR | /var/log/letsencrypt | Certbot日志目录 |
CERTBOT_WORK_DIR | /var/lib/letsencrypt | Certbot工作目录 |
CERTBOT_DEBUG | false | 启用Certbot调试日志 |
CERTBOT_DELETE_ACME_ROUTES | true | 完成后自动清理临时ACME挑战路由 |
CERTBOT_DRY_RUN | false | 执行模拟Certbot运行以检查CSR可签名性 |
CERTBOT_EMAIL | 注册到证书颁发机构的联系*** | |
CERTBOT_RSA_KEY_SIZE | 2048 | RSA密钥对生成的密钥长度 |
CERTBOT_STAGING | false | 使用自签名证书续订。使用Entrust时必须设为false |
CERTBOT_SUBSET | true | 如果至少一个域成功,允许Certbot通过ACME挑战 |
以下提供在OpenShift中快速设置并运行Certbot作为cronjob的方法。
指向OpenShift上的相应项目/命名空间
shexport NAMESPACE=<YOURNAMESPACE> oc project $NAMESPACE
确保要让Certbot管理的路由已标注标签certbot-managed=true。可使用以下命令列出符合条件的路由:
shoc get route -n $NAMESPACE -l certbot-managed=true -o=jsonpath='{range .items[*]}{.metadata.name}{"\n"}{end}'
通过处理certbot.dc.yaml在项目/命名空间中安装Certbot,以创建CronJob及支持对象(ServiceAccount、RoleBinding、PVC等)。
此模板接受以下参数,大致对应上述环境变量(通过oc process命令的-p参数添加):
| 参数 | 默认值 | 描述 |
|---|---|---|
CERTBOT_DEBUG | false | 以调试模式运行Certbot |
CERTBOT_DELETE_ACME_ROUTES | true | 完成后自动清理临时ACME路由 |
CERTBOT_DRYRUN | false | 无执行运行 |
CERTBOT_EMAIL | CSR请求发送到的***。对于Entrust,建议使用产品负责人的*@gov.bc.ca*** | |
CERTBOT_SERVER | [***] | ACME Certbot端点。对于BC Gov SSL,参见Entrust |
CERTBOT_STAGING | false | 使用自签名证书续订。使用Entrust时必须设为false |
CERTBOT_SUBSET | true | 如果部分域有效,允许域验证通过 |
CRON_SCHEDULE | 0 0 * * 1,4 | Cronjob调度时间 |
CRON_SUSPEND | false | 暂停cronjob |
IMAGE_REGISTRY | docker.io | 镜像仓库 |
IMAGE_NAMESPACE | bcgovimages | 镜像命名空间 |
IMAGE_NAME | certbot | 镜像名称 |
IMAGE_TAG | latest | 镜像标签。建议固定到特定版本以确保稳定性 |
CERTBOT_STAGING=true,避免达到LetsEncrypt的服务限制。[***]以避免速率限制。CERTBOT_SUBSET选项设为true。否则,由于额外域名未被管理,证书续订将始终失败。如果需要严格的域验证,显式将CERTBOT_SUBSET设为false。shexport CERTBOT_EMAIL=<***> export CERTBOT_SERVER=<YOURCERTBOTSERVER> oc process -n $NAMESPACE -f "[***]" -p CERTBOT_EMAIL=$CERTBOT_EMAIL -p CERTBOT_SERVER=$CERTBOT_SERVER | oc apply -n $NAMESPACE -f -
注意:必须提供有效的***地址!
如需手动运行CronJob,可执行以下命令:
sh# 创建Job oc create job -n $NAMESPACE "certbot-manual-$(date +%s)" --from=cronjob/certbot # 删除之前创建的手动Job # 注意:当没有要删除的Job时,oc delete会报错 oc get job -n $NAMESPACE -o name | grep -F -e '-manual-' | xargs oc delete -n $NAMESPACE
要从命名空间中移除certbot,运行以下命令。所有构建相关的清单都有build=certbot标签,所有cronjob应用相关的清单都有app=certbot标签。
shexport NAMESPACE=<YOURNAMESPACE> # 删除certbot.bc.yaml生成的所有清单 oc delete all -n $NAMESPACE -l build=certbot # 删除certbot.dc.yaml生成的所有清单 oc delete cronjob,pvc,rolebinding,sa -n $NAMESPACE -l app=certbot
Entrust是当前BC Gov生产环境唯一批准的证书提供方。从Entrust而非LetsEncrypt请求证书需要额外步骤。
首先按照快速开始部分创建部署配置
修改部署配置中的CERTBOT_SERVER参数以使用Entrust
| 参数 | 默认值 | 描述 |
|---|---|---|
CERTBOT_SERVER | [***] | 其中xx-xxxx-xxxx是目录ID。此值可能因不同部门组织而异。请联系您的组织确定此值。 |
确保CERTBOT_STAGING设为false。Entrust服务器没有暂存模式
如果之前在同一路由上使用LetsEncrypt服务器运行过Certbot作业,需要删除现有PVC。这将移除旧的Let's Encrypt文件,下一步将创建新的PVC
应用部署配置并手动运行作业或通过cron触发器运行。作业日志将显示获取证书失败,路由保持未修改状态。这是正常现象,因为证书请求仍需部门批准
在CERTBOT_EMAIL***中,您会收到来自***的邮件,包含Tracking ID
此时需要联系部门中的相应小组创建iStore订单以批准证书请求。对于NRM团队,请让产品负责人创建服务台请求,包含以下信息:
iStore订单创建并批准后,您会收到来自***的另一封邮件,通知请求已批准
重新运行作业,Certbot应获取证书并自动安装
如果首次设置自动证书续订,备份路由中的"证书"、"私钥"和"CA证书"内容
列出cron作业
shexport NAMESPACE=<YOURNAMESPACE> oc get -n $NAMESPACE cronjob
描述cron作业
shexport NAMESPACE=<YOURNAMESPACE> oc describe -n $NAMESPACE cronjob/certbot
在OpenShift控制台查看cron作业:管理员视图 -> 工作负载 > 作业
在OpenShift控制台访问cron作业日志,在pod列表中检查最新的已完成/失败cronjob pod(管理员视图 -> 工作负载 > Pods)
如果日志中出现错误需要排查,可使用可选参数CERTBOT_DEBUG和CERTBOT_DELETE_ACME_ROUTES
shexport NAMESPACE=<YOURNAMESPACE> export CERTBOT_SERVER=<YOURCERTBOTSERVER> export CERTBOT_EMAIL=<***> oc process -n $NAMESPACE -f "[***]" -p CERTBOT_EMAIL=$EMAIL -p CERTBOT_SERVER=$CERTBOT_SERVER -p CERTBOT_STAGING=false -p CERTBOT_DEBUG=true -p CERTBOT_DELETE_ACME_ROUTES=false | oc apply -n $NAMESPACE -f -
注意:排查完成后,确保手动删除ACME路由和服务,并重新部署时不使用DEBUG和DELETE_ACME_ROUTES选项!
如果多次运行设置过程,确保删除所有重复的cron作业,只保留最新的。或使用以下命令删除所有certbot作业并重新开始:
shexport NAMESPACE=<YOURNAMESPACE> oc get job -n $NAMESPACE -o name | grep -F -e 'certbot' | xargs oc delete oc get cronjob -n $NAMESPACE -o name | grep -F -e 'certbot' | xargs oc delete
要暂停命名空间中的cronjob,可使用以下补丁命令:
shexport NAMESPACE=<YOURNAMESPACE> oc patch cronjob -n $NAMESPACE certbot -p '{"spec" : {"suspend" : true }}'
要恢复命名空间中的cronjob,可使用以下补丁命令:
shexport NAMESPACE=<YOURNAMESPACE> oc patch cronjob -n $NAMESPACE certbot -p '{"spec" : {"suspend" : false }}'
如果需要直接在集群上构建Certbot,可通过处理certbot.bc.yaml创建所需的构建对象。大多数情况下不再需要此操作。
此模板接受以下参数(通过oc process命令的-p参数添加):
| 参数 | 默认值 | 描述 |
|---|---|---|
GIT_REF | master | Git拉取请求或分支引用(如'pull/CHANGE_ID/head') |
GIT_URL | [***] | Git仓库URL |
shoc process -n $NAMESPACE -f "[***]" | oc apply -n $NAMESPACE -f -
textCopyright 2018 Province of British Columbia Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [***] Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.






探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务