Я настраиваю кластер AWS EKS, используя terraform из экземпляра EC2. В основном настройка включает конфигурацию запуска EC2 и автомасштабирование для рабочих узлов. После создания кластера я могу настроить kubectl с помощью aws-iam-Authenticator. Когда я сделал
kubectl get nodes
Он вернулся
Ресурсов не найдено
поскольку рабочие узлы не были присоединены. Я попробовал обновить aws-auth-cm.yaml
файл
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
с ролью IAM ARN рабочего узла. И сделал
kubectl apply -f aws-auth-cm.yaml
Он вернулся
ConfigMap / aws-auth создан
Потом я понял, что роль ARN настроена в aws-auth-cm.yaml
не тот. Поэтому я обновил тот же файл, указав точную роль ARN рабочего узла.
Но на этот раз я получил 403, когда я сделал kubectl apply -f aws-auth-cm.yaml
очередной раз.
Он вернулся
Ошибка с сервера (Запрещено): ошибка при получении текущей конфигурации: Resource: "/ v1, Resource = configmaps", GroupVersionKind: "/ v1, Kind = ConfigMap" Имя: "aws-auth", Пространство имен: "kube-system" Объект: & {map ["apiVersion": "v1" "data": map ["mapRoles": "- rolearn: arn: aws: iam :: XXXXXXXXX: role / worker-node-role \ n имя пользователя: system: node : {{EC2PrivateDNSName}} \ n groups: \ n - system: bootstrappers \ n - system: nodes \ n "]" kind ":" ConfigMap "" metadata ": map [" name ":" aws-auth "" пространство имен ":" kube-system "" annotations ": map [" kubectl.kubernetes.io/last-applied-configuration ":" "]]]} с сервера для:" /home/username/aws-auth-cm.yaml ": configmaps" aws-auth "запрещено: User" system: node: ip-XXX-XX-XX-XX.ec2.internal "не может получить ресурсы" configmaps "в группе API" "в пространстве имен" kube-system "
После этого шага я не могу перенастроить ConfigMap.
Я получаю 403 для таких команд, как
kubectl apply
kubectl delete
kubectl edit
для configmaps. Любая помощь?
Я нашел причину почему kubectl
вернул 403 для этого сценария.
Согласно этому док, пользователю / роли, создавшей кластер, будет присвоено system:masters
разрешения в кластере RBAC
конфигурация
Когда я пытался создать ConfigMap
для aws-auth
чтобы присоединиться к рабочим узлам, я дал ARN роли / пользователя, создавшего кластер, вместо ARN рабочих узлов.
И обновил группу (system:masters
) админа с группами system:bootstrappers
и system:nodes
в RBAC
который в основном заблокировал самого админа. И это не может быть восстановлено, так как администратор потерял привилегии от группы system:masters
.