На моем компьютере установлена переменная среды AZURE_CLIENT_ID
. Я заметил, что недавно, когда я запускаю свои команды kubectl
, он требует аутентификации и пытается сделать это со значением из этой переменной среды.
Я хочу, чтобы он игнорировал это значение, как я думаю, всегда делал раньше, поэтому это что-то новое с последней версией kubectl
или версией, установленной через az
.
Кластер развернут в AKS.
Есть несколько способов избежать использования существующей переменной среды AZURE_CLIENT_ID
, чтобы заставить kubectl
работать с аутентификацией входа другого пользователя.
Подход-1:
Вы можете сбросить переменную среды, если она не требуется в течение некоторого периода времени. Используйте команду ниже AZ cli
, чтобы отключить.
unset AZURE_CLIENT_ID
Подход-2:
Как подробно описано в документации kubectl github, вы можете установить необходимые учетные данные пользователя и войти в систему с помощью kubectl
с помощью приведенной ниже команды AZ cli
, как показано.
Я предоставил --auth-provider-arg
вместо client_id
пустую строку, чтобы игнорировать существующую переменную среды. Вы можете изменить значение в соответствии с требованием.
Здесь я попытался установить учетные данные для пользователя с именем Jahnavi
с пустым значением client-id
, и пользователь был успешно установлен следующим образом:
kubectl config set-credentials <jahnavi> --auth-provider=azure --auth-provider-arg=environment=AzurePublicCloud
--auth-provider-arg=CLIENT_ID= --auth-provider-arg=tenant-id = "tenantID"
Подход-3:
Если проблема не устранена, вы можете напрямую просмотреть файл конфигурации и отредактировать учетные данные пользователя, выполнив команду kubectl config view
.
Он отобразит содержимое файла конфигурации Kubernetes, а также путь к файлу. После этого вы можете обновить файл, чтобы соответствующим образом удалить учетные данные Azure.
kubectl config view
Вы также можете обратиться к этому документу для получения дополнительной информации.
Для меня это работало @IlyaChernomordik без каких-либо проблем. Поэтому, если вы хотите игнорировать переменную env, вы можете просто отключить ее, как я упоминал в первом подходе. Это работает?
Да, это прекрасно работает, спасибо, просто неудобно каждый раз это делать...
Можете ли вы проверить и обновить версию kubectl и связанные с ней, потому что в некоторых версиях API эта комбинация устарела. Проверьте с помощью команды kubectl version
и при необходимости обновите ее. @ИльяЧерномордик
У меня клиент 1.26.3 и сервер 1.24.3. Есть 2 основных различия в версиях, но я думаю, это не должно быть проблемой, так как именно kubelogin читает эти env. переменные?
Спасибо за помощь, я пока использую «unset», и это работает. К сожалению, с другими подходами не справился
Я пытался использовать подход 2 (поскольку я хочу, чтобы он всегда игнорировал переменную env), но вот что я получаю: ошибка: authProvider не может быть предоставлен в сочетании с подключаемым модулем exec для clusterUser_<resource_group>_<cluster_name >. Поэтому я пытаюсь добиться того, чтобы kubectl всегда работал так, как будто AZURE_CLIENT_ID не существует, даже если он существует. Вот как это работало раньше, и я предполагаю, что были некоторые изменения