как получить доступ к пространствам имен в кубернетах с помощью rest api?

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

Использование этого документа kubernetes:

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

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

kubectl create serviceaccount exampleuser

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

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

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

kubectl describe rolebinding <nameofrolebinding>

  1. Теперь, используя:

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» для пользователя, но по-прежнему получаю ошибку, связанную с аутентификацией. пожалуйста помоги.


person naveen kumar    schedule 22.05.2019    source источник


Ответы (2)


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

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

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

Подробнее см. связывание ролей и кластер:

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

person menya    schedule 22.05.2019

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

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

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

Область привязки ролей относится к пространству имен, а область привязки кластера - ко всему кластеру.

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

person naveen kumar    schedule 22.05.2019