"kubectl" не подключается к кластеру AWS EKS с моей локальной рабочей станции Windows

Я пытаюсь настроить кластер EKS AWS и хочу подключить этот кластер с моей локальной рабочей станции Windows. Не в состоянии соединить это. Вот шаги, которые я сделал;

  1. Создайте роль службы aws (консоль aws -> IAM -> Роли -> нажмите "Создать роль" -> выберите роль службы AWS "EKS" -> дайте имя роли "eks-role-1")
  2. Создайте другого пользователя в IAM с именем "eks" для программного доступа. это поможет мне подключить мой кластер EKS с моей локальной рабочей станции Windows. Политика, которую я добавил в нее, это "AmazonEKSClusterPolicy", "AmazonEKSWorkerNodePolicy", "AmazonEKSServicePolicy", "AmazonEKS_CNI_Policy".
  3. Следующий кластер EKS был создан с ролью АРН, который был создан на Шаге 1. Наконец EKS кластер был создан в консоли aws.
  4. На моей локальной рабочей станции Windows я скачал "kubectl.exe" и "aws-iam-authenticator.exe" и выполнил настройку "aws", используя accesskey и токен из шага № 2 для пользователя "eks". После настройки "~/.kube/config"; я побежал ниже команды и получаю ошибку, как это:

Command:kubectl.exe get svc

output:
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
could not get token: NoCredentialProviders: no valid providers in chain. Deprecated.
        For verbose messaging see aws.Config.CredentialsChainVerboseErrors
Unable to connect to the server: getting credentials: exec: exit status 1

Не уверен, что здесь неправильная настройка. Может кто-нибудь, пожалуйста, помогите? Я знаю некоторые места, где говорится, что вы должны использовать того же пользователя AWS для подключения кластера (EKS). Но как я могу получить accesskey и токен для aws assign-role (шаг № 2: eks-role-1)?

4 ответа

Для людей, попавших в это, может быть, вы предоставите экс с профилем.

EKS не добавляет профиль в kubeconfig.

Решение:

  1. экспорт учетных данных AWS
$ export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx
$ export AWS_SECRET_ACCESS_KEY=ssssssssss
  1. Если вы уже настроили учетные данные AWS. Попробуйте экспортировать AWS_PROFILE
$ export AWS_PROFILE=ppppp
  1. Аналогично 2, но вам нужно сделать только один раз. Отредактируйте свой kubeconfig
users:
- name: eks # This depends on your config.
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "general"
      env:
        - name: AWS_PROFILE
          value: "<YOUR_PROFILE_HERE>" #

Добавляем еще один вариант.

Вместо того, чтобы работать с aws-iam-Authenticator, вы можете изменить команду на aws и заменить args как показано ниже:

      - name: my-cluster
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      args: #<--- Change the args
      - --region
      - <YOUR_REGION>
      - eks
      - get-token
      - --cluster-name
      - my-cluster
      command: aws #<--- Change to command to aws
      env:
      - name: AWS_PROFILE
        value: <YOUR_PROFILE_HERE>

Я думаю, что получил ответ на этот вопрос; хочу записать здесь, чтобы люди извлекли выгоду из этого. Когда вы впервые создаете EKS кластер; проверьте, из чего вы создаете (проверьте настройки пользователя веб-консоли aws). Даже если вы создаете из сценария CFN, также назначьте другую роль для создания кластера. Вы должны получить доступ к CLI для пользователя, чтобы начать доступ к вашему кластеру из инструмента kubectl. Как только вы получите доступ в первый раз (этот пользователь будет по умолчанию иметь доступ администратора); вам может потребоваться добавить другого пользователя IAM в администратор кластера (или другую роль) с помощью congifMap; только тогда вы можете переключаться или использовать альтернативного пользователя IAM для доступа к кластеру из командной строки kubectl.

Убедитесь, что файл ~/.aws/credentials содержит ключ AWS и секретный ключ для учетной записи IAM, которая может управлять кластером.

В качестве альтернативы вы можете установить параметры AWS env:

export AWS_ACCESS_KEY_ID=xxxxxxxxxxxxx

export AWS_SECRET_ACCESS_KEY=ssssssssss

Другие вопросы по тегам