Я отправил кластер из 4 узлов (1 мастер 3 рабочих), на котором запущен Kubernetes на Ubuntu. Я включил --authorization режиме = ДКС и создать файл политики с записью, как следующийИспользование kubectl с режимом авторизации Kubernetes ABAC
{"user":"bob", "readonly": true, "namespace": "projectgino"}
Я хочу, чтобы пользователь боб, чтобы только быть в состоянии смотреть на ресурсы в projectgino. У меня возникают проблемы с использованием командной строки kubectl в качестве пользователя Bob. Когда я запускать следующую команду
kubectl get pods --token=xxx --namespace=projectgino --server= https://xxx.xxx.xxx.xx:6443
Я получаю следующую ошибку
error: couldn't read version from server: the server does not allow access to the requested resource
Я проследил код команды kubectl строки и проблема, кажется, вызвана kubectl вызывающей функции NegotiateVersion в упак/клиента/помощника. идти. Это вызывает вызов/api на сервере, чтобы получить версию Kubernetes. Этот вызов терпит неудачу, потому что путь останова не содержит projectgino пространства имен. Я добавил код трассировки в pkg/auth/authorizer/abac/abac.go, и он не прошел проверку пространства имен.
Я еще не перешел к последней версии 1.1.1 Kubernetes, но, глядя на код, я не видел ничего, что изменилось в этой области.
Кто-нибудь знает, как настроить Kubernetes, чтобы обойти проблему?