Я нашел несколько человек, которые пытались решить эту проблему, только слегка релевантные сообщения the-kubernetes-api">здесь и здесь но не решает это для меня.
Проблема: я хочу создать пользователя только для чтения для своего кластера, используя политику ABAC. В моем кластере 3 мастера и 3 рабочих, версия 1.4.7 размещена на AWS.
Я отредактировал свои manifests/apiserver.yml так на всех 3-х мастерах (добавил эти 3 строки - в нижней части файла, конечно же, я установил соответствующие пути и т. д.):
- --token-auth-file=/etc/kubernetes/policy/user-tokens.csv
- --авторизация-режим = ABAC
- --authorization-policy-file=/etc/kubernetes/policy/apiusers.yml
мой apiuser.yml выглядит так:
{"apiVersion": "abac.authorization.kubernetes.io/v1beta1", "kind": "Policy", "spec": {"group": "system:authenticated", "readonly": true, "nonResourcePath": "*", "namespace": "*", "resource": "*", "apiGroup": "*"}}
Мои пользователи-token.csv выглядят так:
tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH,bob,bob
В моем файле kubeconfig есть это:
users:
- name: bob
user:
token: tdU0ynyO3wG6UAzwWP0DO7wvF2tH8pbH
Когда я пытаюсь kubectl get nodes
, это терпит неудачу, я могу распечатать вывод с --v=8, если это уместно, но в основном это говорит Forbidden(403)
. Мне кажется, я упускаю здесь что-то принципиальное, политика действует и блокирует все и всех, хотя она должна разрешать аутентифицированным пользователям права только на чтение.
Любая помощь или предложения будут высоко оценены.