Токен администратора Openshift

Я пытаюсь создать скрипт, который записывает ресурсы проекта каждые 15 минут. Как пройти аутентификацию с помощью Openshift API? Могу ли я использовать токен, который имеет доступ для чтения ко всем пространствам имен? Как создать учетную запись службы с доступом ко всем пространствам имен?


person vatsal    schedule 05.04.2018    source источник


Ответы (1)


Вам потребуется создать ClusterRole с доступом для чтения к ресурсам и использовать ClusterRoleBinding, чтобы связать ServiceAccount с этой ClusterRole. Грубый пример, не проверенный, но он должен работать:

# creates the service account "ns-reader"
apiVersion: v1
kind: ServiceAccount
metadata:
  name: ns-reader
  namespace: default

---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  # "namespace" omitted since ClusterRoles are not namespaced
  name: global-reader
rules:
- apiGroups: [""]
  # add other rescources you wish to read
  resources: ["pods", "secrets"] 
  verbs: ["get", "watch", "list"]

---
# This cluster role binding allows service account "ns-reader" to read pods in all available namespace
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: read-ns
subjects:
- kind: ServiceAccount
  name: ns-reader
  namespace: default
roleRef:
  kind: ClusterRole
  name: global-reader
  apiGroup: rbac.authorization.k8s.io

При настройке ServiceAccount автоматически создается ряд секретов, связанных с ним. Пара этих секретов содержит токен, который затем можно использовать при непосредственном использовании REST API или с помощью oc. Используйте oc describe в ServiceAccount, чтобы увидеть имена секретов для токенов. Затем используйте oc describe на одном из секретов, чтобы увидеть токен.

person Chuka Ofili    schedule 05.04.2018