OpenShift 4 - 通过 REST API 操作 OpenShift
说明
- 以下REST API是针对OpenShift 4的,不一定都适合OpenShift 3.11。
- 所有操作需先用oc登录。
- 所有操作都针对my-project项目。
OpenShift API
- OpenShift 3.11 API
- OpenShift 4.X的API文档目前还没有出来。
信息获取当前用户
$ curl -k -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/user.openshift.io/v1/users/~
获取项目列表
$ curl -kX GET -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/project.openshift.io/v1/projects | grep projects
新建my-project项目
- 方法1
$ curl -kX POST \
-d @- \
-H "Authorization: Bearer $(oc whoami -t)" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$(oc whoami --show-server)/apis/project.openshift.io/v1/projectrequests <<'EOF'
{
"kind": "ProjectRequest",
"apiVersion": "project.openshift.io/v1",
"metadata": {
"name": "my-project"
}
}
EOF
- 方法2
先创建以下内容的my-project.json文件:
{
"kind": "ProjectRequest",
"apiVersion": "project.openshift.io/v1",
"metadata": {
"name": "my-project"
}
}
然后执行:
$ curl -kX POST -d @my-project.json -H "Authorization: Bearer $(oc whoami -t)" -H "Accept: application/json" -H "Content-Type: application/json" $(oc whoami --show-server)/apis/project.openshift.io/v1/projectrequests
- 以上2种方法成功结果:
{
"kind": "Project",
"apiVersion": "project.openshift.io/v1",
"metadata": {
"name": "my-project",
"selfLink": "/apis/project.openshift.io/v1/projectrequests/my-project",
"uid": "f546615b-18c6-11ea-8038-0242ac11000b",
"resourceVersion": "98494",
"creationTimestamp": "2019-12-07T07:55:38Z",
"annotations": {
"openshift.io/description": "",
"openshift.io/display-name": "",
"openshift.io/requester": "admin",
"openshift.io/sa.scc.mcs": "s0:c23,c7",
"openshift.io/sa.scc.supplemental-groups": "1000520000/10000",
"openshift.io/sa.scc.uid-range": "1000520000/10000"
}
},
"spec": {
"finalizers": [
"kubernetes"
]
},
"status": {
"phase": "Active"
}
}
获得my-project项目的信息
$ curl -kX GET -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/project.openshift.io/v1/projects/my-project
获取cakephp-mysql-example模板
$ curl -k -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/template.openshift.io/v1/namespaces/openshift/templates/cakephp-mysql-example
根据cakephp-mysql-example模板创建应用
curl -kX POST \
-d @- \
-H "Authorization: Bearer $(oc whoami -t) " \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$(oc whoami --show-server)/apis/template.openshift.io/v1/namespaces/my-project/templateinstances <<EOF
{
"kind": "TemplateInstance",
"apiVersion": "template.openshift.io/v1",
"metadata": {
"name": "my-templateinstance"
},
"spec": {
"template": $(curl -k \
-H "Authorization: Bearer $(oc whoami -t) " \
-H 'Accept: application/json' \
$(oc whoami --show-server)/apis/template.openshift.io/v1/namespaces/openshift/templates/cakephp-mysql-example)
}
}
EOF
获取my-project项目中所有Pod
#注意不是“-kX”
curl -k -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/api/v1/namespaces/my-project/pods
获取my-project项目中名为XXX的Pod
curl -k -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/api/v1/namespaces/my-project/pods/XXX
删除my-project项目中名为XXX的Pod
curl -kX DELETE \
-d @- \
-H "Authorization: Bearer $(oc whoami -t)" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$(oc whoami --show-server)/api/v1/namespaces/my-project/pods/XXX <<'EOF'
{
}
EOF
获取my-project项目中所有BuildConfig
curl -kX GET -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/build.openshift.io/v1/namespaces/my-project/buildconfigs
获取my-project项目中名为XXX的BuildConfig
curl -kX GET -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/build.openshift.io/v1/namespaces/my-project/buildconfigs/XXX
创建mysecret的Secret
curl -k \
-X POST \
-d @- \
-H "Authorization: Bearer $(oc whoami -t)" \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
$(oc whoami --show-server)/api/v1/namespaces/my-project/secrets <<'EOF'
{
"kind": "Secret",
"apiVersion": "v1",
"metadata": {
"name": "my-secret"
},
"stringData": {
"NAME": "example"
}
}
EOF
删除my-project项目
$ curl -kX DELETE -H "Authorization: Bearer $(oc whoami -t)" $(oc whoami --show-server)/apis/project.openshift.io/v1/projects/my-project