kubectl config use-context удаление eks пользователя - PullRequest
0 голосов
/ 17 сентября 2018

Я сталкиваюсь с некоторым действительно странным поведением при попытке переключения контекстов с помощью 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: {}
    

Мои коллеги, похоже, не сталкиваются с этой проблемой.

Мысли

1 Ответ

0 голосов
/ 18 сентября 2018

Часть exec этой конфигурации была добавлена ​​в 1.10 (https://github.com/kubernetes/kubernetes/pull/59495)

. Если вы используете версию kubectl до этой версии, она не будет распознавать подключаемый модуль exec (что приводит к запросам учетных данных).), и если вы используете его для внесения изменений в kubeconfig, оно пропустит поле exec, когда сохранит изменения

...