OpenShift 4 - 通过 REST API 操作 OpenShift

    • OpenShift API 访问机制
  • 如何访问Rest API
    • 使用Token直接访问Rest API
      • 方法1
      • 方法2
    • 使用Proxy间接访问Rest API
  • 用Rest API操作OpenShift
    • 信息获取当前用户
    • 获取Project或namespace列表
    • 新建my-project项目
    • 获得my-project项目或namespace的信息
    • 获取cakephp-mysql-example模板
    • 根据cakephp-mysql-example模板创建应用
    • 获取my-project项目中所有Pod
    • 获取my-project项目中名为XXX的Pod
    • 删除my-project项目中名为XXX的Pod
    • 获取my-project项目中所有BuildConfig
    • 获取my-project项目中名为XXX的BuildConfig
    • 创建mysecret的Secret
    • 删除my-project项目
    • 其它API参考

说明:

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

OpenShift API 访问机制

如何访问Rest API

使用Token直接访问Rest API

方法1

  1. 登录OpenShift,然后在线获取用户登录的TOKEN字符串。然后设置TOKEN和API_SERVER环境变量。
$ oc whoami -t
wMUsqoy2ecJoTpK5MtnjoCEy1nBXo86ADvFmYOO8BtU
$ export TOKEN=$(oc whoami -t)
$ export API_SERVER=$(oc whoami --show-server)
  1. 访问Rest API。
curl -k -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN"
{"kind": "APIVersions","versions": ["v1"],"serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0","serverAddress": "10.0.206.194:6443"}]
}

方法2

  1. 登录OpenShift,然后查看kubeconfig文件中的内容。
$ oc config view -o jsonpath='{"Cluster name\tServer\n"}{range .clusters[*]}{.name}{"\t"}{.cluster.server}{"\n"}{end}'
Cluster name    Server
api-cluster-beijing-48f2-beijing-48f2-example-opentlc-com:6443  https://api.cluster-beijing-48f2.beijing-48f2.example.opentlc.com:6443
cluster-beijing-48f2    https://api.cluster-beijing-48f2.beijing-48f2.example.opentlc.com:6443
  1. 然后使用一个“Cluster name”离线获取用户登录的TOKEN字符串,然后设置TOKEN和API_SERVER环境变量。
export CLUSTER_NAME="cluster-beijing-48f2"
export API_SERVER=$(oc config view -o jsonpath="{.clusters[?(@.name==\"$CLUSTER_NAME\")].cluster.server}")
export TOKEN=$(oc get secrets -o jsonpath="{.items[?(@.metadata.annotations['kubernetes\.io/service-account\.name']=='default')].data.token}"|base64 -d)
  1. 访问Rest API。
$ curl -k -X GET $APISERVER/api --header "Authorization: Bearer $TOKEN"
{"kind": "APIVersions","versions": ["v1"],"serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0","serverAddress": "10.0.183.207:6443"}]
}

使用Proxy间接访问Rest API

  1. 在第一个窗口先登录OpenShift,然后运行API的访问代理。
$ oc proxy
Starting to serve on 127.0.0.1:8001
  1. 在第二个窗口通过代理访问API。
$ curl http://localhost:8001/api/
{"kind": "APIVersions","versions": ["v1"],"serverAddressByClientCIDRs": [{"clientCIDR": "0.0.0.0/0","serverAddress": "10.0.183.207:6443"}]
}

用Rest API操作OpenShift

信息获取当前用户

$ curl -k -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/user.openshift.io/v1/users/~

获取Project或namespace列表

$ curl -kX GET -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/project.openshift.io/v1/projects | grep projects
$ curl -kX GET -H "Authorization: Bearer $TOKEN" $API_SERVER/api/v1/namespaces | grep namespaces

新建my-project项目

  1. 方法1
$ curl -kX POST \-d @- \-H "Authorization: Bearer $TOKEN" \-H 'Accept: application/json' \-H 'Content-Type: application/json' \$API_SERVER/apis/project.openshift.io/v1/projectrequests <<'EOF'
{"kind": "ProjectRequest","apiVersion": "project.openshift.io/v1","metadata": {"name": "my-project"}
}
EOF
  1. 方法2
$ curl -LO https://raw.githubusercontent.com/liuxiaoyu-git/OpenShift-HOL/master/myproject1.json
$ curl -kX POST -H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/project.openshift.io/v1/projects -d @my-project1.json

获得my-project项目或namespace的信息

$ curl -kX GET -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/project.openshift.io/v1/projects/my-project

获取cakephp-mysql-example模板

$ curl -k -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/template.openshift.io/v1/namespaces/openshift/templates/cakephp-mysql-example

根据cakephp-mysql-example模板创建应用

curl -kX POST \-d @- \-H "Authorization: Bearer $TOKEN" \-H 'Accept: application/json' \-H 'Content-Type: application/json' \$API_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 $TOKEN" \-H 'Accept: application/json' \$API_SERVER/apis/template.openshift.io/v1/namespaces/openshift/templates/cakephp-mysql-example)}
}
EOF

获取my-project项目中所有Pod

#注意不是“-kX”
curl -k -H "Authorization: Bearer $TOKEN" $API_SERVER/api/v1/namespaces/my-project/pods

获取my-project项目中名为XXX的Pod

curl -k -H "Authorization: Bearer $TOKEN" $API_SERVER/api/v1/namespaces/my-project/pods/XXX

删除my-project项目中名为XXX的Pod

curl -kX DELETE \-d @- \-H "Authorization: Bearer $TOKEN" \-H 'Accept: application/json' \-H 'Content-Type: application/json' \$API_SERVER/api/v1/namespaces/my-project/pods/XXX <<'EOF'
{}
EOF

