- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Kubernetes Application Management Based on Helm and Operator
展开查看详情
1 . Kubernetes Application Management Based on Helm and Custom Controller Peng Jiang/ Rancher Labs Inc.
2 .Agenda • Helm介绍 • Rancher基于Helm的Catalog实现
3 .应用容器化改造及部署 应用容器化 - 完成! K8S集群部署 - 完成!
4 .如何管理容器化的应用系统? Deployment ServiceAccount RoleBinding Role PersistentVolumeClaim Secrets Configmap Service Ingress Statefulset ?
5 .解决方案? • Kubernetes下的包管理工具(类似 于apt/pip/brew) • 将应用部署包含的多种Kubernetes 资源对象整合成单一对象(Chart) • 模板提供默认部署配置,部署时可 以进行变量替换修改 • 生命周期管理能力,升级、回滚、 版本追踪 • Helm repo预置提供易于部署的多 种应用
6 .Helm的发展历史 • 2015/10/15日,Deis公司内部的Hackathon项目 • 最早期的版本使用Python Jinja作为模板语言 • 最初的组件名称:k8splace, kpm, k3(kay cube) • 用于Deis平台内部的工作流安装部署 • 在2015年11月旧金山的Kubecon正式公布 • 前期属于Kubernetes项目之下的子项目 • 2018年6月1日正式成为托管在CNCF之下的独立 项目
7 .Helm架构 核心概念:Helm、Tiller、Charts • Helm的核心组件 – Helm Client – Tiller Server • Helm Client是用户使用的CLI工具 – Go语言开发,通过gRPC和Tiller Server交互 – 将Charts和Values发送给Tiller Server进行部署、升级等操作 • Tiller Server – 运行在k8s集群之上 – 与Helm CLI和K8s API Server进行交互 – 管理应用包(chart)的部署实例(release)
8 .Helm架构(续)
9 .如何安装使用? • 安装部署 – Helm.sh • 使用 – $helm init #安装Tiller – $helm install <chart> #部署应用 – $helm upgrade <release> – $helm delete <release> – …
10 .Chart • 应用的定义描述 • 包含 – Metadata – K8S 资源定义 – 文档说明 • 有规范的命名及结构,包括文件和目录名 • 存在chart仓库中,可以保存为tar包进行分发
11 .Chart目录结构 • $helm create demoapp
12 .Chart.yml - 元数据
13 .Templates – 模板 + Go template
14 .Values.yml – 配置选项
15 .Values.yml – 配置选项 $ helm install --set image.tag=latest ./demoapp $ helm install -f stagingvalues.yaml ./demoapp
16 .文档说明 • README.md一般用于 Chart提供的应用及服务介 绍,部署前提条件说明, values.yaml中的变量说明 等。 • NOTES.txt会在部署后显示, 可以用于向chart的使用者 提示使用说明,下一步操 作等信息。
17 .应用依赖 • 在requirements.yaml中声 明依赖 • Helm dependency update 或者手工创建、拷贝依赖 chart到charts子目录
18 .Chart仓库 • HTTP 服务器 • 提供 index.yaml索引文件和打包的charts – https://kubernetes-charts.storage.googleapis.com/ $ helm serve 例如 https://example.com/charts 的仓库目录结构
19 .Release管理 • 在 Kubernetes 集群上运行的 Chart 的实例 – Release.Name – Release.Namespace – Release.IsInstall – Release.IsUpgrade • 对应Kubernetes资源对象的命名 releasename- chartname
20 .Release管理 • Release的版本管理 • Helm delete --purge删除release对象
21 .Monocular - Helm Web UI • https://github.com/kubernetes-helm/monocular https://github.com/kubeapps/kubeapps
22 .Helm的用途总结 • 利用已有的Chart快速部署进行实验 • 创建自定义Chart,方便地在团队间共享 • 便于管理应用的生命周期 • 便于应用的依赖管理和重用 • 将K8S集群作为应用发布协作中心
23 .Helm的限制 • 多租户环境下不便于实现权限控制和隔离: – 无内建认证授权机制,应用以Tiller运行使用的权限部署 – Release对象集中存储在Tiller运行的namespace之下
24 .Rancher 2.0
25 .Architecture
26 .Rancher 2.0 Catalog • 基于标准的Helm规范进行增强 • 更好的用户使用体验 • 支持git和http/s server • Rancher负责追踪和管理应用创建的资源对象
27 .Catalog Architecture
28 . Rancher 2.0 Charts目录结构 Repo: https://github.com/rancher/charts
29 .Question.yaml • Go模板语言 • 变量的高级参数定义 – Group – Description – Label – Type – Min/Max – Condition – ……