背景
在日常运维管理中,经常需要获取OpenShift集群资源的信息,甚至创建、编辑或删除资源。我们都很清楚,使用oc命令就能够非常方便地完成这些操作。但是有时,我们希望通过调用接口来实现,以便于与其它组件或者应用进行集成。那么我们该如何做呢?本篇就以读取Project信息为例,展示如何通过HTTP请求操作OpenShift的资源。
操作
- 首先需要创建具有读取Project信息权限的clusterrole project_view
$ cat <<EOF | oc create -f -
apiVersion: authorization.openshift.io/v1
kind: ClusterRole
metadata:
name: project_view
rules:
- apiGroups:
- project.openshift.io
resources:
- projects
verbs:
- get
EOF
- 为需要调用的应用POD添加获取Project信息的权限
$ oc adm policy add-cluster-role-to-user project_view -z default
为所有应用授予获取Project信息的权限
$ oc adm policy add-cluster-role-to-group project_view system:serviceaccounts
- 通过发送serviceaccount认证信息,应用Pod实例中便可通过HTTP请求获取Project信息
$ TOKEN=$(cat /run/secrets/kubernetes.io/serviceaccount/token)
$ CACERT=/run/secrets/kubernetes.io/serviceaccount/ca.crt
$ PROJECT_OBJ=$(curl -s -H "Authorization: bearer $TOKEN") --caert $CACERT https://openshift.default.svc/api/project.openshift.io/v1/projects/$NAMESPACE)
$ PROJEXT_UUID=$(echo $PROJECT_OJB | jq --raw-output .metadata.uid)
- 完成