как получить доступ к пространствам имен в kubernetes, используя остальные API? - PullRequest
0 голосов
/ 22 мая 2019

Я не могу получить список пространств имен, используя остальные API, и конечная точка отдыха составляет https://<localhost>:8001/api/v1/namespaces

Используя этот документ kubernetes :

Я использую почтальона.Я повторю шаги:

  1. Создан пользователь и предоставлены привилегии администратора кластера:

kubectl create serviceaccount exampleuser

Создана привязка ролей для нашего пользователя с кластерной ролью cluster-admin:

kubectl create rolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser

Проверено связывание ролей с использованием:

kubectl describe rolebinding <nameofrolebinding>

Теперь с помощью:

kubectl describe serviceaccount exampleuser kubectl describe secret exampleuser-xxxx-xxxx

Я буду использовать полученный мной токен для аутентификации почтальона.

GET https://<ipofserver>:port/api/v1/namespace

AUTH с использованием токена на предъявителя.

Ожидаемый результат для перечисления всех пространств имен в кластере.как kubectl get namespaces.Но я получил предупреждение следующим образом.

{
    "kind": "Status",
    "apiVersion": "v1",
    "metadata": {},
    "status": "Failure",
    "message": "namespaces is forbidden: User \"system:serviceaccount:default:exampleuser\" cannot list resource \"namespaces\" in API group \"\" at the cluster scope",
    "reason": "Forbidden",
    "details": {
        "kind": "namespaces"
    },
    "code": 403
}

Я использовал для кластера «cluster-admin», что по-прежнему вызывает ошибку аутентификации.пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 22 мая 2019

Вы должны использовать clusterrolebinding вместо rolebinding:

kubectl create clusterrolebinding <nameofrolebinding> --clusterrole cluster-admin --serviceaccount default:exampleuser

RoleBinding означает разрешения для ресурсов пространства имен, но namespace не является namespaced ресурсами, вы можете проверить этона kubectl api-resouces.

Подробнее в rolebinding-and-clusterrolebinding :

Разрешения могут быть предоставлены в пространстве имен с помощью RoleBinding или в пределах всего кластера с помощью ClusterRoleBinding

0 голосов
/ 22 мая 2019

, поэтому проблема вместо использования rolebinding , мне нужно использовать clusterrolebinding проверьте ниже

kubectl create rolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser

kubectl create clusterrolebinding nameofrolebinding --clusterrole cluster-admin --serviceaccount default:exampleuser

ролевая привязка область действия до пространства имен и clusterrolebinding область действия целиком cluster .

Для работы с пространствами имен api / v1 / нам нужно использовать clusterrolebinding

...