При настройке контроллера входа K8, которая задокументированаздесь
Я не могу пройти этап «Создание Ingress-контроллера». Во время выполнения команды 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", и что если я выполняю стандартное развертывание K8 с помощью "kubectl", 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
Я пробовал установить переменную env CONTROLLER_TAG=v1.0.0, как описано в статье, но это не помогает.
Другое решение — установить номер версии: 3.36.0 в команде. Это успешно, но требует пониженной версии
решение1
После обращения к службе обратной связи сайта документов MS мне предоставили следующее исправление для этого документа
https://github.com/MicrosoftDocs/azure-docs/issues/80321
После отката и повторного применения измененных изменений команда была успешной. Ключ был в удалении pod с помощью команды helm uninstall:
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 секунд (время выполнения контроллера Ingress) приведет к ядерной войне, вы можете добавить в белый список только известные сети в сетевом разделе вашего acr, чтобы предотвратить нежелательный доступ.