Kubernetes における Helm とは

Kubernetes の Helm とは?

Helm は、インストール、構成、および管理を簡素化する展開ツールです。 Kubernetes クラスター。 Kubernetes マニフェストの作成に精通している人なら、 ヤムル. 最も基本的なアプリケーションでも、少なくとも 3 つのマニフェスト ファイルがあります。 クラスターが大きくなるにつれて、構成が扱いにくくなります。 Helm は、開発者が Kubernetes クラスターを管理するためのツール ベルトの中で最も便利なツールの XNUMX つです。 この記事では、Helm の基本的な機能を調べて、Kubernetes のデプロイを支援するために Helm をどのように使用できるかを理解してもらいます。 

ヘルムの紹介

ヘルメット テンプレートとライフサイクル管理機能を含む Kubernetes アプリケーションのパッケージ マネージャーです。 基本的には、チャートにグループ化された Kubernetes マニフェスト (Deployment、ConfigMap、Service など) のパッケージ マネージャーです。 チャートは、Helm を使用して Kubernetes でアプリケーションを作成およびデプロイするための単なるテンプレートです。 グラフは YAML で記述され、アプリ内の各リソースに関するメタデータ (ラベル、値など) が含まれています。 チャートは単独で使用することも、他のチャートと組み合わせて複合チャートにすることもできます。複合チャートは、新しいアプリケーションを作成したり、既存のアプリケーションを変更するためのテンプレートとして使用できます。 Helm では基本的に、環境の XNUMX つのチャートを管理できます。

ヘルム アーキテクチャ

Helm は、次のコンポーネントで構成されるクライアント/サーバー アーキテクチャを使用します。

  • Helm クライアント: クライアントは、Helm へのユーザー インターフェイスです。 新しいチャートの作成、リポジトリの管理、およびパッケージのリリースに使用されます。 Helm クライアントは、macOS と Linux の両方にインストールできます。 Chrome拡張機能としても利用できます。 開発者は、ヘルプを使用して、アップグレードを本番環境にリリースする前にテストすることもできます。
  • ヘルム ライブラリ: Helm ライブラリは、クライアントが Kubernetes API サーバーとやり取りしてチャートをインストール、アップグレード、またはロールバックするために使用するクライアント ライブラリのセットです。 ツールはすべてにインストールされます クラスタ内にあり、チャートをインストールするための必須コンポーネントです。

Helm チャートとは

Chart は Helm で使用されるパッケージ形式で、Kubernetes マニフェスト ファイルに変換される YAML ファイルやテンプレートなど、アプリケーションを構成する Kubernetes オブジェクトを定義する仕様が含まれています。 チャートは環境間で再利用できます。 これにより、複雑さが軽減され、構成全体での重複が最小限に抑えられます。 Helm チャートには XNUMX つの基本概念があります。

  1. チャート: Helm チャートは、Kubernetes リソースをプロビジョニングするための事前構成済みのテンプレートです。
  2. リリース: リリースは、展開されたチャートを表します
  3. 倉庫: リポジトリは、チャートを保存するための公開または非公開の場所です。

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 の機能を高く評価しています。 このツールにより、従業員は解放され、より付加価値の高いタスクに集中できます。 このツールは非常に使いやすいため、使用するのに特別なスキルや知識は必要ありません。 ユーザー インターフェイスは直感的であるため、クラスターの展開を簡単に管理できます。 

強力なセキュリティ モデル

これは、信頼できるクラスターにのみパッケージをインストールできるようにする、非常に安全なソリューションです。

柔軟性

これは非常に柔軟でカスタマイズ可能なソリューションであり、Kubernetes クラスターにさまざまなパッケージを簡単にインストールできます。 

大型パッケージ エコシステム

パッケージの非常に大きなエコシステムがあり、探しているパッケージを確実に見つけることができます。

コミュニティ支援

Helm は、それをサポートする開発者の大規模なコミュニティを持つオープン ソース ツールです。 つまり、問題が発生した場合に、多くのサポートとアドバイスが得られるということです。

Helm はデプロイを簡素化します

Helm チャートは、「ボタンをクリックする」だけで (またはコマンド ライン インターフェイスを使用している場合はコマンドを介して) Kubernetes リソースをプロビジョニングする機能を提供します。 さらに、このツールを使用すると、開発者はチャートを依存関係として他のチャート内に含めることで、複雑な展開を実行できます。

