OpenShift 4 - 通过 REST API 操作 OpenShift

说明

  1. 以下REST API是针对OpenShift 4的,不一定都适合OpenShift 3.11。
  2. 所有操作需先用oc登录。
  3. 所有操作都针对my-project项目。

OpenShift API

  1. OpenShift 3.11 API
  2. 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. 方法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
  1. 方法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
  1. 以上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

其他API参考

  1. Java Client
  2. C# Client
  3. Python Client
发布了54 篇原创文章 · 获赞 0 · 访问量 1178

猜你喜欢

转载自blog.csdn.net/weixin_43902588/article/details/103435799