Существует другая альтернатива использованию «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));
Если мы не знаем номер телефона, мы просто не добавляем строку во вторую таблицу.
Похоже, это связано с полномочиями. Некоторые вещи, на которые вы можете взглянуть:
Переменные окружения полномочий не установлены в вашем 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
? ?
Из Шаг 1. Создание кластера Amazon
При создании кластера Amazon EKS объект IAM (пользователь или роль), который создает кластер, добавляется в Таблица авторизации Kubernetes RBAC с правами администратора (с разрешениями master: master. Первоначально только тот пользователь IAM может выполнять вызовы на сервер API Kubernetes с помощью kubectl.
blockquote>Как вы обнаружили, вы можете получить доступ только к кластер с тем же пользователем / ролью, который создал кластер 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.