Openshift Admin Token

时间:2018-04-05 08:08:01

标签: kubernetes openshift openshift-enterprise

我正在尝试创建一个每15分钟记录一次项目资源的脚本。如何使用Openshift API进行身份验证?是否有一个我可以使用的令牌,它对所有命名空间都有读访问权限?如何创建可访问所有名称空间的服务帐户?

1 个答案:

答案 0 :(得分: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时使用该令牌。使用ServiceAccount上的oc describe来查看令牌的Secret的名称。然后在其中一个秘密上使用oc describe来查看令牌。