如何使用OpenShift API创建持久卷

时间:2018-03-29 22:20:15

标签: openshift

我正在构建一个使用OpenShift's REST API在集群上执行各种操作的OpenShift客户端。我想让这个客户端创建一个持久量。默认开发人员用户无法创建持久卷,但管理员可以。我试图找到在默认的OpenShift原始部署中创建持久卷的最佳方法,而无需用户输入并仅使用REST API,而不使用任何oc

我看到两种可能的解决方案:

  • 以用户 admin 的身份创建持久卷。但是,我无法弄清楚如何将API用作 admin ,因为此用户帐户没有令牌。我曾尝试检查oc日志,但无法对其如何作为管理员进行身份验证进行反向工程。
  • 向用户开发人员添加创建持久卷的权限。我想避免这种情况,但如果涉及到我愿意考虑这个解决方案。有人知道开发者用户需要什么样的权限来创建持久卷?

如何仅使用OpenShift API创建持久卷?

1 个答案:

答案 0 :(得分:2)

您可以为持久性卷操作创建用户或服务帐户。

需要的角色是群集角色,并且已经有一个名为“ system:persistent-volume-provisioner ”的现有角色

$ oc get clusterrole/system:persistent-volume-provisioner -o yaml --as system:admin
apiVersion: authorization.openshift.io/v1
kind: ClusterRole
metadata:
  annotations:
    authorization.openshift.io/system-only: "true"
    openshift.io/reconcile-protect: "false"
  creationTimestamp: 2018-03-16T13:18:45Z
  name: system:persistent-volume-provisioner
  resourceVersion: "134"
  selfLink: /apis/authorization.openshift.io/v1/clusterroles/system%3Apersistent-volume-provisioner
  uid: 8e253e28-291c-11e8-b0f7-36c91e93ae8e
rules:
- apiGroups:
  - ""
  attributeRestrictions: null
  resources:
  - persistentvolumes
  verbs:
  - create
  - delete
  - get
  - list
  - watch
- apiGroups:
  - ""
  attributeRestrictions: null
  resources:
  - persistentvolumeclaims
  verbs:
  - get
  - list
  - update
  - watch
- apiGroups:
  - storage.k8s.io
  attributeRestrictions: null
  resources:
  - storageclasses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  attributeRestrictions: null
  resources:
  - events
  verbs:
  - create
  - list
  - patch
  - update
  - watch

如果此群集角色的数量超过您的需要,只需创建一个权限较少的角色。