Может ли kubectl работать с предполагаемой роли от AWS

Существует другая альтернатива использованию «N / A» или «N / K» или пустой строки - отдельная таблица.

Например. если мы можем или не можем знать номер телефона клиента:

CREATE TABLE Customer (ID int PRIMARY KEY, Name varchar(100) NOT NULL, Address varchar(200) NOT NULL);
CREATE TABLE CustomerPhone (ID int PRIMARY KEY, Phone varchar(20) NOT NULL, CONSTRAINT FK_CustomerPhone_Customer FOREIGN KEY (ID) REFERENCES Customer (ID));

Если мы не знаем номер телефона, мы просто не добавляем строку во вторую таблицу.

1
задан Raymond Ng 19 January 2019 в 21:49
поделиться

2 ответа

Похоже, это связано с полномочиями. Некоторые вещи, на которые вы можете взглянуть:

  • Переменные окружения полномочий не установлены в вашем CI?:

    AWS_ACCESS_KEY_ID
    AWS_SECRET_ACCESS_KEY
    
  • Ваш ~ / Файл .aws / credentials неправильно заполнен в вашем CI. Примерно так:

    [default]
    aws_access_key_id = xxxx
    aws_secret_access_key = xxxx
    
  • Как правило, переменные среды имеют приоритет, поэтому может быть, что у вас могут быть разные учетные данные и в этих переменных среды.

  • Это также может быть переменная AWS_PROFILE env или config AWS_PROFILE в ~/.kube/config

    users:
    - name: aws
      user:
        exec:
          apiVersion: client.authentication.k8s.io/v1alpha1
          command: aws-iam-authenticator
          args:
            - "token"
            - "-i"
            - "<cluster-name>"
            # - "-r"
            # - "<role-arn>"
          # env:
            # - name: AWS_PROFILE <== is this value set
            #   value: "<aws-profile>"
    
  • . Правильно ли настроен профиль в ~/.aws/config? ?

0
ответ дан Rico 19 January 2019 в 21:49
поделиться

Из Шаг 1. Создание кластера Amazon

При создании кластера Amazon EKS объект IAM (пользователь или роль), который создает кластер, добавляется в Таблица авторизации Kubernetes RBAC с правами администратора (с разрешениями master: master. Первоначально только тот пользователь IAM может выполнять вызовы на сервер API Kubernetes с помощью kubectl.

Как вы обнаружили, вы можете получить доступ только к кластер с тем же пользователем / ролью, который создал кластер EKS.

Существует способ добавить дополнительные роли в кластер после создания, отредактировав AWS-auth ConfigMap, который был создан. [117 ]

Добавить роль пользователя

Редактируя ConfigMap aws-auth, вы можете добавлять различные уровни доступа в зависимости от роли пользователя.

Сначала вы ДОЛЖНЫ иметь пользователя «system: node: {{EC2PrivateDNSName}}»

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-auth
  namespace: kube-system
data:
  mapRoles: |
    - rolearn: <ARN of instance role (not instance profile)>
      username: system:node:{{EC2PrivateDNSName}}
      groups:
        - system:bootstrappers
        - system:nodes

Это необходимо для того, чтобы Kubernetes даже работал, давая узлам возможность присоединиться к кластеру. ARN экземпляра роли "- это роль, которая включает в себя необходимые политики AmazonEKSWorkerNodePolicy, AmazonEKS_CNI_Policy, AmazonEC2ContainerRegistryReadOnly и т. Д.

Ниже, которые добавляют вашу роль

   - rolearn: arn:aws:iam::[hidden]:role/ci_deployer
     username: ci-deployer
     groups:
       - system:masters

« Имя пользователя »может фактически быть установлено примерно на что-нибудь. Это кажется важным, только если в ваш кластер EKS добавлены пользовательские роли и привязки.

Кроме того, используйте команду «aws sts get-caller-identity» для проверки среды / оболочки, и учетные данные AWS правильно настроены. При правильной настройке get-caller-identity должен возвращать ту же роль ARN, которая указана в aws-auth.

0
ответ дан grbonk 19 January 2019 в 21:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: