Рейтинг:0

Невозможно предоставить дополнительным ролям AWS возможность взаимодействовать с моим кластером

флаг in

Я пытаюсь изучить AWS EKS и следую Начало работы с Amazon EKS — Консоль управления AWS и интерфейс командной строки AWS руководство шаг за шагом, кроме региона, который я изменил на us-east-1.

Я могу создать свой кластер - мой кластер но когда я пытаюсь настроить свой компьютер, который является экземпляром EC2 (T2.Micro), для связи с кластером, я получаю ошибка: Вы должны войти на сервер (неавторизованный) ошибка. При глубоком погружении я обнаружил, что роль EC2 (ARN - arn:aws:iam::123456789012:role/ec2-admin) должна взять на себя роль, которая создала кластер (ARN - arn:aws:iam::123456789012:role /myAmazonEKSClusterRole). Я также внес эти изменения в определение роли, изменив доверительные отношения в myAmazonEKSClusterRole получающий arn: aws: sts:: 123456789012: предполагаемая роль / myAmazonEKSClusterRole / тестовая сессия После этого я могу выполнить авс экс команды, но кубектл команды все еще ускользают от меня.

Для выполнения кубектл команды, я пытаюсь выполнить шаги в Управление пользователями или ролями IAM для вашего кластера. Однако они просят меня внести изменения в aws-auth-cm.yaml configMap, который я не могу сделать, потому что не могу выполнить применить кубектл команда.

Мой kubeconfig файл -

апиВерсия: v1
кластеры:
- кластер:
    данные центра сертификации: <cert>
  имя: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
контексты:
- контекст:
    кластер: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
    пользователь: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  имя: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
текущий контекст: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
вид: Конфигурация
предпочтения: {}
пользователи:
- имя: arn:aws:eks:us-east-1:123456789012:cluster/my-cluster
  пользователь:
    исполнитель:
      apiVersion: client.authentication.k8s.io/v1alpha1
      аргументы:
      - --область
      - нас-восток-1
      - экс
      - получить жетон
      - --имя-кластера
      - мой кластер
      команда: авс

Содержимое файла aws-auth-cm.yaml после внесения изменений

апиВерсия: v1
вид: карта конфигурации
метаданные:
  имя: aws-аутентификация
  пространство имен: kube-система
данные:
  картаРоли: |
          # - rolearn: <ARN роли экземпляра (не профиля экземпляра)>
          # имя пользователя: система: узел: {{EC2PrivateDNSName}}
          # группы:
          # - система: загрузчики
          # - система:узлы
    - роль: arn:aws:iam::375712918983:role/myAmazonEKSClusterRole
      имя пользователя: myAmazonEKSClusterRole
      группы:
        - система:мастера

Можете ли вы помочь с этим или дать несколько указателей?

Пожалуйста, дай мне знать, если возникнут какие-либо вопросы.

Рейтинг:1
флаг in

Вы захотите одну из 3 вещей; либо:

  • предположить arn:aws:iam::123456789012:role/myAmazonEKSClusterRole в терминальном сеансе таким образом, чтобы aws eks получить токен управляется кубектл будет вести себя правильно
  • создать профиль awscli, который предполагает arn:aws:iam::123456789012:role/myAmazonEKSClusterRole роль и обновить аргументы: включать [..., "--profile", "как бы вы ни называли этот профиль",...]
  • или возьмите на себя роль в терминале, запустите aws eks получить токен, и поместите эти статические учетные данные в свой kubeconfig, так как кажется, что вам не нужны учетные данные очень долго только для обновления этого ConfigMap

Для первого я имею в виду aws sts accept-role --role-arn arn:aws:iam::123456789012:role/myAmazonEKSClusterRole ... | тройник sts-creds.json а потом экспортировать AWS_ACCESS_KEY_ID= AWS_SECRET_KEY= AWS_SESSION_TOKEN= на основе содержимого этого json

Для второго я имею в виду:

$ cat >> $HOME/.aws/config <<FOO
[профиль моего кластера]
предполагаемая_роль = arn:aws:iam::123456789012:role/myAmazonEKSClusterRole
source_profile = что угодно
; или credential_source = что угодно
ФОО

согласно с эта документация

флаг in
Я попробовал первый шаг, но безрезультатно. Для третьего шага, где я должен подставить учетные данные в kubeconfig?
флаг in
`kubectl config set-credential tmp --token "$here" && kubectl config set-context --current --user tmp`
флаг in
Я внес эти изменения, а затем также изменил файл aws-auth-cm.yaml (прикреплен к вопросу). Выполнил `kubectl apply -f aws-auth-cm.yaml` и получил ошибку `ошибка: вы должны войти на сервер (сервер запросил у клиента предоставить учетные данные)`
флаг in
(a) вы **УВЕРЕННО** не хотите удалять это сопоставление профиля экземпляра, иначе узлы не присоединятся к вашему кластеру (b) и даже если вы это сделали, не используйте такой смешанный отступ, поскольку yaml очень разборчив. о пробелах (c) проверяли ли вы `kubectl get nodes` перед этим `apply`, чтобы убедиться, что ваш `aws eks get-token` работает должным образом?
флаг in
Я проверил `kubectl get svc` и `получить все`. Оба не работали. Поскольку я не занимался созданием узлов (поскольку этот шаг не был описан в учебнике по AWS до того места, где я его достиг), я закомментировал часть узлов в файле yaml.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.