CloudFoundry命令行和Kubernetes命令行的Restful API消费方式

先说CloudFoundry的命令行工具CLI。我们在CloudFoundry环境下工作,第一个使用的命令就是cf login。

如果在环境变量里维护CF_TRACE的值为true:

则我们能发现,诸如cf login这种命令,实际上也是通过消费Restful API来完成的。

下图是cf login这个命令的api endpoint请求细节,供大家参考:

API endpoint: https://api.cf.eu10.hana.ondemand.com

REQUEST: 2018-09-21T14:50:57+08:00

GET /v2/info HTTP/1.1

Host: api.cf.eu10.hana.ondemand.com

Accept: application/json

Content-Type: application/json

User-Agent: go-cli 6.36.1+e3799ad7e.2018-04-04 / windows

RESPONSE: 2018-09-21T14:50:59+08:00

HTTP/1.1 200 OK

Connection: close

Content-Length: 550

Content-Type: application/json;charset=utf-8

Date: Fri, 21 Sep 2018 06:50:58 GMT

Server: nginx

X-Content-Type-Options: nosniff

X-Vcap-Request-Id: abf32f52-294a-41f5-5919-be948d78f0dd::a32b17bb-da82-4d45-930f-f0344c8a83b3

{"name":"","build":"","support":"","version":0,"description":"Cloud Foundry at SAP Cloud Platform","authorization_endpoint":"https://login.cf.eu10.hana.ondemand.com","token_endpoint":"[PRIVATE DATA HIDDEN]","min_cli_version":null,"min_recommended_cli_version":null,"api_version":"2.115.0","app_ssh_endpoint":"ssh.cf.eu10.hana.ondemand.com:2222","app_ssh_host_key_fingerprint":"f3:12:47:b5:3a:19:6e:6c:4e:9d:90:2e:6f:8e:87:cc","app_ssh_oauth_client":"ssh-proxy","doppler_logging_endpoint":"wss://doppler.cf.eu10.hana.ondemand.com:443"}

REQUEST: 2018-09-21T14:50:59+08:00

GET /login HTTP/1.1

Host: login.cf.eu10.hana.ondemand.com

Accept: application/json

Content-Type: application/json

User-Agent: go-cli 6.36.1+e3799ad7e.2018-04-04 / windows

API响应结果:

RESPONSE: 2018-09-21T14:51:00+08:00

HTTP/1.1 200 OK

Connection: close

Content-Length: 551

Cache-Control: no-store

Content-Language: en-US

Content-Type: application/json;charset=UTF-8

Date: Fri, 21 Sep 2018 06:50:59 GMT

Set-Cookie: X-Uaa-Csrf=8uoxBvyG8QCwo29efrrZNh; Max-Age=86400; Expires=Sat, 22-Sep-2018 06:51:00 GMT; Path=/; Secure; HttpOnly

Strict-Transport-Security: max-age=31536000 ; includeSubDomains

X-Content-Type-Options: nosniff

X-Frame-Options: DENY

X-Vcap-Request-Id: f6b29d8f-f78e-4c5e-61f3-5c9d906828ed

X-Xss-Protection: 1; mode=block

{"app":{"version":"4.19.0"},"links":{"uaa":"https://uaa.cf.eu10.hana.ondemand.com","passwd":"https://accounts.sap.com/ui/createForgottenPasswordMail?spName=cf.eu10.hana.ondemand.com","login":"https://login.cf.eu10.hana.ondemand.com","register":"https://accounts.sap.com/ui/public/showRegisterForm?spName=cf.eu10.hana.ondemand.com"},"zone_name":"uaa","entityID":"login.cf.eu10.hana.ondemand.com","commit_id":"7897100","idpDefinitions":{},"prompts":{"username":["text","Email"],"password":["password","Password"]},"timestamp":"2018-06-13T12:02:09-0700"}

Email>

再看Kubernetes。我们用的很多的命令:

kubectl get pods,返回pods列表。

CloudFoundry命令行和Kubernetes命令行的Restful API消费方式

而用命令行

kubectl --v=8 get pods

则发现,get pods这个命令实际上也是发请求发往Kubernetes的API server:

https://<ip>:6443/api/v1/namespaces/default/pods?limit=500

API请求明细如下:

API server是Kubernetes最重要的核心组件之一:

1. 提供集群管理的REST API接口,包括认证授权、数据校验以及集群状态变更等

2. 提供其他模块之间的数据交互和通信的枢纽(其他模块通过API Server查询或修改

数据,只有API Server才直接操作etcd)

kube-apiserver支持同时提供https(默认监听在6443端口)和http API(默认监听在

127.0.0.1的8080端口),其中http API是非安全接口,不做任何认证授权机制,不建议

生产环境启用。两个接口提供的REST API格式相同,参考Kubernetes API Reference查

看所有API的调用格式。

在实际使用中,通常通过kubectl来访问apiserver,也可以通过Kubernetes各个语言的

client库来访问apiserver。

比如上面get pods命令对应的API的文档:

https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/#list-62

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏有困难要上,没有困难创造困难也要上!

Windows通过组策略设置开机自启动脚本

20730
来自专栏hotqin888的专栏

Docker 更新boot2docker.iso

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/RickyIT/article/detai...

3.5K10
来自专栏史上最简单的Spring Cloud教程

上传文件,经过Zuul,中文文件名乱码解决办法

问题描述 在项目中又一个上传文件的oss服务,直接调用服务的上传文件成功,如果经过网关zuul服务,上传中文名字的文件,文件名会出现乱码,最终导致上传失败,如果...

82860

部署一个Sinatra应用程序到Heroku

Heroku是一个云应用程序平台,专门用于解决服务器管理问题。您只需构建您的应用程序,通过Git将其推送到Heroku,部署就完成了。但是该怎么部署一个Sina...

220110
来自专栏惨绿少年

企业级memcached部署(session共享)

服务端部署 第一个里程碑:安装依赖关系       Memcache用到了libevent这个库用于Socket的处理。 1 [root@nfs01 ~]# ...

27200
来自专栏熊二哥

SpringBoot详细研究-03系统集成

据说杰克船长被黑客盗片了,看来信息安全依然任重而道远,本文以此为引子,来介绍下spring boot对于系统集成方面的支持。 ? ? Spring Secur...

53360
来自专栏纯洁的微笑

Spring Boot 2.0(五):Docker Compose+Spring Boot+Nginx+Mysql 实践

我知道大家这段时间看了我写关于 docker 相关的几篇文章,不疼不痒的,仍然没有感受 docker 的便利,是的,我也是这样认为的,I know your f...

53040
来自专栏Java成神之路

Spring_总结_04_高级配置(一)之Profile

我们在开发软件时,通常会进行跨环境部署。而在跨环境部署时,经常会遇到某些环境的配置并不适用于另一环境,导致应用无法正常运行。

8340
来自专栏极客日常

使用Nginx Ingress Controller导入外部流量到Kubernetes集群内部

Nginx Ingress Controller 是 Kubernetes Ingress Controller 的一种实现,作为反向代理将外部流量导入集群内部...

46120
来自专栏哎_小羊

初试 Kubernetes 集群中使用 Traefik 反向代理

目录 Traefik 介绍 环境、软件准备 部署 Traefik 部署 Traefik UI 部署自定义 Ingress 部分特性说明 1、Traefik 介绍...

3.1K100

扫码关注云+社区

领取腾讯云代金券