在进行 K8 入口控制器的设置时,该设置已记录在案这里
我无法完成“创建入口控制器”的步骤在 Helm 命令步骤期间将命令置于调试模式,我看到其中一个步骤超时:
预安装失败:等待条件超时
在查看 K8 POD 日志后,我发现 K8 系统由于身份验证错误而无法连接到注册表。出于安全原因,以下输出已被修改,但显示错误
Failed to pull image "myregistry.azurecr.io/jettech/kube-webhook-certgen:v1.5.1@sha256:...90bd8068": [rpc error: code = NotFound desc = failed to pull and unpack image "....azurecr.io/jettech/kube-webhook-certgen@sha256:....9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...190b1dcbcb9b9e90bd8068": ....azurecr.io/jettech/kube-webhook-certgen@sha256:...9b9e90bd8068: not found, rpc error: code = Unknown desc = failed to pull and unpack image "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...dcbcb9b9e90bd8068": failed to resolve reference "myregistry.azurecr.io/jettech/kube-webhook-certgen@sha256:...b9b9e90bd8068": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized]
我已经根据“az acr import”命令验证了镜像位于容器注册表中,并且如果我使用“kubectl”进行标准 K8 部署,则 k8 能够连接到 acr。我还使用以下命令验证了集群和注册表之间的连接,它按预期工作:
az aks check-acr -n <cluster> -g <rg> --acr <acr>
仅在使用 helm 命令时才会发生此失败。
编辑
经过进一步研究,我发现了以下文章
看来摘要有问题。我在 helm 命令中添加/替换了以下内容:
--set controller.image.digest="sha256:e9fb216ace49dfa4a5983b183067e97496e7a8b307d2093f4278cd550c303899" \
--set controller.admissionWebhooks.patch.image.digest="sha256:950833e19ade18cd389d647efb88992a7cc077abedef343fa59e012d376d79b7" \
但是,运行修改后的 helm 命令时,POD 处于错误状态,并出现以下错误
unknown flag: --controller-class
我尝试设置环境变量 CONTROLLER_TAG=v1.0.0,如文章中所述,但这没有帮助
另一个解决方案是在命令中设置版本号:3.36.0。此方法可行,但需要降级版本
答案1
在联系了 MS 文档网站反馈后,他们为我提供了针对该文档的以下修复
https://github.com/MicrosoftDocs/azure-docs/issues/80321
回滚并重新应用修改后的更改后,命令成功了。关键是使用 helm uninstall 命令删除 pod:
helm uninstall nginx-ingress --namespace ingress-basic
然后从 ACR 中删除 ACR 存储库:
jettech/kube-webhook-certgen
defaultbackend-amd64
jetstack/cert-manager-controller
jetstack/cert-manager-webhook
jetstack/cert-manager-cainjector
使用“az acr import”命令创建,然后重新运行修改后的命令。
希望有人觉得这个有价值
答案2
暂时禁用 ACR 容器注册表中的身份验证:
az acr update --name my-acr-registry-name --anonymous-pull-enabled true
重新执行 Helm Chart,并在创建控制器时重新启用注册表中的身份验证
az acr update --name my-acr-registry-name --anonymous-pull-enabled false
无需更改版本或其他。这将节省您的时间。对于那些认为将 acr 容器注册表公开 9 秒(入口控制器执行的时间)将引发核战争的人,您可以在 acr 的网络部分中仅将已知网络列入白名单,以防止不良访问