忘れたとき読んだらキュンです!――Helmチャートの作成方法とリポジトリ公開方法:Cloud Nativeチートシート(4)
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する連載。今回は、Helmチャートを作成して、リポジトリに公開する方法などについて。
Kubernetesやクラウドネイティブをより便利に利用する技術やツールの概要、使い方を凝縮して紹介する本連載「Cloud Nativeチートシート」。
前回は概要や使い方といった、ユーザー目線でKubernetes向けのパッケージマネジャー「Helm」(ヘルム)を紹介しましたが、今回はHelmチャートを作成して、リポジトリに公開する方法など提供者目線で紹介します。
目次
チャートを作成する利点
前回紹介したように、Helmでは「チャート」という設定ファイル群でKubernetesの全てのマニフェストを管理します。公開されているリポジトリからチャートをカスタマイズしながらインストール(デプロイ)できます。それに加えて、自身のアプリケーションをチャートとして公開することもできます。
公開することで、自身のアプリケーションを稼働させるために必要なリソース群を、第三者のユーザーにも容易に一括でデプロイし管理してもらうことができます。また、環境によってカスタマイズしてほしい箇所のみを「values.yaml」として切り出すことができます。これらによって、より広くアプリケーションの活用を促すことができます。
チャートの要素を取得
前回記事最後の補足で、チャートについて簡単に説明しました。
チャートの実体は「.tgz」形式で圧縮された複数ファイル群です。詳しくは次回、チャート作成を説明する際に解説しますが、tgzを解凍すると、チャートには環境共通のKubernetesリソースYAMLのテンプレートを配置する「templates」ディレクトリ、テンプレート内で変数化されているパラメーターのデフォルト値を定義するYAMLファイル(values.yaml)などが含まれます。
もう少し詳しくファイルの構成を見ていきましょう。「helm create」コマンドでサンプルのチャートを作成できるので確認します。
$ helm create test-chart Creating test-chart $ tree test-chart/ test-chart/ ├── values.yaml ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ └── tests │ └── test-connection.yaml ├── Chart.yaml └── charts
ディレクトリやファイルが幾つか作成されたのを確認できました。それぞれの要素を説明します。
values.yaml―−マニフェストテンプレート内で使う変数の定義
「values.yaml」にはマニフェストテンプレート内で使う変数(後述)の定義が記載されています。
前回説明した通り、Helmでは「パラメーター」として定義されている値を指定することで、それぞれの利用者の環境向けにカスタマイズできます。例えば、「Deployment」のレプリカ数を変更したり、デプロイされるコンポーネントをコンポーネントごとに有効/無効にしたりするなどのカスタマイズが挙げられます。
templatesディレクトリ――Kubernetesリソースのマニフェストテンプレートを配置
「templates」ディレクトリ下には主にKubernetesリソースのマニフェストテンプレートを配置します。テンプレートとは、言葉の通り、最終的にKubernetesに送られるマニフェストの元となるファイルです。テンプレートのベースはマニフェストYAMLですが、要所を変数化しておくことで後からカスタマイズ可能にしておきます。
helmコマンド実行時にテンプレートエンジンに送られ、values.yaml内の変数定義を展開して、最終的なマニフェストが生成され、最終的にKubernetesに送信されます。
※「NOTES.txt」とファイル名が「_」から始まるファイル(ヘルパーファイル)はテンプレートエンジンには送られません。
templatesディレクトリには、下記のようにマニフェストテンプレートなど数種類のファイルが含まれています。
├── templates │ ├── NOTES.txt # helm install/upgrade時のNOTES:定義 │ ├── _helpers.tpl # ヘルパーファイル │ ├── deployment.yaml # マニフェストテンプレート │ ├── hpa.yaml # マニフェストテンプレート │ ├── ingress.yaml # マニフェストテンプレート │ ├── service.yaml # マニフェストテンプレート │ ├── serviceaccount.yaml # マニフェストテンプレート │ └── tests # helm testコマンドで実行されるtest用のリソース定義 │ └── test-connection.yaml
ここからそれぞれのファイルについて説明します。
マニフェストテンプレートの概要
関連記事
- レッドハット、OpenShiftの進化と日本市場における取り組みを説明
レッドハットは2020年5月19日、日本の報道関係者やアナリストに向けて、2020年4月末の「Red Hat Summit 2020」における発表内容や日本市場での取り組みについて説明した。本記事ではOpenShift 4.4の新機能についても取り上げる。 - Kubernetesを手元で試せる「Minikube」「MicroK8s」とは
「コンテナ技術」やコンテナ実行環境の「Docker」、大量のコンテナ管理や負荷分散を実現する「Kubernetes」について概要から本番活用の仕方まで解説する「これから始める企業のためのコンテナ実践講座」。第4回は、Kubernetesのパッケージマネジャー「Helm」と手元で試せる「Minikube」「MicroK8s」を紹介します。 - KubernetesとCNCFの、デベロッパーエクスペリエンス改善への取り組み
アプリケーション開発者およびアプリケーション運用者にとってのKubernetesの使い勝手に関する課題は、KubeCon + CloudNativeCon 2018でも多くの参加者が口にしている。KubernetesコミュニティーとCNCFはどう対応しようとしているか。
Copyright © ITmedia, Inc. All Rights Reserved.