Только пользователь-создатель может управлять кластером AWS kubernetes (EKS) из kubectl? - PullRequest
2 голосов
/ 23 марта 2019

У нас есть два кластера с именем:

  1. MyCluster (создан мной)
  2. OtherCluster (не создан мной)

Где "меня""- это мой собственный пользователь AWS IAM.

Я могу управлять созданным мною кластером, используя kubectl:

>>> aws eks update-kubeconfig --name MyCluster –profile MyUser
>>> kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   59d

Но я не могу управлять кластером« OtherCluster »(это не былосозданный мной):

>>> aws eks update-kubeconfig --name OtherCluster --profile MyUser
>>> kubectl get svc
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
error: the server doesn't have a resource type "svc"

Прочитав отзывы некоторых людей, столкнувшихся с такой же проблемой в этой проблеме github , я попытался сделать это в контексте пользователя, который первоначально создал«OtherCluster».

Я выполнил это, отредактировав «~ / .kube / config», добавив значение «AWS_PROFILE» в «users.user.env».Профиль представляет пользователя, который создал кластер.

~ / .kube / config:

…
users
- name: OtherCluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - OtherCluster
      command: aws-iam-authenticator
      env:
      - name: AWS_PROFILE
        value: OTHER_USER_PROFILE
…

Это сработало:

# ~/.kube/config is currently pointing to OtherCluster

>>> kubectl get svc 
NAME         TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   172.20.0.1   <none>        443/TCP   1d

Это явно не идеально длямне выдавать себя за другого человека, когда я управляю кластером.Я бы предпочел предоставить своему пользователю доступ для управления кластером через kubectl.Могу ли я предоставить разрешение на управление кластером другому пользователю, кроме первоначального создателя?Это кажется чрезмерно ограничительным

Ответы [ 2 ]

2 голосов
/ 23 марта 2019

При создании кластера Amazon EKS объект IAM (пользователь или роль), который создает кластер, добавляется в таблицу авторизации RBAC Kubernetes в качестве администратора. Изначально , только тот пользователь IAM может делать вызовы на сервер API Kubernetes, используя kubectl.

Чтобы предоставить другим пользователям AWS возможность взаимодействовать с вашим кластером, вы должны отредактировать aws-auth ConfigMap в Kubernetes, добавив новую запись mapUsers для вашей ConfigMap. Этот документ EKS охватывает весь процесс.

Чтобы добавить пользователя IAM: добавьте данные пользователя в раздел mapUsers ConfigMap, под данные. Добавьте этот раздел, если это еще не сделано существует в файле. Каждая запись поддерживает следующие параметры:

  • userarn: ARN добавляемого пользователя IAM.
  • username: имя пользователя в Kubernetes для сопоставления с пользователем IAM. По умолчанию имя пользователя - это ARN пользователя IAM.
  • groups: список групп в Kubernetes, в которые отображается пользователь. Для получения дополнительной информации см. Роли по умолчанию и Привязки ролей
    в документации Kubernetes.

Пример:

apiVersion: v1
data:
  mapRoles: |
    - rolearn: arn:aws:iam::555555555555:role/devel-worker-nodes-NodeInstanceRole-74RF4UBDUKL6
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
  mapUsers: |
    - userarn: arn:aws:iam::555555555555:user/my-new-admin-user
      username: my-new-admin-user
      groups:
        - system:masters
1 голос
/ 03 апреля 2019

Переконфигурирование kubectl для EKS с использованием профиля авторизации AWS для нового пользователя, похоже, помогло.

aws eks update-kubeconfig --name ${CLUSTER_NAME} --profile ${OTHER_USER}

Где ${OTHER_USER} - новый пользователь, которому я пытаюсь предоставить доступкластер EKS, и кто не является пользователем, который первоначально создал кластер.

Я не могу объяснить, почему этот шаг работал для меня сейчас, но не работал для меня раньше, когда я опубликовал этот вопрос.Но, надеюсь, это поможет кому-то еще.

...