ОШИБКА KUBECTL: сервер запросил у клиента учетные данные - PullRequest
0 голосов
/ 02 ноября 2018

В настоящее время существует два eks кластера prod и dev. Я пытаюсь получить доступ к кластеру dev, который существует в другой учетной записи aws, и выдает ошибку «Вы должны войти на сервер»

Когда я пытаюсь получить версию kubectl, я получаю сообщение об ошибке. Пожалуйста, укажите мою ошибку. Это происходит только с кластером dev. Пожалуйста, дайте мне знать, как исправить ошибки, если я где-то ошибаюсь.

AWS_PROFILE=eks_admin_dev kubectl version
Client Version: version.Info{Major:"1", Minor:"10", GitVersion:"v1.10.3", GitCommit:"2bba0127d85d5a46ab4b778548be28623b32d0b0", GitTreeState:"clean", BuildDate:"2018-07-26T20:40:11Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
error: You must be logged in to the server (the server has asked for the client to provide credentials)

AWS_PROFILE=eks_admin_dev kubectl get pods
error: You must be logged in to the server (Unauthorized)

Я создал ключ доступа и секретный ключ доступа для моего пользователя dev (это учетные данные администратора). Я создал два профиля dev и eks_admin_dev. Я понимаю, что часть source_profile говорит ему использовать профиль dev для выполнения команды sts: AssumeRole для роли eks-admin.

$ aws --version
aws-cli/1.16.45 Python/2.7.12 Linux/4.4.0-1066-aws botocore/1.12.35

$ kubectl config current-context
dev

$ cat ~/.aws/config
[default]   ---> prod account 
region = us-east-1
[profile eks_admin_dev] ---> dev account
role_arn = arn:aws:iam::xxxxxxxx:role/eks-admin
source_profile = dev
region = us-east
[profile dev]  ---> dev account
region = us-east-1

мои учетные данные:

$ cat ~/.aws/credentials
[old]
aws_secret_access_key = xxxxxxxxxxxxxx
aws_access_key_id = xxxxxxxxx
[default]
aws_access_key_id = xxxxxx
aws_secret_access_key = xxx
[dev]
aws_secret_access_key = xxx
aws_access_key_id = xxx
[eks_admin_dev]
aws_access_key_id = xx
aws_secret_access_key = xx

cat ~/.kube/kubeconfig, я попытался указать роль здесь, та же ошибка.

users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args:
      - token
      - -i
      - dev-0
      command: aws-iam-authenticator
      env:
      - name: AWS_PROFILE
        value: eks_admin_dev

1 Ответ

0 голосов
/ 02 ноября 2018

Это работает для меня, используя как AWS_PROFILE env в командной строке, так и настройку env в файле ~/.kube/config.

Единственное, что я могу предположить, это то, что у вас уже есть учетные данные AWS, предопределенные для учетной записи prod в bash env.

$ env | grep AWS
AWS_SECRET_ACCESS_KEY=xxxxxxxx
AWS_ACCESS_KEY_ID=xxxxxxxxx

Если это так, вы можете сбросить их или удалить из любого файла инициализации, который вы можете использовать в своей оболочке.

$ unset AWS_SECRET_ACCESS_KEY
$ unset AWS_ACCESS_KEY_ID
...