Назад | Перейти на главную страницу

AWS не удалось получить токен: AccessDenied: Пользователь: ARN не авторизован для выполнения: sts: AssumeRole на ресурсе: Роль: ARN

Я следую пошаговой инструкции по настройке и кубернету среды на AWS.

https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html#role-create

Уже были гочча .. и на них ответили частично.

  1. https://stackoverflow.com/questions/51135795/error-the-server-doesnt-have-resource-type-svc
  2. https://stackoverflow.com/questions/50791303/kubectl-error-you-must-be-logged-in-to-the-server-unauthorized-when-accessing

По какой-то причине люди смогли решить, используя эти рекомендации, доступные в этих ответах, а я все еще не мог их нарушить.

could not get token: AccessDenied: User: arn:aws:iam::sssssss:user/testprofileUser is not authorized to perform: sts:AssumeRole on resource: arn:aws:iam::sssssssss:role/eksServiceRole

Что я наделал:

  1. Я создал пользователя IAM с правами администратора (servicesDev).
  2. Создана роль IAM для службы EKS (amazonEKSServiceRole)

amazonEKSServiceRole имеет доверительные отношения, как показано ниже,

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "eks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

Это мой файл kubeconfig,

apiVersion: v1
clusters:
- cluster:
    server: https://7F30ANNSDSDMDCE1.ylq.us-east-1.eks.amazonaws.com
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURB...
  name: clouddev
contexts:
- context:
    cluster: clouddev
    user: aws
  name: aws
current-context: aws
kind: Config
preferences: {}
users:
- name: aws
  user:
    exec:
      apiVersion: client.authentication.k8s.io/v1alpha1
      command: aws-iam-authenticator
      args:
        - "token"
        - "-i"
        - "clouddev"
        - "-r"
        - "arn:aws:iam::xxxxx:role/amazonEKSServiceRole"
      env:
        - name: AWS_PROFILE
          value: "testprofile"

Чтобы было ясно, у меня есть testprofile правильно настроить в ~/.aws/credentials

Если кто-то может пролить свет, очень признателен.

Вам также необходимо настроить «доверительные отношения» для роли AWSServiceRoleForAmazonEKS, которая позволяет EKS принимать ее.

Внизу этой ссылки будет подробная информация о том, что делать:

Роль IAM сервиса Amazon EKS

Единственный способ заставить это работать - это создать кластер с помощью интерфейса командной строки:

aws eks create-cluster --name <cluster name> 
   --role-arn <EKS Service Role> 
   --resources-vpc-config subnetIds=<subnet ids>,securityGroupIds=<security group id>

Это предлагается во множестве ресурсов и руководств AWS; эта точная команда для запуска из этого ответа SO: https://stackoverflow.com/a/53002925/8749874

Моя ситуация заключалась в том, что я создал VPC с использованием пользователя root и создал остальную часть инфраструктуры (плоскость управления eks и рабочие узлы с использованием другого пользователя). Когда я воссоздал все, используя одного и того же пользователя (но не пользователя root), все стало гладко, и я смог создать кластер, используя документацию aws.