Я использую Amazon EKS для развертывания в Kubernetes (изначально созданный пользователем-администратором AWS) и в настоящее время испытываю трудности с использованием учетных данных AWS из AWS STS accept-роль для выполнения kubectl
команд для взаимодействия со стеком
У меня есть 2 стека EKS на 2 разных учетных записях AWS (PROD и NONPROD), и я пытаюсь получить инструмент CI / CD для развертывания в обоих стеках kubernetes с учетными данными, предоставленными для предполагаемой роли AWS STS, но я ' м постоянно получаю ошибку типа error: You must be logged in to the server (the server has asked for the client to provide credentials)
.
Я перешел по следующей ссылке, чтобы добавить дополнительную роль AWS IAM в конфигурацию:
Но я не уверен, что не правильно делаю.
Я запустил «aws eks update-kubeconfig», чтобы обновить локальный файл .kube / config, содержимое которого заполнено следующим образом:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [hidden]
server: https://[hidden].eu-west-1.eks.amazonaws.com
name: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
contexts:
- context:
cluster: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
user: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
name: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
current-context: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
kind: Config
preferences: {}
users:
- name: arn:aws:eks:eu-west-1:[hidden]:cluster/demo-eks
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
args:
- token
- -i
- triage-eks
command: aws-iam-authenticator
и ранее обновлял Kubernetes aws-auth ConfigMap с дополнительной ролью, как показано ниже:
data:
mapRoles: |
- rolearn: arn:aws:iam::[hidden]:role/ci_deployer
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:masters
Мой экземпляр CI / CD EC2 может выполнять роль ci_deployer
для обеих учетных записей AWS.
Ожидается: я могу вызвать «kubectl version», чтобы увидеть версии клиента и сервера.
Факт: но я получаю "сервер запросил у клиента учетные данные"
Чего еще не хватает?
После дальнейшего тестирования я могу подтвердить, что kubectl будет работать только из среды (например, моего экземпляра CI EC2 с ролью экземпляра AWS) той же учетной записи AWS, в которой создается стек EKS. Это означает, что мой экземпляр CI из учетной записи A не сможет обмениваться данными с EKS из учетной записи B, даже если экземпляр CI может принять роль от учетной записи B, а роль учетной записи B включена в aws-auth конфигурации kube. счета Б ЭКС. Я надеюсь, что это связано с отсутствием конфигурации, поскольку я нахожу это довольно нежелательным, если инструмент CI не может развертываться на нескольких EKS с нескольких учетных записей AWS с использованием предположения роли.
С нетерпением ждем дальнейшей поддержки @Kubernetes на этом