本記事の内容
前回に引き続いてUdemyのKubernetes Certified Application Developer (CKAD) with Testsというコースを受講していた中で気になったところをメモしていきます。
今回は以下のセクションに基づいています
#10 Helm Fundamental
勉強記
Helm
Helm は、「 Kubernetes 用に構築されたソフトウェアを検索、共有、使用するための最良の方法」と、公式サイトがランディングページで言っている。
実際にアプリを動かそうとすると、deployment.yaml, pb.yaml, pvc.yaml…などなど、かなりたくさんのファイルを作成してapplyする必要がある。
また、別環境を構築する際にこまごました設定を変更して立ち上げたいときは、それぞれのマニフェストファイルを編集し、さらにそれぞれapplyする必要がある。
この問題の解決策として、values.yamlという、必要なマニフェストファイルを1つのマニフェストファイルにまとめ、さらにそれを扱いやすいようにラッピングしているツールがhelmである。
helmはchartという単位で扱う。
以下がchartの例。詳細は公式を参照。
wordpress/
Chart.yaml # A YAML file containing information about the chart
LICENSE # OPTIONAL: A plain text file containing the license for the chart
README.md # OPTIONAL: A human-readable README file
values.yaml # The default configuration values for this chart
values.schema.json # OPTIONAL: A JSON Schema for imposing a structure on the values.yaml file
charts/ # A directory containing any charts upon which this chart depends.
crds/ # Custom Resource Definitions
templates/ # A directory of templates that, when combined with values,
# will generate valid Kubernetes manifest files.
templates/NOTES.txt # OPTIONAL: A plain text file containing short usage notes
templatesディレクトリ配下にテンプレートとなるマニフェストファイルが配置されている。
そこで使用する変数のデフォルト値がvalues.yamlに記載されている。
このvalues.yamlに記載されている値を直接編集するなり、helmコマンドで編集するなりして、理想の形へカスタマイズしていく。
↑はhelmのインストールコマンド。
当該講座の練習問題ではインストールする問題が出題されていた。
Kubernetesの公式ページにないから試験でインストールさせることはさすがになさそう。さすがにラビー。
helmコマンド
他の様々なコマンドと同様、-hをつければ使い方の詳細を確認できるが、ここで主要なサブコマンドを紹介する。
helm search
DockerにおけるDockerHubのように、HelmにもArtifactHubというchartが保存されているchartレポジトリが存在する。
ArtifactHub以外にも様々なchartレポジトリが存在する。
そのレポジトリを検索するのに使うコマンド。
helm search <repository name> <keyword>で検索できる。
ArtifactHubはデフォルトで使える特別なchartレポジトリっぽくて、はじめから
helm search hub <key word>で検索が可能。
他のchartレポジトリを検索したい場合は、次に紹介するコマンドを用いてあらかじめchartレポジトリを登録しておくと、
helm search repo <keyword>で追加したレポジトリ内での検索が可能となる。
helm repo
chartレポジトリに対して操作したいときに使うコマンド。
例えば、chartレポジトリを追加したい場合は、
helm repo add <repository name> <repository URL>
のようなコマンドを実行する。
helm install
helm install <release name> <chart name>で、chartレポジトリからchartをインストールする。
release nameは、利用者が名づけるインストールしたchartの名前。コマンドを打ったディレクトリの直下に<release name>ディレクトリが作成されて(wordpressと指定したらなwordpressディレクトリ)、chartが作成される。(と思うけど自信がない。)
→どうやら違っていて、クラスターにリリースとしてリソースをデプロイする(これをインストールと呼んでいるっぽい)けど、マニフェストファイルとかはローカルに保存しないっぽい。
helm installコマンド実行時のオプションとかの情報だけどっかに保存してるんやろなあ。
更新したいときはhelm upgradeとかを使って更新するっぽい。曖昧です。
release nameを変えると、同じchart nameのchartをもとにして作られたリリースでも別のリリースとして扱われる。
helm pull
chartをcloneしたいときはこのコマンドを使う。
デフォルトではアーカイブ形式でダウンロードされるため、大抵は–untarコマンドを使ってダウンロードすることになる。
で、ローカルに存在するchartからクラスターへデプロイ(helm用語で言うとインストール)するときは
helm install <releas name> <chart directory>とする。