🥁HELM

type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary

some basic concepts

chart
  • one helm package
  • it containers all resources definitions necessary to run one application, tool, or service inside of a k8s cluster
repository
  • one place where charts can be collected and shared
release
  • one instance of a chart running in k8s clutster
 
当我们理解这些概念,我们脑海中可以有这样的印象
  • 如果我们想要找charts,可以去chart的仓库,即repository
  • 当我们找到对应的charts后,我们去安装charts,即将charts中的资源部署到 k8s集群中,这样就产生了一个release
 

quickStart

 

go template语法

简单讲讲 go的template语法,这对后续看helm的chart文件很有帮助
1. 基础语法理解
  • 你需要熟悉 Go Template 的基本语法,例如变量定义、管道、条件判断和循环等,这些是 Helm 模板中最常用的语法。例如:
  • 如何通过 {{ .Values.key }} 访问变量
  • 使用 {{ if }}, {{ range }}, {{ with }} 等控制结构来处理数据和逻辑
2. 管道操作
  • Helm 模板中管道 (|) 用得很多。管道可以将一个表达式的输出传递给下一个函数,这是 Helm 模板中的重要特性。常见用法包括:
  • 使用 default 设置默认值:{{ .Values.image.repository | default "nginx" }}
  • 使用 quote、upper 等内置函数进行字符串处理。
3. 模板嵌套与文件分割
  • 在 Helm 中通常会将模板分散到多个文件,因此了解 template 和 define 的用法很重要。Helm 使用 include 和 required 来嵌套调用模板和判断关键值
4. 错误处理
  • 了解 required 函数,这在 Helm 中用于确保必需的值被传递进来:
5. 理解 Helm 特有的扩展
  • 除了 Go Template 的基础语法,Helm 还增加了一些自己定义的模板函数,例如 lookup、tpl 等。这些函数的使用和 Helm 的上下文机制有关,理解这些函数的用途会对编写 Helm 模板有帮助。
 

深入讲解

customize your Chart before installing

若想在update、install时自定义,可以有以下方式配置(优先级从低到高
  1. Chart自带的value.yaml
    1. 使用-f 指定的自定义values.yaml 文件,按顺序加载,在后面的文件优先级更高
      1. 命令行—set的参数
        1. 命令行—set-file的参数。当你想倒入一个大文本文件作为配置项时,比—set和values.yaml优先级更高
           
           

          —set的使用

           

          Crete your own Charts

           
          • NOTES.txt是chart的帮助文本,helm install的提示信息就是来自这里
          • _helper.tpl描述了chart可以复用的模版对象
          • values.yaml 将记录的值传给chart,进行模版渲染
           
          可以用—debug—dry-run 观察模版是如何渲染的
          具体内容
          访问
          notion image
           

          版本迭代控制

          chart的每次安装或升级都会创建新的release版本,可以看chart.yaml 的描述,看到就的版本信息。
          回滚到指定版本
          版本历史数据保留
          备份恢复
           

          helm的资源构建顺序

          具体顺序
          • Namespace
          • NetworkPolicy
          • ResourceQuota
          • LimitRange
          • PodSecurityPolicy
          • PodDisruptionBudget
          • ServiceAccount
          • Secret
          • SecretList
          • ConfigMap
          • StorageClass
          • PersistentVolume
          • PersistentVolumeClaim
          • CustomResourceDefinition
          • ClusterRole
          • ClusterRoleList
          • ClusterRoleBinding
          • ClusterRoleBindingList
          • Role
          • RoleList
          • RoleBinding
          • RoleBindingList
          • Service
          • DaemonSet
          • Pod
          • ReplicationController
          • ReplicaSet
          • Deployment
          • HorizontalPodAutoscaler
          • StatefulSet
          • Job
          • CronJob
          • Ingress
          • APIService
           
           

          ref

          • some tricks to use helm
          • quick-start helm
          • detailed Explanation in chart
           
          Prev
          LVM
          Next
          在mac中,如何将标准输出保存到剪切板中
          Loading...
          Article List