Helm は、アプリケーションの展開、アップグレード、管理を自動化する Kubernetes 用の強力なパッケージ マネージャーです。Helm は、マイクロサービスの編成プロセスを簡素化することで、開発者が Kubernetes マニフェストの管理の複雑さを軽減しながら、アプリケーションをより効率的に拡張できるようにします。
Kubernetes マニフェストの作成に慣れている人なら、YAML を使用して複数のマニフェスト ファイルを作成するのがいかに面倒なことかご存じでしょう。最も基本的なアプリケーションでも、少なくとも 3 つのマニフェスト ファイルがあります。クラスターが大きくなるにつれて、構成は扱いにくくなります。Helm は、Kubernetes クラスターを管理するための開発者ツール ベルトの中で最も便利なツールの 1 つです。この記事では、Helm の基本機能について説明し、Kubernetes のデプロイメントを支援するために Helm をどのように使用できるかを説明します。
主要な取り組み




Helm とは何ですか?
Kubernetes アプリケーション用の Helm パッケージ マネージャーには、テンプレートとライフサイクル管理機能が含まれています。これは、チャートにグループ化された Kubernetes マニフェスト (デプロイメント、ConfigMap、サービスなど) 用のパッケージ マネージャーです。チャートは、Kubernetes 上でアプリケーションを作成およびデプロイするための Helm テンプレートです。
チャートは YAML で記述され、アプリ内の各リソースに関するメタデータ (ラベル、値など) が含まれます。チャートは単独で使用することも、他のチャートと組み合わせて複合チャートとして使用することもできます。複合チャートは、新しいアプリケーションを作成したり、既存のアプリケーションを変更したりするためのテンプレートとして使用できます。Helm では基本的に、さまざまな環境に対して 1 つのチャート バージョンを管理できます。
Helm アーキテクチャ
Helm は、次のコンポーネントで構成されるクライアント/サーバー アーキテクチャを使用します。
- Helm クライアント: クライアントは Helm のユーザー インターフェースです。新しいチャートを作成し、リポジトリを管理し、パッケージをリリースします。Helm クライアントは macOS と Linux にインストールでき、Chrome 拡張機能としても利用できます。開発者は、本番環境にリリースする前にアップグレードをテストするためにも Helm を使用します。
- Helm ライブラリ: Helm ライブラリは、クライアントが Kubernetes API サーバーと対話してチャートをインストール、アップグレード、またはロールバックするために使用するクライアント ライブラリのセットです。このツールはクラスター内のすべてのノードにインストールされ、チャートをインストールするために必要なコンポーネントです。
Helm チャートとは何ですか?
チャートは、Helm で使用されるパッケージ形式です。チャートには、Kubernetes マニフェスト ファイルに変換される YAML ファイルやテンプレートなど、アプリケーションを構成する Kubernetes オブジェクトを定義する仕様が含まれています。チャートは環境間で再利用できます。これにより、複雑さが軽減され、構成間の重複が最小限に抑えられます。Helm チャートには、次の 3 つの基本概念があります。
- チャート: Helm チャートは、Kubernetes リソースをプロビジョニングするための事前構成済みのテンプレートです。
- リリース: リリースは、デプロイされたチャートを表します。
- 倉庫: リポジトリは、チャートを保存するためのパブリックまたはプライベートの場所です。
Helm を使用する場合、開発者はリポジトリでチャートを検索します。 彼らはチャートをにインストールします Kubernetes クラスター、リリースを作成します。
Helm チャートの構造
Helm チャートのファイルとディレクトリには、それぞれ特定の機能があります。
YOUR-CHART-NAME/
|
|- charts/
|
|- templates/
|
|- Chart.yaml
|
|- values.yaml
チャート: charts ディレクトリには、メイン チャートが依存する他のチャートが含まれます。 XNUMX つのチャートが複数のチャートに依存する場合があります。 したがって、このディレクトリには複数のチャートが存在する場合があります。
テンプレ: このフォルダーには、チャートとともにデプロイされるマニフェストが保存されます。たとえば、サービス、構成マップ、シークレットを必要とするアプリケーションをデプロイするとします。この場合、ディレクトリには、deployment.yaml、service.yaml、config.yaml、および secrets.yaml が含まれます。これらの各ファイルは、values.yaml ファイルから値を取得します。
チャート.yaml: このファイルには、バージョン、名前、検索キーワードなどのメタ情報が含まれています。
値.yaml: チャートのデフォルト構成値。
Helmを使用する利点
開発者や DevOps チームは、複雑な Kubernetes デプロイメントを自動化する Helm の機能を高く評価しています。このツールにより、開発者や DevOps チームはより付加価値の高いタスクに集中できるようになります。このツールは非常にユーザーフレンドリーなので、特別なスキルや知識は必要ありません。ユーザー インターフェイスは直感的であるため、クラスターのデプロイメントを簡単に管理できます。
強力なセキュリティモデル
これは非常に安全なソリューションであり、信頼できるパッケージのみをクラスターにインストールできるようになります。
柔軟性
これは非常に柔軟でカスタマイズ可能なソリューションであり、Kubernetes クラスターにさまざまなパッケージを簡単にインストールできます。
大規模パッケージエコシステム
非常に大規模なパッケージのエコシステムを備えているため、探しているパッケージを見つけることができます。
コミュニティサポート
Helm は、大規模な開発者コミュニティによってサポートされているオープンソース ツールです。つまり、問題が発生した場合でも、十分なサポートとアドバイスが得られます。
Helmはデプロイメントを簡素化します
Helm チャートを使用すると、開発者は「ボタンをクリックする」だけで (または、コマンド ライン インターフェイスを使用している場合はコマンド経由で) Kubernetes リソースをプロビジョニングできます。さらに、このツールを使用すると、開発者はチャートの依存関係を他のチャートに含めることで複雑なデプロイメントを実行できます。
自動バージョン管理とロールバック機能
複数のデプロイメントにわたってバージョンを追跡することは困難な場合があります。Helm は、このタスクを自動的に処理します。このツールは、すべてのリリース名バージョンのデータベースを保持します。こうすることで、何か問題が発生した場合、開発者は以前のバージョンにロールバックできます。各デプロイメントで新しいバージョンが作成されるため、時間の経過とともに変更を簡単に追跡できます。デプロイメントで問題が発生した場合、安定したバージョンにロールバックするのは迅速かつ簡単で、システム パフォーマンスの中断の可能性を最小限に抑えることができます。
CI/CD統合
DevOps エンジニアは、このツールのシームレスな CI/CD パイプライン統合を気に入っています。Helm には、特定のアクションを実行するように構成できる統合フックが用意されています。たとえば、これらのフックは、インストールの開始前またはインストール後に動作するように構成できます。また、これらのフックを使用して、Helm デプロイメントのヘルス チェックを実行し、デプロイメントが成功したかどうかを確認することもできます。さらに、これらのフックは、特定の条件に基づいて自動テストまたはロールバックをトリガーできるため、チームは手動による介入を最小限に抑えて、堅牢で合理化されたデプロイメント パイプラインを維持できます。
Helm は開発者の生産性を向上します
前述したように、Helm チャートは共有できます。これらのテンプレートを使用すると、一般的なタスクのマニフェストを書き直すのに時間を費やす必要がなくなります。また、既存のテンプレートの 1 つに基づいて新しいチャートをすばやく生成することもできます。たとえば、特定のサービス アカウントで新しい Kubernetes アプリケーションを生成する場合、1 行のコードでこれを実行できます。これにより、同じタスクを処理するためにマニフェストを書き直す必要がなくなるため、チームが Kubernetes でスケーリングしやすくなります。
Helm は Kubernetes の学習曲線を滑らかにします
Kubernetes は、多くの機能と構成オプションを備えた複雑なツールです。学習曲線は圧倒的になる可能性があります。Helm を使用すると複雑さがなくなり、Kubernetes がより使いやすくなります。チャートをインストールするコマンド 1 つで Helm を使い始めることができます。また、ユーザーフレンドリーなグラフィカル インターフェイスもあります。パブリック リポジトリでチャートを検索して、ニーズに合ったチャートを見つけることができます。
プライベート リポジトリを使用すると、会社のエンジニアがチャートをアップロードして、他の従業員がインストールできるようにすることもできます。他のツールでは構成ファイルが必要な場合がありますが、Helm では宣言型のアプローチを使用します。必要な設定をすべて 1 つのファイルに指定してから、チャートをインストールできます。Helm を使用すると、自動更新と展開スケジュールを設定して、クラスターを最新のソフトウェアで最新の状態に保つこともできます。
展開中のアプリケーション構成
もう 1 つの際立った特徴は、デプロイメント中にアプリケーション構成を提供できることです。アプリケーションを構成する Kubernetes リソース (デプロイメント、サービスなど) を指定できるだけでなく、それらのリソースの環境固有の構成も指定できます。これにより、すべての環境で同じ Helm チャートを使用できるようになります。
「Helm は最も複雑な Kubernetes デプロイメントを自動化し、マイクロサービスのスケーリングを管理しやすくし、デプロイメント エラーの修正を容易にします。」
基本的なHelmチャートの作成
Helm チャートを作成するには、まずチャートを配置するディレクトリを作成する必要があります。次に、そのディレクトリに Helm ファイルを作成します。次の例は、Kubernetes クラスターにアプリケーションをデプロイする Helm チャートを作成する方法を示しています。
# mkdir my-app
# cd my-app
# helm init
# helm install --name my-app kubernetes/my-app
–name フラグは、インストール時にチャートに付ける名前を Helm に指示します。次の手順は、Helm チャートを構成することです。これを行うには、Helm ファイルと同じディレクトリに config/helm/my-app.yaml というファイルを作成します。次の例は、hello world という名前のアプリケーションをデプロイするように my-app チャートを構成する方法を示しています。
apiVersion: apps/v1beta1
kind: Deployment
metadata: config/helm/my-app.yaml
name: my-app
labels:
app: hello world
spec:
replicas: 1
template:
metadata:
labels:
app: hello world
spec:
containers:
-name: hello
image: kubernetes/hello
ports:
- containerPort : 80
この例の最初の行では、my-app オブジェクトの API バージョンを apps/v1beta1 に設定しています。 次の行は、グラフの種類を Deployment に設定します。 my-app チャートのメタデータは、ファイル config/helm/my-app.yaml に保存されます。
このファイルのラベルフィールドには、デプロイされるアプリケーションの名前が含まれ、仕様フィールドには、 アプリケーションの構成この場合、デプロイされるコンテナーは 80 つだけで、ポート XNUMX が開きます。このファイルの最後の行は、my-app チャートのテンプレートを設定し、Helm にアプリケーションの作成方法とデプロイ方法を指示します。
my-app チャートを実行するには、helm コマンドを使用できます。
# helm list
# helm deploy my-app
最初のコマンドは、現在システムにインストールされているすべてのチャートを一覧表示します。2 番目のコマンドは、my-app チャートを Kubernetes クラスターにデプロイします。Helm は、Kubernetes クラスターにアプリケーションをパッケージ化してデプロイするためのエレガントな方法を開発者に提供します。
Helm で Kubernetes ワークフローを効率化
Helm は、パッケージ管理を簡素化し、デプロイを自動化し、Helm のアップグレードとロールバックをプッシュすることで、Kubernetes ワークフローを効率化します。再利用可能なチャートにより、Helm は複雑さを軽減し、メトリックを統合し、環境間の一貫性を向上させ、開発者の時間を節約して、手動構成ではなくアプリケーションのスケーリングに集中できるようにします。単一のクラスターを管理する場合でも、複数のクラスターにまたがってスケーリングする場合でも、Helm の自動化機能により、Kubernetes の管理が容易になり、アプリケーションが効率的かつ確実にデプロイされます。Helm を DevOps パイプラインに統合すると、ワークフローが最適化され、全体的な生産性が向上します。
私たちのブログを購読する
このような記事をあなたの受信箱に直接お届けします