学习 Helm 3

Posted by Zeusro on July 29, 2019
👈🏻 Select language

缘由

阿里云搞了个 云原生应用大赛 ,要求用 helm v3 提交代码,我就顺便提交几个 helm chart ,同时学学的 helm 的语法

语法

目前(2019-07-26) v3还没正式 release,文档很少,学习的时候只能拿旧的文档对照踩坑.

v2 跟 v3 的差别不小:

  1. 取消了服务端;
  2. helm list 改用secret;
  3. 很多命令已经不兼容,发生变化

学习 helm 的蛋疼之处在于要弄明白他们的模板语法,模板语法包含一些内置函数,还有 go template 相关的一类东西.

Variables Chart Development Tips and Tricks

提交的几个 chart

jekyll

hexo

codis

codis 花了比较多心血,大家给个辛苦费帮我在pr页面点赞吧~

kustomize 的不同

kustomize 一开始就是做成轻量级的 yaml 生成器,所以不存在服务端;

kustomize 的变量替换比较麻烦,需要用 json patch.

kustomize 没有控制流程,要高度定制比较麻烦.

Helm 3 把已安装的 chart 信息存作 type:helm.sh/release 的 secret ,于是乎, Helm 3 支持在多个 namespace 安装相同名称的 release

Reason

Alibaba Cloud launched a Cloud Native Application Competition, requiring submission of code using Helm v3. I took the opportunity to submit several Helm charts and learn Helm syntax at the same time.

Syntax

Currently (2019-07-26) v3 hasn’t been officially released yet, and documentation is scarce. When learning, you can only compare with old documentation and step on pitfalls.

The differences between v2 and v3 are significant:

  1. Server-side component removed;
  2. helm list now uses secrets;
  3. Many commands are no longer compatible and have changed.

The pain point of learning Helm is understanding their template syntax. Template syntax includes some built-in functions and things related to go template.

Variables Chart Development Tips and Tricks

Submitted Charts

jekyll

hexo

codis

I put a lot of effort into codis. Please give me a tip and help me like it on the PR page~

Differences from kustomize

kustomize was designed from the start as a lightweight YAML generator, so there’s no server-side component;

kustomize’s variable substitution is more troublesome and requires using JSON patch.

kustomize has no control flow, making high customization more difficult.

Helm 3 stores installed chart information as secrets of type type:helm.sh/release, so Helm 3 supports installing releases with the same name in multiple namespaces.

Причина

Alibaba Cloud запустил Конкурс облачных нативных приложений, требующий отправки кода с использованием Helm v3. Я воспользовался возможностью отправить несколько Helm charts и одновременно изучить синтаксис Helm.

Синтаксис

В настоящее время (2019-07-26) v3 еще не был официально выпущен, и документации мало. При изучении вы можете только сравнивать со старой документацией и наступать на подводные камни.

Различия между v2 и v3 значительны:

  1. Серверный компонент удален;
  2. helm list теперь использует секреты;
  3. Многие команды больше не совместимы и изменились.

Боль при изучении Helm заключается в понимании их синтаксиса шаблонов. Синтаксис шаблонов включает некоторые встроенные функции и вещи, связанные с go template.

Variables Chart Development Tips and Tricks

Отправленные Charts

jekyll

hexo

codis

Я вложил много усилий в codis. Пожалуйста, дайте мне чаевые и помогите мне поставить лайк на странице PR~

Отличия от kustomize

kustomize был разработан с самого начала как легковесный генератор YAML, поэтому нет серверного компонента;

Замена переменных в kustomize более хлопотная и требует использования JSON patch.

kustomize не имеет потока управления, что затрудняет высокую настройку.

Helm 3 хранит информацию об установленных charts как секреты типа type:helm.sh/release, поэтому Helm 3 поддерживает установку релизов с одинаковым именем в нескольких пространствах имен.



💬 讨论 / Discussion

对这篇文章有想法?欢迎在 GitHub 上发起讨论。
Have thoughts on this post? Start a discussion on GitHub.

在 GitHub 参与讨论 / Discuss on GitHub