Невозможно объединить рабочие узлы, используя kubectl с обновленной конфигурационной картой aws-auth. - PullRequest
0 голосов
/ 07 июня 2019

Я настраиваю кластер AWS EKS, используя terraform из экземпляра EC2.В основном, настройка включает запуск конфигурации EC2 и автоматическое масштабирование для рабочих узлов.После создания кластера я могу настроить kubectl с помощью aws-iam-authenticator.Когда я сделал

kubectl get nodes 

Он вернул

Ресурсы не найдены

, поскольку рабочие узлы не были объединены.Поэтому я попытался обновить aws-auth-cm.yaml файл

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: <ARN of instance role (not instance profile)>
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes

с ролью IAM ARN рабочего узла.И сделал

kubectl apply -f aws-auth-cm.yaml

Возвращено

Создан ConfigMap / aws-auth

Затем я понял, что роль ARN, настроенная в aws-auth-cm.yaml, являетсянеправильный.Поэтому я обновил тот же файл с точной ролью рабочего узла ARN.

Но на этот раз я получил 403, когда я снова сделал kubectl apply -f aws-auth-cm.yaml.

Он вернул

Ошибка с сервера (запрещено): ошибка при получении текущей конфигурации: Resource: "/ v1, Resource = configmaps", GroupVersionKind: "/ v1, Kind = ConfigMap" Name: "aws-auth", Пространство имен: "kube-system"Object: & {map [" apiVersion ":" v1 "" data ": map [" mapRoles ":" - rolearn: arn: aws: iam :: XXXXXXXXX: роль / работник-роль-роли \ n имя пользователя: система:узел: {{EC2PrivateDNSName}} \ n группы: \ n - система: начальные загрузчики \ n - система: узлы \ n "]" kind ":" ConfigMap "" metadata ": map [" name ":" aws-auth ""пространство имен ":" kube-system "" annotations ": map [" kubectl.kubernetes.io/last-applied-configuration ":" "]]]} с сервера для:" / home / username / aws-auth-cm.yaml ": configmaps" aws-auth "запрещено: пользователь" system: node: ip-XXX-XX-XX-XX.ec2.internal "не может получить ресурс" configmaps "в группе API" "в пространстве имен" kube-system"

Я не могу перенастроитьConfigMap после этого шага.

Я получаю 403 для таких команд, как

kubectl apply
kubectl delete
kubectl edit 

для configmaps.Любая помощь?

1 Ответ

0 голосов
/ 19 июня 2019

Я нашел причину, по которой kubectl вернул 403 для этого сценария.

В соответствии с этим документ пользователю / роли, создавшему кластер, будут предоставлены system:masters разрешения в конфигурации RBAC кластера

Когда я попытался создатьConfigMap для aws-auth для объединения рабочих узлов, я дал ARN роли / пользователя, который создал кластер вместо ARN рабочих узлов.

И он обновил группу (system:masters) администратора с группами system:bootstrappers и system:nodes в RBAC, которые в основном заблокировали самого администратора.И это не подлежит восстановлению, так как администратор потерял привилегии от группы system:masters.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...