开源广进,用service catalog构造k8s服务能力中心
2020-02-27 913浏览
- 1.开源广进 用Service Catalog构造K8S服务能力中心
- 2.目录 • 什么是Open Service Broker API • 什么是Service Catalog • 什么是Service Broker • 服务能力中心的实践
- 3.什么是Open Service Broker API 2011 •V1 •VMware开源 •MySQL •PostgreSQL •RabbitMQhttps://github.com/openservicebrokerapi/servicebroker.gitMongoDB Redis 满足“12因子”应用中“应用 数据应存储在后端服务中” 2015 •增加异步服务创建 2013 2016 •v2 •将平台与服务提供解耦 •定义与平台无关的 ServiceBroker API •Google Cloud/Deis •OPEN ServiceBroker API •扩大使用范围
- 4.Open Service Broker API基本概念 • 应用平台(App Platform) • 应用托管平台(K8S、CF等),由应用平台承载的应用需要使用相关服务 • Service Broker • 平台与服务间的消息通道,用来管理服务平台 • 服务(Services): • 由服务平台提供的能力列表,MySQL、Hadoop等 • 套餐(Plan) • 服务平台与服务最终用户间约定的服务标准、能力指标,例如空间、性能、安 全等约束条件 • 服务实例(Service Instance) • 按照套餐约定向指定用户提供的服务实体,例如一个MySQL数据库,一个 YARN资源队列
- 5.Open Service Broker API基本流程 平台 获取服务列表 GET v2/catalog Service Broker 服务 返回服务信息(服务项、套餐等) 创建服务实例 PUT v2/service_instance/:id (异步)返回服务实例创建结果 与应用进行绑定 PUT v2/service_instance/:instance_id/service_binding/:id 创建/销毁/变更服务 实例 返回服务连接信息(IP、用户名、密码等) 删除服务实例或绑定 OSBA流程
- 6.Open Service Broker API基本流程 平台 获取服务列表 GET v2/catalog Service Broker 服务 信息集中展示 返回服务信息(服务项、套餐等) 创建服务实例 PUT v2/service_instance/:id 服务集中提供 (异步)返回服务实例创建结果 与应用进行绑定 PUT v2/service_instance/:instance_id/service_binding/:id 能力集中输出 创建/销毁/变更服务 实例 返回服务连接信息(IP、用户名、密码等) 删除服务实例或绑定 OSBA流程
- 7.Open Service Broker API基本流程 Service Broker 平台 Service Catalog 服务 Service Brokers 返回服务信息(服务项、套餐等) 调用API 创建服务实例 PUT v2/service_instance/:id 定义流程 提供界面 (异步)返回服务实例创建结果 提供API 执行任务 输出能力 与应用进行绑定 PUT v2/service_instance/:instance_id/service_binding/:id 创建/销毁/变更服务 实例 返回服务连接信息 删除服务实例或绑定 OSBA流程
- 8.目录 • 什么是Open Service Broker API • 什么是Service Catalog • 什么是Service Broker • 服务能力中心的实践
- 9.Service Catalog是K8S向前演进的一环 Kubernetes1.6 and the Open Source Roadmap - Aparna Sinha
- 10.OSB API在K8S中的实现-Service Catalog • 2016年9月成立Kubernetes Service Catalog SIG • 最新版本0.0.6 • Deis/steward项目
- 11.ServiceCatalog设计
- 12.运行ServiceCatalog 安装命令 $ helm install charts/catalog --name catalog --namespace catalog 注意设置几个参数 apiserver.image = quay.io/kubernetes-service-catalog/apiserver:canarycontrollerManager.image = quay.io/kubernetes-service-catalog/controller-manager:canaryapiserver.storage.type = etcd etcd_image = quay.io/coreos/etcd:latest$ helm install charts/catalog --name catalog --namespace catalog --set key=value[,key=value]https://github.com/kubernetes-incubator/service-catalog/tree/master/charts/catalog
- 13.ServiceCatalog基本概念 ServiceCatalog OSB API Application 部署在K8S中的程序包 Binding Binding 表示应用与服务实例之间的连接关系 Broker Broker 用来管理一组服务的实体 Credentials 应用连接服务的鉴权信息 Instance Service Instance 服务实例 Service Class Service 通过Broker提供的服务能力列表项 Plan Plan 套餐,用来标明服务特性的列表项https://github.com/kubernetes-incubator/service-catalog/blob/master/docs/design.md
- 14.关于鉴权信息向应用的注入 • 借助于K8S新发布的PodPreset特新来管理鉴权信息的注入 • 将用户信息与系统信息分离 • 简化Binding设计 • 方便提供多种注入方式
- 15.目录 • 什么是Open Service Broker API • 什么是Service Catalog • 什么是Service Broker • 服务能力中心的实践
- 16.Service Brokers是服务的中介 Service Catalog 统一 流程 OSBA Service Broker 个性 执行
- 17.如何开发一个Broker • 在CloudFoundry中给我们提供了足够的参考 •https://github.com/cloudfoundrycommunity?language=&page=2&q=broker&type=&utf8=%E2%9C%93• 当然也有更容易与K8S适配的方案 •https://github.com/openshift/open-service-broker-sdk• 如果你有一些Openshift的模板(openshift template) • 在openshift 3.6版本之后新增了一个template Service Broker • 如果你使用ansible来自动化你的日常工作 •https://github.com/fusor/ansible-service-broker
- 18.关于Service Catalog和Brokers的更多信息 • FROM Paul Morie @RedHat •https://github.com/pmorie/catalog-links
- 19.目录 • 什么是Open Service Broker API • 什么是Service Catalog • 什么是Service Broker • 服务能力中心的实践
- 20.传统服务交付效率不高 TASK 基础设施管 理员 开发者 系统管理员 准备服务器 30 准备存储和网络 30 工作任务排期 4 Days 安装操作系统 90 安装后检查 60 配置操作系统 120 安装应用运行时 180 配置应用程序 90 工作任务排期 5 Days 安全配置和扫描 安全管理员 TIME (MINS) 270 工期 12 hours 人日 10 Days
- 21.信息传递效率不高
- 22.需要交付的服务越来越多 存储 分析 预测
- 23.服务能力中心达成目标 自动化 规范化 自服务
- 24.为什么选择Open Service Broker API • Service Broker API在CloudFoundry中的成功应用 • BlueMix、pivotal.io通过Service Broker集成了众多服务 • 协议简单,易于实现,易于沟通 • 有众多适用于CF的Broker代码可以参考
- 25.使用流程 provision bind unbind deprovision Backing Service catalog provision Service bind Service Broker unbind Broker deprovision Service Instance1 设置服务发现 运行环境1 服务发现 服务凭证 app1 运行环境2 服务发现 服务凭证 Service Service Broker Service Broker PlatForm app2 Service Instance2
- 26.新增K8S资源 ● ● ● ● ● ● ● ● ● ● ● ● ● ● ● type type type … ... type type type Service struct {...} Pod struct {...} ReplicationController struct {...} create servciebroker create serviceinstance etcd Api Server ServiceBroker struct {...} BackingService struct {...} ServiceInstance struct {...} RunNodeController() RunScheduler() RunReplicationController() … ... RunServiceBrokerController() RunServiceInstanceController() update rc ServiceBorker Controller ServiceInstance Controller catalog provision bind Service Broker
- 27.Controller调用ServiceBroker API ● ServiceBrokerController ○ Fetch catalog (GET /v2/catalog) ● ServiceInstanecController ○ Provision instance (PUT /v2/service_instances/:id) ○ Creating binding (PUT /v2/service_instances/:id/service_bindings/:id) ■ Update RC ○ Remove binding (DELETE /v2/service_instances/:id/service_bindings/:id) ■ Update RC ○ Remove instance (DELETE /v2/service_instances/:id)
- 28.大数据服务ServiceBroker实现
- 29.应用与大数据服务编排 更新应用RC 增加服务环境变量 app1user:pass'>user:pass