Я настраиваю свой первый кластер Kubernetes EKS, следуя Руководство по началу работы но я не могу пройти этап проверки доступа с помощью kubectl get svc
. Вместо списка услуг я получаю:
error: the server doesn't have a resource type "svc"
У меня есть aws-iam-authenticator
На месте у меня есть правильный доступ и секретный ключ для пользователя с правами администратора AWS, я проверил все, что мог придумать, но не могу понять, что вызывает ошибку.
Убедитесь, что вы используете kubectl
с тот же пользователь / роль IAM что вы использовали для создания кластера EKS? Только который Пользователь / роль IAM задана system:masters
привилегия в Kubernetes. Если вы используете другую роль, вы увидите эту ошибку, даже если эта другая роль имеет разрешения администратора в ее политике IAM.
Например, если вы создали кластер EKS во время входа в систему с роль IAM в кросс-аккаунте и теперь вы пытаетесь использовать его с другой пользователь IAM это не сработает.
Позже вы можете добавить в EKS дополнительных пользователей IAM, но для начала вам придется использовать роль IAM, которая создала кластер. Например, если вы войдете в компания-логин счет и сменить роль к компания-продукт аккаунт с ролью Админ вам нужно будет обновить kubeconfig
соответственно:
users:
- name: arn:aws:eks:ap-southeast-2:{company-prod-id}:cluster/{cluster-name}
user:
exec:
apiVersion: client.authentication.k8s.io/v1alpha1
command: aws-iam-authenticator
args:
- token
- -i
- cluster-name
- -r <<< Add this
- arn:aws:iam::{company-prod-id}:role/Admin <<< And this
env:
- name: AWS_PROFILE
value: company-login-profile <<< Must be your login account
В качестве альтернативы вы можете создать кросс-аккаунт профиль для aws-cli как описано здесь: Как «сменить роль» в aws-cli? В этом случае вам не понадобится -r arn:...:role/Admin
в kubeconfig
как это уже сделано в ~/.aws/credentials
.
После исправления ролей вы сможете запускать kubectl get svc
.
Как только вышеуказанное сработает, вы можете Добавление дополнительных пользователей IAM и ролей IAM в EKS / Kubernetes. Я предлагаю вам создать специальную роль, например, EKSAdmin
и потребуйте, чтобы ваши пользователи IAM предполагали это для управления кластером.
Надеюсь, это поможет :)