web-dev-qa-db-fra.com

Comment obtenir kubectl pour se connecter à un cluster AWS EKS?

À partir d'un ~ compte AWS vide, j'essaie de suivre https://docs.aws.Amazon.com/eks/latest/userguide/getting-started.html

Cela signifie donc que j'ai créé une pile VPS, puis installé aws-iam-authentifier, awscli et kubectl, puis créé un utilisateur IAM avec accès programmatique et AmazonEKSAdminPolicy directement attaché.

J'ai ensuite utilisé le site Web pour créer mon cluster EKS et j'ai utilisé aws configure pour définir la clé d'accès et le secret de mon utilisateur IAM.

aws eks update-kubeconfig --name wr-eks-cluster a bien fonctionné, mais:

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

J'ai quand même continué, créant ma pile de nœuds de travail, et maintenant je suis dans une impasse avec:

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> semble bien fonctionner.

La chose qui me semble manquer, c'est que lorsque vous créez le cluster, vous spécifiez un rôle IAM, mais lorsque vous créez l'utilisateur (selon le guide), vous attachez une stratégie. Comment mon utilisateur est-il censé avoir accès à ce cluster?

Ou finalement, comment procéder et accéder à mon cluster à l'aide de kubectl?

7
sbs
  1. Comme mentionné dans les documents , le cluster EKS créé par l'utilisateur AWS IAM reçoit automatiquement system:master autorisations, et c'est suffisant pour que kubectl fonctionne. Vous devez utiliser ces informations d'identification utilisateur (AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY) pour accéder au cluster. Dans le cas où vous n'avez pas créé d'utilisateur IAM spécifique pour créer un cluster, vous l'avez probablement créé à l'aide du compte AWS racine. Dans ce cas, vous pouvez utiliser les informations d'identification de l'utilisateur root ( Création de clés d'accès pour l'utilisateur root ).
  2. La magie principale est à l'intérieur aws-auth ConfigMap dans votre cluster - il contient des entités IAM -> mappage kubernetes ServiceAccount.

Je ne sais pas comment transmettre les informations d'identification pour le aws-iam-authenticator:

  • Si tu as ~/.aws/credentials avec aws_profile_of_eks_iam_creator alors vous pouvez essayer $ AWS_PROFILE=aws_profile_of_eks_iam_creator kubectl get all --all-namespaces
  • Vous pouvez également utiliser des variables d'environnement $ AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY AWS_DEFAULT_REGION=your-region-1 kubectl get all --all-namespaces

Les deux devraient fonctionner, car kubectl ... utilisera le ~/.kube/config cela contient aws-iam-authenticator token -i cluster_name commande. aws-iam-authenticator utilise des variables d'environnement ou ~/.aws/credentials pour vous donner un jeton.

En outre, cette réponse peut être utile pour comprendre la première création d'utilisateur EKS.

11
Ivan Kalita