Предыстория проблемы: в консоли AWS увидел, что под моей админской (не root) по какой-то причине перестали отображаться ноды нашего кластера. Согласно
справочной статье нужно было отредактировать configmap.
Я отредактировал configmap следующим образом:
apiVersion: v1
data:
mapRoles: <default options>
mapUsers: |
- userarn: arn:aws:iam::<root id>:root
username: #здесь оставил значение пустым
groups:
- system:bootstrappers
- system:nodes
Кончилось, что на все команды kubectl отвечает ошибкой такого рода: Error from server (Forbidden): configmaps "aws-auth" is forbidden: User "" cannot get resource "configmaps" in API group "" in the namespace "kube-system"
Насколько я понимаю, я "понизил" в правах root-пользователя, установив ему группу system:nodes, system:bootstrappers и теперь он не в группе system:masters
На стековерфлоу есть пара подобных вопросов: там пишут, что учетка, из под которой изначально создавали кластер, все равно имеет доступ к его управлению. Но я не понимаю, как всё-таки вернуть доступ. Я воспроизвел эту же ошибку в новом кластере, созданном для этой цели: даже если у меня root, всё равно kubectl не дает выполнять команды.
Обновление #1
Попробовал использовать токен serviceAccount, полученный из файла /var/run/secrets/kubernetes.io/serviceaccount/token в одном из контейнеров.
Команда get nodes заработала, однако отредактировать configmap я не могу
$ kubectl --token=<...> edit configmap aws-auth -n kube-system
Error from server (Forbidden): configmaps "aws-auth" is forbidden: User "system:serviceaccount:kube-system:aws-node" cannot get resource "configmaps" in API group "" in the namespace "kube-system"