Ошибка kubectl Вы должны войти на сервер (не авторизовано) - кластер EKS - PullRequest
0 голосов
/ 13 марта 2020

Я новичок в EKS и Kubernetes -

Вот что случилось

  1. Кластер EKS был создан с указанием c роли IAM
  2. Когда пытаясь подключиться к кластеру с помощью команд kubectl, которые он выдавал

error You must be logged in to the server (Unauthorized)

Я выполнил шаги, описанные здесь

https://aws.amazon.com/premiumsupport/knowledge-center/amazon-eks-cluster-access/

  1. Принято на роль, которая создала кластер EKS

  2. Экспортировал их в новый профиль dev в aws учетные данные

  3. Ран AWS_PROFILE=dev kubectl get nodes. Он был в состоянии перечислить все мои узлы.

Примечание: я уже запустил aws eks --region <region> update-kubeconfig --name <cluster-name>

Теперь я попытался добавить роль / пользователя SAML, который пытается получить доступ к кластеру EKS, применив конфигурационную карту, как показано ниже, и запустил AWS_PROFILE=dev kubectl apply -f aws-auth.yaml

aws-auth.yaml, равный

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes

обратите внимание, что роль arn является пользователем SAML, которому присвоена роль aws_dev, которая пытается подключиться к кластеру.

После применения ответ был configmap/aws-auth configured

I теперь пытался выполнить kubectl get nodes без AWS_PROFILE=dev, и он снова завершился с ошибкой error You must be logged in to the server (Unauthorized).

Я также выполнил AWS_PROFILE=dev kubectl get nodes, который раньше работал, но сейчас не удается.

Я предполагаю aws -auth информация испорчена и есть способ отменить kubectl apply, что было сделано выше.

любая команда kubectl теперь терпит неудачу. Что может происходить? Как я могу исправить это?

Ответы [ 2 ]

0 голосов
/ 13 марта 2020

Создайте заново кластер и, когда вы перейдете к шагу 6 в ссылке, добавьте в свой aws -auth.yaml вторую роль (или пользователя), например:

  1. Получите ConfigMap с помощью kubectl get cm -n kube-system aws-auth -o yaml
  2. Добавьте свою роль в качестве второго элемента в ConfigMap (не изменяйте первый):
apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: arn:aws:sts::******:assumed-role/aws_dev/abc@def.com
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes
    ### Add only this (assuming you're using a role)
    - rolearn: <ARN of your IAM role>
      username: <any name>
      groups:
        - system:masters
Выполнить AWS_PROFILE=dev kubectl apply -f aws-auth.yaml Затем получить kubeconfig с вашими учетными данными временной роли IAM с помощью aws eks --region <region> update-kubeconfig --name <cluster-name>

Возможно, вы изменили конфигурацию aws -auth. Обычно при создании кластера пользователь (или роль), создавший этот кластер, имеет права администратора, при переключении пользователей необходимо добавить их в конфигурацию (это делается как пользователь, создавший кластер).

0 голосов
/ 13 марта 2020

Вы получаете ошибку авторизации, когда ваша сущность AWS Identity and Access Management (IAM) не авторизована конфигурацией управления доступом на основе ролей (RBA C) кластера Amazon EKS. Это происходит, когда кластер Amazon EKS создается пользователем или ролью IAM, отличной от той, которая используется aws -iam-authenticator.

Проверьте разрешение здесь .

kubectl error Вы должны войти на сервер (не авторизовано) при доступе к кластеру EKS

...