缘由
阿里云搞了个 云原生应用大赛 ,要求用 helm v3 提交代码,我就顺便提交几个 helm chart ,同时学学的 helm 的语法
语法
目前(2019-07-26) v3还没正式 release,文档很少,学习的时候只能拿旧的文档对照踩坑.
v2 跟 v3 的差别不小:
- 取消了服务端;
- helm list 改用secret;
- 很多命令已经不兼容,发生变化
学习 helm 的蛋疼之处在于要弄明白他们的模板语法,模板语法包含一些内置函数,还有 go template 相关的一类东西.
Variables Chart Development Tips and Tricks
提交的几个 chart
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:
- Server-side component removed;
- helm list now uses secrets;
- 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
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.
理由
阿里雲がクラウドネイティブアプリケーションコンテストを開催し、Helm v3を使用してコードを提出する必要がありました。機会を利用して、いくつかのHelmチャートを提出し、同時にHelmの構文を学びました。
構文
現在(2019-07-26)v3はまだ正式にリリースされておらず、ドキュメントは少ないです。学習する際は、古いドキュメントと比較して、落とし穴を踏むしかありません。
v2とv3の違いは大きいです:
- サーバー側コンポーネントが削除されました;
- helm listはシークレットを使用するようになりました;
- 多くのコマンドが互換性がなくなり、変更されました。
Helmを学習する際の痛みは、テンプレート構文を理解することです。テンプレート構文には、いくつかの組み込み関数とgo templateに関連するものが含まれます。
Variables Chart Development Tips and Tricks
提出したチャート
codisには多くの努力を費やしました。PRページでいいねを押して、チップをください〜
kustomizeとの違い
kustomizeは最初から軽量のYAMLジェネレーターとして設計されているため、サーバー側コンポーネントはありません;
kustomizeの変数置換はより面倒で、JSONパッチを使用する必要があります。
kustomizeには制御フローがないため、高度なカスタマイズがより困難です。
Helm 3は、インストールされたチャート情報をtype:helm.sh/releaseタイプのシークレットとして保存するため、Helm 3は複数のネームスペースで同じ名前のリリースをインストールすることをサポートします。
Причина
Alibaba Cloud запустил Конкурс облачных нативных приложений, требующий отправки кода с использованием Helm v3. Я воспользовался возможностью отправить несколько Helm charts и одновременно изучить синтаксис Helm.
Синтаксис
В настоящее время (2019-07-26) v3 еще не был официально выпущен, и документации мало. При изучении вы можете только сравнивать со старой документацией и наступать на подводные камни.
Различия между v2 и v3 значительны:
- Серверный компонент удален;
- helm list теперь использует секреты;
- Многие команды больше не совместимы и изменились.
Боль при изучении Helm заключается в понимании их синтаксиса шаблонов. Синтаксис шаблонов включает некоторые встроенные функции и вещи, связанные с go template.
Variables Chart Development Tips and Tricks
Отправленные Charts
Я вложил много усилий в 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.