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

简介: 先说CloudFoundry的命令行工具CLI。我们在CloudFoundry环境下工作,第一个使用的命令就是cf login。 如果在环境变量里维护CF_TRACE的值为true: 则我们能发现,诸如cf login这种命令,实际上也是通过消费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://: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

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
19小时前
|
JSON 缓存 API
探索RESTful API设计的最佳实践
【6月更文挑战第16天】在数字化时代,构建高效、可扩展的后端服务是软件开发的核心。本文将深入探讨如何设计符合RESTful原则的API,包括资源定位、接口一致性、错误处理和性能优化等方面,旨在帮助开发者构建更加健壮和用户友好的网络服务。
|
21小时前
|
XML 前端开发 API
构建高效后端:RESTful API设计的最佳实践
【6月更文挑战第16天】在本文中,我们将深入探讨如何构建高效的后端系统,特别是如何设计出符合最佳实践的RESTful API。我们将从基础概念开始,逐步深入到具体的设计原则和技巧,最后通过一个实际案例来展示这些原则的应用。无论你是后端开发的新手,还是有一定经验的开发者,这篇文章都将为你提供有价值的指导。
|
1天前
|
XML JSON API
探索RESTful API设计的最佳实践
【6月更文挑战第15天】在数字化时代,API已成为连接不同软件系统和促进数据交换的桥梁。本文将深入探讨如何设计高效、可维护且易于使用的RESTful API,包括资源命名、HTTP方法的正确使用、状态码的精确定义以及响应格式的设计原则。通过遵循这些最佳实践,开发者可以构建出更加健壮和用户友好的后端服务。
|
2天前
|
安全 API 网络架构
构建高效的RESTful API:后端开发的最佳实践
【6月更文挑战第14天】在数字化时代,RESTful API是连接不同软件系统和促进数据交换的关键。本文将深入探讨如何设计、实现和维护一个高效、可扩展且安全的RESTful API,确保后端服务的响应性、可靠性和安全性。
|
5天前
|
Java API 网络架构
【Spring Boot】详解restful api
【Spring Boot】详解restful api
10 0
|
6天前
|
缓存 安全 API
构建高效API:RESTful设计原则与实践
【6月更文挑战第10天】在数字化时代,API作为不同软件组件之间通信的桥梁,其设计质量直接影响到应用的性能和用户体验。本文深入探讨了RESTful API的设计原则,并通过实际案例分析如何构建高效、可扩展且安全的API。我们将从资源定义、接口一致性、错误处理等方面入手,逐步揭示如何优化API设计,以满足不断变化的技术需求和业务目标。
|
6天前
|
缓存 监控 API
探索RESTful API设计的最佳实践
【6月更文挑战第10天】在数字化时代,API作为不同软件系统间通信的桥梁,其设计至关重要。本文旨在揭示如何构建高效、可维护且用户友好的RESTful API,涵盖从基础原则到高级技巧,为开发者提供一条清晰的道路,以实现最佳的API设计实践。
|
3天前
|
安全 数据挖掘 API
【实时数据】商品详情API接口系列开发
商品详情API接口系列对于电商平台至关重要,它们为开发者提供了实时、准确的商品信息,使得在线销售和展示商品变得更加高效和精准。以下是几个主要的电商平台及其商品详情API接口的介绍:
|
4天前
|
人工智能 自然语言处理 API
云栖发布:通义听悟AI能力再进化,开放API接口
云栖发布:通义听悟AI能力再进化,开放API接口
|
4天前
|
JSON 安全 API
电商开发者必读:微店商品详情API接口全解析
微店商品详情API让开发者能通过商品ID获取包括名称、价格、库存、描述和图片在内的详细信息。开发者需注册账号、获取API密钥和访问权限,并熟悉HTTP请求。请求示例为GET方法,响应数据以JSON格式返回。注意错误处理、保密性、频率限制和数据验证,以确保安全和高效使用。