Назад | Перейти на главную страницу

Невозможно присоединиться к рабочим узлам с помощью kubectl с обновленной конфигурационной картой aws-auth

Я настраиваю кластер 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" Имя: "aws-auth", Пространство имен: "kube-system" Объект: & {map ["apiVersion": "v1" "data": map ["mapRoles": "- rolearn: arn: aws: iam :: XXXXXXXXX: role / worker-node-role \ n имя пользователя: system: node : {{EC2PrivateDNSName}} \ n groups: \ n - system: bootstrappers \ n - system: nodes \ 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 "запрещено: User" system: node: ip-XXX-XX-XX-XX.ec2.internal "не может получить ресурсы" configmaps "в группе API" "в пространстве имен" kube-system "

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

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

kubectl apply
kubectl delete
kubectl edit 

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

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

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

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

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