
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
这是一个Kubernetes Mutating Admission Webhook示例。该Webhook会将部署中的现有镜像定义替换为用户指定的前缀+原镜像,允许在无法访问常用镜像仓库(如dockerhub、quay、gcr等)的无网络环境中使用相同的manifest文件。Webhook采用Python语言,基于Flask框架开发。
原镜像定义:
example-image:1.0
替换后的镜像:
/my/cool/prefix/example-image:1.0
Kubernetes版本需1.9.0及以上,且启用admissionregistration.k8s.io/v1beta1 API。可通过以下命令验证:
$ kubectl api-versions | grep admissionregistration.k8s.io/v1beta1
预期结果:
admissionregistration.k8s.io/v1beta1
此外,MutatingAdmissionWebhook和ValidatingAdmissionWebhook准入控制器需添加到kube-apiserver的admission-control标志中,并按正确顺序排列。
$ cd ./docker/ $ docker-compose build
$ docker login $ docker tag imageswap-webhook:0.1 jmsearcy/imageswap-webhook:0.1 $ docker push jmsearcy/imageswap-webhook:0.1
创建签名证书/密钥对,并存储到Kubernetes Secret:
./deploy/webhook-ssl-cert-gen.sh \ --service imageswap-webhook-svc \ --secret imageswap-webhook-certs \ --namespace default
通过替换运行集群中的$CA_BUNDLE值,修补MutatingWebhookConfiguration:
cat ./deploy/imageswap-webhook-mwc.yaml | \ ./deploy/webhook-patch-ca-bundle.sh > \ ./deploy/imageswap-webhook-mwc-patched.yaml
注意:这些脚本来自https://github.com/morvencao/kube-mutating-webhook-tutorial%E3%80%82
通过Kubernetes ConfigMap部署脚本:
$ kubectl create cm imageswap-webhook-cm --from-file=script=./app/imageswap-webhook-deploy.py
部署资源:
$ kubectl apply -f ./deploy/imageswap-webhook-deploy.yaml $ kubectl apply -f ./deploy/imageswap-webhook-svc.yaml $ kubectl apply -f ./deploy/imageswap-webhook-mwc-patched.yaml
注意:修改imageswap-webhook-deploy.yaml清单中的IMAGE_PREFIX环境变量定义,可自定义镜像前缀的仓库/注册表。
$ kubectl create ns test1 $ kubectl label ns test1 k8s.twr.io/imageswap=enabled
$ kubectl apply -f ./testing/test-deploy.yaml -n test1
注意:你应在$ kubectl get deploy hello-world -n test1 -o yaml $ kubectl get pods -n test1 $ kubectl get pod <pod_name> -n test1 -o yaml
test-deploy.yaml清单中看到替换后的镜像定义,而非原始定义。$ docker run -p 5000:5000/tcp -it imageswapwebhook_app bash $ ./deny-env.py
$ kubectl get pods # 获取运行中的Pod名称 $ kubectl port-forward <pod_name> 5000:5000
$ curl -vX POST https://localhost:5000/ -d @test.json -H "Content-Type: application/json"
$ kubectl get pods # 获取运行中的Pod名称 $ kubectl logs <pod_name> -f
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务