Я пытаюсь создать скрипт, который записывает ресурсы проекта каждые 15 минут. Как пройти аутентификацию с помощью Openshift API? Могу ли я использовать токен, который имеет доступ для чтения ко всем пространствам имен? Как создать учетную запись службы с доступом ко всем пространствам имен?
Токен администратора Openshift
Ответы (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