Helm
このセクション用に環境を準備してください:
このワークショップでは主にKustomizeと対話しますが、EKSクラスターに特定のパッケージをインストールするためにHelmを使用する状況があります。このラボでは、Helmの簡単な紹介を行い、事前にパッケージ化されたアプリケーションをインストールする方法を示します。
このラボでは、独自のワークロード用のHelmチャートの作成については説明しません。このトピックの詳細については、ガイドを参照してください。
HelmはKubernetes用のパッケージマネージャーであり、Kubernetesアプリケーションの定義、インストール、アップグレードを支援します。Helmはチャートと呼ばれるパッケージングフォーマットを使用し、アプリケーションの実行に必要なKubernetesリソース定義がすべて含まれています。Helmを使用することで、Kubernetesクラスター上でのアプリケーションのデプロイと管理が簡素化されます。
Helm CLI
helm CLIツールは通常、Kubernetesクラスターと組み合わせて使用され、アプリケーションのデプロイとライフサイクルを管理します。これにより、異なる環境間でのアプリケーションデプロイの自動化と標準化が容易になります。
CLIはすでに私たちのIDEにインストールされています:
Helmチャートのインストール
サンプルアプリケーションのUIコンポーネントをKustomizeマニフェストではなく、Helmチャートを使用してインストールしてみましょう。Helmパッケージマネージャーを使用してチャートをインストールすると、そのチャートに対して新しいリリースが作成されます。各リリースはHelmによって追跡され、他のリリースとは独立してアップグレード、ロールバック、またはアンインストールすることができます。
まず既存のUIアプリケーションを削除しましょう:
次にチャートをインストールできます:
このコマンドを次のように分解できます:
- Helmにチャートのインストールを指示する
installサブコマンドを使用 - リリースに
uiという名前を付ける - 特定のバージョンでECR Publicにホストされているチャートを使用
- チャートを
ui名前空間にインストール - リリース内のPodが準備完了状態になるのを待機
チャートがインストールされたら、EKSクラスター内のリリースを一覧表示できます:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ui ui 1 2024-06-11 03:58:39.862100855 +0000 UTC deployed retail-store-sample-ui-chart-X.X.X
また、指定した名前空間で実行されているアプリケーションを確認できます:
NAME READY STATUS RESTARTS AGE
ui-55fbd7f494-zplwx 1/1 Running 0 119s
チャートオプションの設定
上記の例では、チャートをデフォルト設定でインストールしました。多くの場合、コンポーネントの動作を変更するためにインストール時にチャートに設定値を提供する必要があります。
インストール時にチャートに値を提供する一般的な方法は2つあります:
- YAMLファイルを作成し、
-fまたは--valuesフラグを使用してHelmに渡す --setフラグに続けてkey=valueペアを使用して値を渡す
これらの方法を組み合わせてUIリリースを更新してみましょう。次のvalues.yamlファイルを使用します:
podAnnotations:
my-annotation: my-value
app:
theme: orange
これにより、Podにいくつかのカスタムのkubernetes注釈が追加され、UIテーマが上書きされます。
多くのHelmチャートはレプリカ数やPod注釈などの一般的な側面を設定するための比較的一貫した値を持っていますが、各Helmチャートには独自の一意の設定セットがあります。特定のチャートをインストールおよび設定する際は、そのドキュメントで利用可能な設定値を確認する必要があります。
また、--setフラグを使用して追加のレプリカを追加します:
リリースを一覧表示します:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
ui ui 2 2024-06-11 04:13:53.862100855 +0000 UTC deployed retail-store-sample-ui-chart-X.X.X X.X.X
revision列が2に更新されていることがわかります。これは、Helmが更新された設定を個別のリビジョンとして適用したためです。これにより、必要に応じて以前の設定にロールバックすることができます。
特定のリリースのリビジョン履歴は次のように表示できます:
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Tue Jun 11 03:58:39 2024 superseded retail-store-sample-ui-chart-X.X.X X.X.X Install complete
2 Tue Jun 11 04:13:53 2024 deployed retail-store-sample-ui-chart-X.X.X X.X.X Upgrade complete
変更が反映されたことを確認するために、ui名前空間のPodを一覧表示します:
NAME READY STATUS RESTARTS AGE
ui-55fbd7f494-4hz9b 1/1 Running 0 30s
ui-55fbd7f494-gkr2j 1/1 Running 0 30s
ui-55fbd7f494-zplwx 1/1 Running 0 5m
現在3つのレプリカが実行されていることがわかります。また、Deploymentを調査することで注釈が適用されたことを確認できます:
my-annotation: my-value
[...]
リリースの削除
同様にCLIを使用してリリースをアンインストールすることもできます:
これにより、そのリリース用にチャートによって作成されたすべてのリソースがEKSクラスターから削除されます。
Helmの仕組みを理解したので、Fundamentalsモジュールに進みましょう。