Как вы получаете kubectl для входа в кластер AWS EKS? - PullRequest
0 голосов
/ 12 ноября 2018

Начиная с пустой учетной записи AWS, я пытаюсь следовать https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html

Так что это означало, что я создал стек VPS, затем установил aws-iam-authenticator, awscli и kubectl, затемсоздал пользователя IAM с программным доступом и напрямую подключен AmazonEKSAdminPolicy.

Затем я использовал веб-сайт для создания кластера EKS и aws configure для установки ключа доступа и секрета моего пользователя IAM.

aws eks update-kubeconfig --name wr-eks-cluster работал нормально, но:

kubectl get svc
error: the server doesn't have a resource type "svc"

Я все равно продолжил, создав свой стек рабочих узлов, и теперь я зашел в тупик с:

kubectl apply -f aws-auth-cm.yaml
error: You must be logged in to the server (the server has asked for the client to provide credentials)

aws-iam-authenticator token -i <my cluster name>, кажется, работает нормально.

Мне кажется, что мне не хватает того, что при создании кластера вы определяете роль IAM, но при создании пользователя (согласно руководству) вы присоединяете политику.Как мой пользователь должен иметь доступ к этому кластеру?

Или, в конечном итоге, как мне продолжить и получить доступ к своему кластеру с помощью kubectl?

1 Ответ

0 голосов
/ 12 ноября 2018
  1. Как уже упоминалось в документах , созданный пользователем AWS IAM кластер EKS автоматически получает разрешения system:master, и этого достаточно для работы kubectl.Вам нужно использовать эти учетные данные пользователя (AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY) для доступа к кластеру.Если вы не создали конкретного пользователя IAM для создания кластера, то вы, вероятно, создали его, используя учетную запись root AWS.В этом случае вы можете использовать учетные данные пользователя root ( Создание ключей доступа для пользователя root ).
  2. Основная магия находится внутри aws-auth ConfigMap в вашем кластере - он содержит сущности IAM -> kubernetes ServiceAccount mapping.

Я не уверен, как вы передаете учетные данные для aws-iam-authenticator:

  • Если у вас ~/.aws/credentials с aws_profile_of_eks_iam_creatorтогда вы можете попробовать $ AWS_PROFILE=aws_profile_of_eks_iam_creator kubectl get all --all-namespaces
  • Кроме того, вы можете использовать переменные окружения $ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY AWS_DEFAULT_REGION=your-region-1 kubectl get all --all-namespaces

Они оба должны работать, потому что kubectl ... будет использовать сгенерированный ~/.kube/config, который содержитaws-iam-authenticator token -i cluster_name команда.aws-iam-authenticator использует переменные окружения или ~/.aws/credentials, чтобы дать вам токен.

Кроме того, этот ответ может быть полезен для понимания первого создания пользователя EKS.

...