Chr*_*row 4 azure kubernetes azure-container-registry
我正在尝试使用 helm 将 nginx 入口控制器安装到 Azure Kubernetes 服务集群中。我正在遵循此 Microsoft 指南。当我使用 helm 尝试安装入口控制器时失败,因为它需要从本地 Azure 容器注册表(我创建并链接到集群)中提取“kube-webhook-certgen”映像,但是 kubernetes pod最初在集群中安排的无法拉取映像,并在我使用时显示以下错误kubectl describe pod [pod_name]:
failed to resolve reference "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized]
Run Code Online (Sandbox Code Playgroud)
该指南描述了如何创建 Azure 容器注册表,并将其链接到 kubernetes 集群,我已经使用以下方法成功完成了此操作:
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
Run Code Online (Sandbox Code Playgroud)
然后,我将所需的第 3 方存储库成功导入到我的“本地”Azure 容器注册表中,如指南中所述。我使用以下命令检查了集群是否可以访问 Azure 容器注册表:
az aks check-acr --name MyAKSCluster --resource-group myResourceGroup --acr letsencryptdemoacr.azurecr.io
Run Code Online (Sandbox Code Playgroud)
我还使用 Azure 门户检查 Azure 容器注册表和存在问题的特定存储库的权限。表明集群和存储库都具有ACR_PULL权限)
nginx-ingress-ingress-nginx-admission-create当我运行 helm 脚本来创建入口控制器时,它在尝试创建在我创建的 ingress-basic 命名空间中命名的 kubernetes pod 时失败。当我使用时kubectl describe pod [pod_name_here],它显示以下错误,这会阻止继续创建入口控制器:
Failed to pull image "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen:v1.5.1@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": [rpc error: code = NotFound desc = failed to pull and unpack image "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": failed to resolve reference "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068: not found, rpc error: code = Unknown desc = failed to pull and unpack image "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": failed to resolve reference "letsencryptdemoacr.azurecr.io/jettech/kube-webhook-certgen@sha256:f3b6b39a6062328c095337b4cadcefd1612348fdd5190b1dcbcb9b9e90bd8068": failed to authorize: failed to fetch anonymous token: unexpected status: 401 Unauthorized]
Run Code Online (Sandbox Code Playgroud)
这是我在 Linux 终端中运行的 helm 脚本:
helm install nginx-ingress ingress-nginx/ingress-nginx --namespace ingress-basic --set controller.replicaCount=1 --set controller.nodeSelector."kubernetes\.io/os"=linux --set controller.image.registry=$ACR_URL --set controller.image.image=$CONTROLLER_IMAGE --set controller.image.tag=$CONTROLLER_TAG --set controller.image.digest="" --set controller.admissionWebhooks.patch.nodeSelector."kubernetes\.io/os"=linux --set controller.admissionWebhooks.patch.image.registry=$ACR_URL --set controller.admissionWebhooks.patch.image.image=$PATCH_IMAGE --set controller.admissionWebhooks.patch.image.tag=$PATCH_TAG --set defaultBackend.nodeSelector."kubernetes\.io/os"=linux --set defaultBackend.image.registry=$ACR_URL --set defaultBackend.image.image=$DEFAULTBACKEND_IMAGE --set defaultBackend.image.tag=$DEFAULTBACKEND_TAG --set controller.service.loadBalancerIP=$STATIC_IP --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"=$DNS_LABEL
Run Code Online (Sandbox Code Playgroud)
我正在使用以下相关环境变量:
$ACR_URL=letsencryptdemoacr.azurecr.io
$PATCH_IMAGE=jettech/kube-webhook-certgen
$PATCH_TAG=v1.5.1
Run Code Online (Sandbox Code Playgroud)
如何修复授权?
该问题似乎是由新的 ingress-nginx/ingress-nginx helm 图表版本引起的。我已使用版本 3.36.0 而不是最新版本 (4.0.1) 修复了该问题。
helm upgrade -i nginx-ingress ingress-nginx/ingress-nginx \
--version 3.36.0 \
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4757 次 |
| 最近记录: |