Helm入门


https://helm.sh/zh/docs/intro/using_helm/

概念

Helm 是 Kubernetes 的包管理器

  • Chart
    代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序、工具、服务所需的所有资源定义

  • Release
    运行在 Kubernetes 集群中的 chart 的实例

  • Repository
    是用来存放和共享 charts 的地方

cli命令

# 查找到公开可用的charts
helm search hub <chart>

# 从你所添加的仓库中查找chart
helm search repo <chart>

chart

  • chart安装、删除
# 下载、不安装
helm pull <chartrepo/chartname>

# 安装一个 helm 包
helm install <release> <chartname> # 从 chart 仓库安装
helm install <release> <chartname.tgz> # 从 tgz 安装

# 追踪 release 的状态
helm list
helm status <release>

# 升级
helm upgrade
# 回滚
helm rollback

# 移除指定 release
helm uninstall <release>
  • 制作chart

helm create <chartname>
# 打 tgz 包
helm package <chartname>

Chart 文件结构

chartname/
  Chart.yaml          # 包含了chart信息的YAML文件
  charts/             # 包含chart依赖的其他chart
  templates/          # 模板目录, 当和values 结合时,可生成有效的Kubernetes manifest文件
    _helpers.tpl		# 可复用的辅助模板
    deployment.yaml     # Kubernetes deployment模板
    service.yaml        # Kubernetes service模板
    configmap.yaml
  templates/NOTES.txt # 可选: 包含简要使用说明的纯文本文件
  values.yaml         # chart 默认的配置值
  values.schema.json  # 可选: 一个使用JSON结构的values.yaml文件
  crds/               # 自定义资源的定义
  LICENSE             # 可选: 包含chart许可证的纯文本文件
  README.md           # 可选: 可读的README文件

Chart.yaml

必输

apiVersion: chart API 版本 (必需)
name: chart名称 (必需)
version: 语义化2 版本(必需)
dependencies: # # chart 依赖列表
  - name: apache
    version: 1.2.3
    repository: https://example.com/charts
  - name: mysql
    version: 3.2.1
    repository: https://another.example.com/charts
......

charts/ 依赖文件

helm dependency update 

会使用你的Chart.yaml dependencies 依赖文件下载所有你指定的chart到你的charts/目录。

charts/
  apache-1.2.3.tgz
  mysql-3.2.1.tgz

templates/ 模板文件

所有模板文件存储在chart的 templates/ 文件夹。 当Helm渲染chart时,它会通过模板引擎遍历目录中的每个文件。

apiVersion: v1
kind: ReplicationController
metadata:
  name: deis-database
  namespace: deis
  labels:
    app.kubernetes.io/managed-by: deis
spec:
  replicas: 1
  selector:
    app.kubernetes.io/name: deis-database
  template:
    metadata:
      labels:
        app.kubernetes.io/name: deis-database
    spec:
      serviceAccount: deis-database
      containers:
        - name: deis-database
          image: {{ .Values.imageRegistry }}/postgres:{{ .Values.dockerTag }}
          imagePullPolicy: {{ .Values.pullPolicy }}
          ports:
            - containerPort: 5432
          env:
            - name: DATABASE_STORAGE
              value: {{ default "minio" .Values.storage }}

values.yaml 模板值

Values通过模板中.Values对象可访问的values.yaml文件

当用户提供自定义value时,这些value会覆盖chart的values.yaml文件中value。

imageRegistry: "quay.io/deis"
dockerTag: "latest"
pullPolicy: "Always"
storage: "s3"

values.schema.json 模板值验证

crds/

Kubernetes的 CustomResourceDefinition(CRD)自定义资源类型。

Helm渲染chart流程

Helm渲染chart
把values.yaml导入模板,通过模板引擎遍历目录中的每个文件。渲染模板
收集模板的结果并发送给Kubernetes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值