Step to Helm in Prod
k8sエコシステム自習。 ソフトウェアの実行環境をコンテナに閉じ込めて連携をk8sマニフェストで記述するようになった。 そうなると連携設定でのミスというか整合性が問題になる。 それを可変部分を切り出してパッケージのように扱えるように Helm が助けてくれた。 前も書いたけど v3 では Tiller の支援なしでパッケージインストールのような世界が実現されている。 目的を達成するために寄り道がないというわけでとても嬉しい。
本番導入でしたを確認した。
- 対象の抽象化レイヤをバージョン管理されたテキストコードとして扱えるか?
- CDパイプラインに載せるのは簡単か?
- 安全にアップデート可能か?
ぜんぶ解決されている。
1つめは自作で問題ないけど Helmfile がある。
2つめもビルド用のコンテナイメージを作ればいいけど、やはりGCPにコミュニティ提供のビルダーがある。
3つめは helm update
サブコマンドを確認できたので、レプリカ数に気をつければ適切に運用できる。というわけで Helm はとても嬉しいツールと結論づけた。
2つめについてはメモすることは何もない。
3. Update
メモだけ。 upgrade サブコマンドを使って対象リリースをアップデートできる。 ここではバージョンのダウングレードを指定したが –set,–set-file,–reuse-values,–reset-values と設定変更のオプションが役に立ちそう。 –reuse-values,–reset-values が過去の設定値の使い回し、廃棄を指定するオプション。 使い回す場合は、コマンドで指定した値にマージされるとのこと。
|
|
1. Helmfile
Brewfile的な感じでHelmfileというツールがある。
設定ファイルはyamlを生成するGoテンプレートとして書く。
helmfile sync
で関連リソースを全て同期する。 –file で指定しないと helmfile.d/*.yml が対象となるらしい。
書き方はREADME.mdの具体例でだいたい理解できる。 freeeの記事も参考にした。 適当にしたみたいにして実行してみた。 values.yaml を参照してるのでそこにファイルが必要。
|
|
属性 | 用途 |
---|---|
releases | リリース対象の定義を列挙する |
environments | 環境毎に定義する項目を辞書として記述する |
repositories | Helmリポジトリの定義を記載する |
helmDefaults | valuesのデフォルト値 |
helmfiles | releaseの適用前に実施されるhelmfileを記載する |
base | 書いたhelmfileの継承元helmfileでマージされる |
|
|
めでたしめでたし。