Мониторинг Openshift с помощью REST_API

#kubernetes #openshift #rbac #openshift-enterprise #azure-rbac

#kubernetes #openshift #rbac #openshift-корпоративный #azure-rbac

Вопрос:

Я пытаюсь использовать Openshift REST-API для получения статуса моих cron-заданий. Я являюсь администратором своего пространства имен, но у меня нет доступа к кластеру, поэтому я ничего не могу сделать на уровне кластера.

Теперь, чтобы получить статус, я сначала создаю роль :

 # oc create role podreader --verb=get --verb=list --verb=watch --resource=pods,cronjobs.batch,jobs.batch
role.rbac.authorization.k8s.io/podreader created
  

Но когда я пытаюсь добавить роль в учетную запись службы, это не удается.

 # oc create serviceaccount nagios 
# oc policy add-role-to-user podreader system:serviceaccount:uc-immoscout-dev:nagios
Warning: role 'podreader' not found
Error from server (NotFound): clusterroles.rbac.authorization.k8s.io "podreader" not found
  

Моя главная цель — получить статус моих cron-заданий, заданий и модулей, которые я планирую.

Ответ №1:

Вам придется добавить --role-namespace=namespace-of-role в oc policy add-role-to-user команду, иначе роль будет рассматриваться как роль кластера.

Из документов:

—role-namespace=»: пространство имен, в котором расположена роль: пустое означает роль, определенную в кластерной политике

Комментарии:

1. Большое спасибо за поддержку. Роль добавлена правильно, но я все еще не могу получить статус моего cronjob. «статус»: «Сбой», «сообщение»: «cronjobs.batch «mycronjob» запрещен: Пользователь «система: учетная запись службы: myproject-пространство имен: nagios » не удается получить cronjobs.batch / status в пространстве имен «myproject-пространство имен «: не соответствует политике RBAC», «группа»: «пакет», «вид»: «cronjobs» «код»: 403 Используемые команды: # oc serviceaccounts получает токен nagios # curl -k -H «Авторизация: $ ТОКЕН на предъявителя» -H ‘Принять: application/json’ https://$ENDPOINT/api/batch/v2alpha1/пространства имен/$NAMESPACE/cronjobs

2. Я думаю, вам следует создать еще один вопрос для этого.