获取my-project项目中所有BuildConfig

curl -kX GET -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/build.openshift.io/v1/namespaces/my-project/buildconfigs

获取my-project项目中名为XXX的BuildConfig

curl -kX GET -H "Authorization: Bearer $TOKEN" $API_SERVER/apis/build.openshift.io/v1/namespaces/my-project/buildconfigs/XXX

创建mysecret的Secret

curl -k \-X POST \-d @- \-H "Authorization: Bearer $TOKEN" \-H 'Accept: application/json' \-H 'Content-Type: application/json' \$API_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 $TOKEN" $API_SERVER/apis/project.openshift.io/v1/projects/my-project
$ curl -kX DELETE -H "Authorization: Bearer $TOKEN" $API_SERVER/api/v1/namespaces/my-project

其它API参考

  1. OpenShift的Rest API说明可参见:
    https://docs.okd.io/latest/rest_api/index.html
    https://docs.openshift.com/container-platform/3.11/rest_api/examples.html
  2. Java Client
  3. C# Client
  4. Python Client

OpenShift 4 - 通过 REST API 操作 OpenShift相关推荐

  1. 2021年大数据Hadoop(十二):HDFS的API操作

    2021大数据领域优质创作博客,带你从入门到精通,该博客每天更新,逐渐完善大数据各个知识体系的文章,帮助大家更高效学习. 有对大数据感兴趣的可以关注微信公众号:三帮大数据 目录 HDFS的API操作 ...

  2. 2021年大数据ZooKeeper(五):ZooKeeper Java API操作

    目录 ZooKeeper Java API操作 引入maven坐标 节点的操作 ZooKeeper Java API操作 这里操作Zookeeper的JavaAPI使用的是一套zookeeper客户端 ...

  3. c 获取mysql列数据_转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,"C API函数描述". 函数 ...

  4. HDFS的shell和API操作

    1. HDFS的shell操作 hadoop version //查看版本 hadoop fs -appendToFile src(Linux中的文件) dest(hdfs目录下的文件) //追加 h ...

  5. Kafka系列三 java API操作

    使用java API操作kafka 1.pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs ...

  6. es java_JAVA API操作ES详解

    一:运行环境 JDK:1.8 ES:5.6.4 二:JAVA依赖环境 elasticsearch.jar  5.6.4版本: xsi:schemaLocation="http://maven ...

  7. Hadoop详解(四):HDFS shell操作和Java API操作

    1. HDFS环境准备 1.1 HDFS的格式化与启动 HDFS配置完之后就可以对其进行格式化操作.在NameNode所在机器上执行如下命令进行HDFS的格式化操作: hadoop namenode ...

  8. HBase 6、用Phoenix Java api操作HBase

    开发环境准备:eclipse3.5.jdk1.7.window8.hadoop2.2.0.hbase0.98.0.2.phoenix4.3.0 1.从集群拷贝以下文件:core-site.xml.hb ...

  9. Apache ZooKeeper - 使用原生的API操作ZK_ACL权限

    文章目录 Pre Code 创建world模式的节点 使用授权模式创建节点 使用授权模式获取节点数据 Pre Apache ZooKeeper - ZK的ACL权限控制( Access Control ...

最新文章

  1. 理解YOLOv2训练过程中输出参数含义
  2. UOJ #274. 【清华集训2016】温暖会指引我们前行 [lct]
  3. html文标题党,做好合格“标题党”
  4. 在vim中设置将tab自动转化为4个空格
  5. sgolayfilt函数_Matlab中Savitzky-Golay filtering(最小二乘平滑滤波)函数sgolayfilt的使用方法...
  6. 如何隐藏SAP CRM WebClient UI配置页面的字段
  7. 阿里云php探针,X 探针(刘海探针)开源 PHP 探针介绍
  8. 【第十届泰迪杯B题电力负荷预测代码】
  9. Unity 无法识别视频
  10. 2015062507 - 星际迷航.红杉
  11. word打开老是配置进度_打开word2007时总是出现配置进度,怎么解决?
  12. 利用百度地图api将excel中的经纬度数据可视化
  13. mysql无法打开excel_关于Navicat将Excel数据导入到MySQL中出现无法打开文件错误
  14. ELK继续分析V2EX(我自己搬运我自己)
  15. Telegram公布个人身份验证工具,可共享财务及ICO数据
  16. 【蓝桥杯省赛真题20】Scratch哆啦A梦竹蜻蜓 少儿编程scratch蓝桥杯省赛真题讲解
  17. 按键功能拓展--单击、双击、长按、组合按等
  18. cc登录怎么显示服务器超时,CC登录常见问题帮助说明
  19. 没有数学基础可以学编程吗?
  20. 阿里员工:最惨P7,33岁才28K,感觉没有前途了。网友调侃:最美逆行者

热门文章

  1. python接口编程的好处_python接口自动化测试
  2. oracle 闪查询,Oracle的回闪查询
  3. python中socket怎么用_Python 之socket的应用
  4. java synoch 加锁_线程间通信 - HappyCowboy - 博客园
  5. 网页排版规则:你需要知道的
  6. UI设计实用素材|2020动画将占据中心舞台
  7. 平面设计师必备素材|中国/国潮风格
  8. 电商活动难么多,不怕一个电商素材网站解救你,赶紧收藏
  9. 网页模板素材|解救不会编程的UI设计师网页设计者!
  10. ansys 内聚力模型_《ANSYS Workbench有限元分析实例详解(静力学)》,9787115446312