自動バージョン管理

展開全体でバージョンを追跡することは、困難な場合があります。 Helm は、このタスクを自動的に処理します。 このツールは、すべてのリリース バージョンのデータベースを保持しています。 そうすれば、何か問題が発生した場合、開発者は簡単に以前のバージョンにロールバックできます。 

CI/CD統合

DevOps エンジニアは、CI/CD パイプラインとのツールのシームレスな統合を楽しんでいます。 Helm は、特定のアクションを実行するように構成できる統合フックを提供します。 たとえば、これらのフックは、インストールの開始前またはインストール後に動作するように構成できます。 これらのフックを使用して、Helm デプロイでヘルス チェックを実行し、デプロイが成功したかどうかを確認することもできます。

Helm で開発者の生産性が向上

前述したように、ヘルム チャートは共有できます。 これらのテンプレートは、一般的なタスクのマニフェストを書き直すのに時間を費やす必要がないことを意味します。 それらを使用して、既存のテンプレートの XNUMX つに基づいて新しいグラフをすばやく生成することもできます。 たとえば、特定のサービス アカウントを使用して新しい Kubernetes アプリケーションを生成する場合、XNUMX 行のコードでこれを行うことができます。 これにより、同じタスクを処理するためにマニフェストを書き直す必要がないため、チームは Kubernetes で簡単にスケーリングできます。

Helm は Kubernetes の学習曲線をスムーズにします

Kubernetes は、多くの機能と構成オプションを備えた複雑なツールです。 学習曲線は圧倒される可能性があります。 Helm を使用すると、複雑さが解消され、Kubernetes がより親しみやすくなります。 XNUMX つのコマンドで Helm の使用を開始して、チャートをインストールできます。 また、ユーザーフレンドリーなグラフィカル インターフェイスも備えています。 パブリック リポジトリでチャートを検索して、ニーズに合ったチャートを見つけることができます。 社内のエンジニアがチャートをアップロードして、他の従業員がインストールできるプライベート リポジトリもあります。 他のツールが構成ファイルを必要とする可能性がある場合、Helm は宣言型アプローチを使用します。 必要なすべての設定を XNUMX つのファイルで指定してから、チャートをインストールできます。 Helm を使用すると、自動更新とデプロイ スケジュールを設定して、クラスターを最新のソフトウェアで最新の状態に保つこともできます。

展開中のアプリケーション構成

もう XNUMX つの際立った機能は、展開中にアプリケーション構成を提供できることです。 アプリケーションを構成する Kubernetes リソース (デプロイ、サービスなど) を指定できるだけでなく、それらのリソースの環境固有の構成も指定できます。 これにより、すべての環境で同じ Helm チャートを使用できます。

基本的な 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 というファイルを作成します。 次の例は、my-app チャートを構成して、hello world という名前のアプリケーションをデプロイする方法を示しています。

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 に保存されます。

このファイルのラベル フィールドには、デプロイされるアプリケーションの名前が含まれます。 spec フィールドには、 アプリケーションの構成. この場合、XNUMX つしかありません。 デプロイされるコンテナであり、ポート 80 が開いています。 このファイルの最後の行は、my-app チャートのテンプレートを設定します。 このテンプレートは、アプリケーションを作成してデプロイする方法を Helm に指示します。

my-app チャートを実行するには、helm コマンドを使用できます。

# helm list
# helm deploy my-app

最初のコマンドは、システムに現在インストールされているすべてのチャートを一覧表示します。 XNUMX 番目のコマンドは、my-app チャートを Kubernetes クラスターにデプロイします。 Helm は、Kubernetes クラスターにアプリケーションをパッケージ化してデプロイする洗練された方法を開発者に提供します。 LogicMonitor は、ネットワーク、クラウド、アプリケーション、サーバー、ログ データなどを XNUMX つの統合プラットフォーム内で可視化します。 このプラットフォームは、自動化されたアラートしきい値、AI を活用した早期警告機能、カスタマイズ可能なエスカレーション チェーン、ワークフローなどを使用して、面倒な作業を自動的に行います。 入手する 14日無料トライアル 自分で調べてください。