helm
文章
01 简介
Helm1 简介概念Helm 是 Deis 开发的一个用于 Kubernetes 应用的包管理工具,主要用来管理 Charts。 类似于:Ubuntu 中的 APT、CentOS 中的 YUM。主要功能: 创建:创建新的charts 打包:将charts打包成tgz文件 交互:与chart仓库交互 安装:安装和卸载K8s的应用 管理:管理使用Helm安装的charts的生命周期 2 安装与仓库前置条件 kubernets集群 安装配置helm 安装1curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash 自动补全123#设置命令自动补全echo 'source <(helm completion bash)' >> /etc/profile. /etc/profile #重载环境变量 配置helm仓库123456789#查看其仓库信息helm repo listNAME URL ...
02 模板语法GoTemplate
## **Go语言的模板引擎** Go语言内置了文本模板引擎text/template和用于HTML文档的html/templant. 它们的作用机制可以简单归纳如下: 1. 模板文件通常定义为.tmpl和.tpl为后缀(也可以使用其他后缀), 必须使用utf-8编码. 2. 模板文件中使用{{和}}包裹和标识需要传入的数据. 3. 传给模板这样的数据就可以通过点号(.)来访问,如果数据是复杂类型的数据, 可以通过{{.FieldName}}来访问它的字段. 4. 除{{和}}包裹的内容外, 其他内容均不做修改原样输出. --- ## 模板引擎的使用 Go语言模板引擎的使用可以分文三部分: 定义模板文件/解析模板文件/渲染模板文件 > 定义模板文件 其中, 定义模板文件时需要我们按照相关语法规则去编写, 后文会详细介绍. > 解析模板文件 上面定义好了模板文件之后,可以使用下面的常用方法去解析模板文件, 得到模板对象: 123func (t...
03 Helm命令
HelmChart命令创建一个新chart: 12$ helm create mychartCreated mychart/ 打包成一个chart存档: 12$ helm package mychartArchived mychart-0.1.-.tgz 找到chart的格式或信息的问题: 12$ helm lint mychartNo issues found
04 Chart构建
## 1 Values和templates ### 定义values * `values.yaml` 的文件。这个文件包含了默认值。 * 在命令行使用 `helm install`命令时提供。当用户提供自定义value时,这些value会覆盖chart的 `values.yaml`文件中value。Helm安装命令允许用户使用附加的YAML values覆盖这个values: 1$ helm install --generate-name --values=myvals.yaml wordpress ### 子Chart的value值 12345678title: "My WordPress Site" # Sent to the WordPress templatemysql: max_connections: 100 # Sent to MySQL password: "secret"apache: port: 8080 # Passed to Apache > 子chart不能访问父级chart,所以MySQL无法...
05 Hook顺序
## 简介 Helm 提供了一个 *hook* 机制允许chart开发者在发布生命周期的某些点进行干预。 * 安装时在加载其他chart之前加载配置映射或密钥 * 安装新chart之前执行备份数据库的任务,然后在升级之后执行第二个任务用于存储数据。 * 在删除发布之前执行一个任务以便在删除服务之前退出滚动。 ### 常用钩子 | 注释值 | 描述 | | ----------------- | ---------------------------------------------- | | `pre-install` | 在模板渲染之后,Kubernetes资源创建之前执行 | | `post-install` | 在所有资源加载到Kubernetes之后执行 | | `pre-delete` | 在Kubernetes删除之前,执行删除请求 | | `post-delete` | 在...
06 Test测试
测试test 在helm chart中放在 templates/目录,并且是一个指定了容器和给定命令的任务。如果测试通过,容器应该成功退出 (exit 0) 任务的定义必须包含helm测试钩子的注释:helm.sh/hook: test。 使用场景 验证你values.yaml文件中的配置可以正确注入。 确保你的用户名和密码是对的 确保不正确的用户名和密码不会工作 判断你的服务只启动的并且正确地负载均衡
07 Common模板
## 使用 为了能使用公共代码,我们需要添加一个 `common`依赖。在 `demo/Chart.yaml`文件最后啊添加以下内容: 1234dependencies:- name:commonversion:"^0.0.5"repository:"https://charts.helm.sh/incubator/" 使用辅助chart中的公共代码。首先编辑负载文件 `demo/templates/deployment.yaml`如下: 123456789101112131415{{- template "common.deployment" (list . "demo.deployment") -}}{{- define "demo.deployment" -}}## Define overrides for your D...
08 Template模板
## 内置对象 * `Release`: `Release`对象描述了版本发布本身。包含了以下对象: * `Release.Name`: release名称 * `Release.Namespace`: 版本中包含的命名空间(如果manifest没有覆盖的话) * `Release.IsUpgrade`: 如果当前操作是升级或回滚的话,该值将被设置为 `true` * `Release.IsInstall`: 如果当前操作是安装的话,该值将被设置为 `true` * `Release.Revision`: 此次修订的版本号。安装时是1,每次升级或回滚都会自增 * `Release.Service`: 该service用来渲染当前模板。Helm里始终 `Helm` * `Values`: `Values`对象是从 `values.yaml`文件和用户提供的文件传进模板的。默认为空 * `Chart`: `Chart.yaml`文件内容。 `Chart.yaml`里的所有数据在这里都可以可访问的。比如 `{{ .Chart.Name &...












