Я сталкиваюсь с некоторым действительно странным поведением при попытке переключения контекстов с помощью kubectl
.
Мой конфигурационный файл объявляет два контекста; одна указывает на внутренний кластер, а другая - на кластер Amazon EKS.
apiVersion: v1
kind: Config
clusters:
- cluster:
certificate-authority-data: <..>
server: <..>
name: in-house
- cluster:
certificate-authority-data: <..>
server: <..>
name: eks
contexts:
- context:
cluster: in-house
user: divesh-in-house
name: in-house-context
- context:
cluster: eks
user: divesh-eks
name: eks-context
current-context: in-house-context
preferences: {}
users:
- name: divesh-eks
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- "token"
- "-i"
- "eks"
env: null
- name: divesh-in-house
user:
client-certificate-data: <..>
client-key-data: <..>
Я также использую aws-iam-authenticator
для аутентификации в кластере EKS.
Моя проблема в том, что, пока я работаю с внутренним кластером, все работает нормально. Но когда я выполняю kubectl config use-context eks-context
, я наблюдаю следующее поведение.
- Любая операция, которую я пытаюсь выполнить с кластером (скажем,
kubectl get pods -n production
), показывает приглашение Please enter Username:
. Я предположил, что aws-iam-authenticator
должен был управлять аутентификацией для меня. Я могу подтвердить, что запуск аутентификатора вручную (aws-iam-authenticator token -i eks
) работает нормально для меня.
Выполнение kubectl config view
исключает пользователя divesh-eks
, поэтому вывод выглядит как
users:
- name: divesh-eks
user: {}
Переключение обратно на внутренний кластер с помощью xecuting kubectl config use-context in-house-context
изменяет мой файл конфигурации и удаляет divesh-eks-user
, поэтому файл конфигурации теперь содержит
users:
- name: divesh-eks
user: {}
Мои коллеги, похоже, не сталкиваются с этой проблемой.
Мысли