ポイント: Kubernetes Helm は、必要なリソースを単一のパッケージにバンドルした再利用可能な Helm チャートを使用してアプリケーションのデプロイを簡素化するパッケージマネージャーです。このツールは生産性を向上させ、Kubernetes でのアプリケーションデプロイの複雑さを減らします。
- Helm を使用すると、開発者は単一のコマンドでアプリケーションをデプロイできます。
- Kubernetes アプリケーションと環境の管理を簡素化します。
この投稿では、Kubernetes で使用されるツールである Helm について説明します。私たちの多部構成の Kubernetes ガイドの一部として、この記事では:
- Helm チャートを探ります
- Helm と Helm チャートを使用するタイミングと理由を決定します
- 始めるための手順を提供します
他の K8s トピックを探るには、右側のナビゲーションメニューを使用してください。
Helm とは?
簡単に言えば、Helm は Kubernetes のためのパッケージマネージャーです。Helm は K8s の yum または apt に相当します。Helm はチャートをデプロイします。これは、パッケージ化されたアプリケーションとして考えることができます。それは、バージョン管理された、事前に構成されたアプリケーションリソースのコレクションであり、一つの単位としてデプロイできます。異なる設定で別のバージョンのチャートをデプロイすることもできます。
Helm は 3 つの重要な方法で役立ちます:
- 生産性を向上させる
- マイクロサービスのデプロイメントの複雑さを減らす
- クラウドネイティブアプリケーションの適応を可能にする
なぜ Helm を使用するのか?
Kubernetes YAML マニフェスト をすべての必要な Kubernetes オブジェクトのために作成し、維持するのは時間がかかり、煩雑な作業です。最も単純なデプロイメントの場合、少なくとも 3 つの YAML マニフェストが必要で、重複したハードコーディングされた値が必要です。Helm はこのプロセスを簡素化し、クラスターに宣伝できる単一のパッケージを作成します。
Helm はクライアント/サーバーアプリケーションであり、最近まで、クラスターにデプロイするために Tiller(Helm サーバー)に依存していました。これは、クライアントマシンで Helm をインストールまたは初期化するときにインストールされます。Tiller は単にクライアントからのリクエストを受け取り、パッケージをクラスターにインストールします。Helm は、Linux の RPM または DEB パッケージに簡単に比較でき、開発者がアプリケーションをパッケージ化してエンドユーザーにインストールする便利な方法を提供します。
Helm をインストールし、設定すると(以下の詳細)、MongoDB や MySQL などのソフトウェアベンダーからの本番環境対応のアプリケーションを、非常に簡単な helm install コマンドで Kubernetes クラスターにインストールできます。さらに、クラスター内にインストールされたアプリケーションを削除するのも、インストールするのと同じくらい簡単です。
Helm チャートとは?
Helm チャートは、Kubernetes YAML マニフェストを単一のパッケージにまとめたもので、Kubernetes クラスターに宣伝できます。一度パッケージ化されると、Helm チャートをクラスターにインストールするのは、単一の helm install を実行するだけで簡単で、コンテナ化されたアプリケーションのデプロイを本当に簡素化します。
Helm の説明
Helm には 2 つの部分があります:
- ローカルワークステーション上にあるクライアント(CLI)。
- Kubernetes クラスターに存在し、必要な処理を実行するサーバー(Tiller)。
アイデアは、CLI を使用して必要なリソースをプッシュし、Tiller がチャートからリソースを作成/更新/削除して、状態が実際にその通りであることを確認することです。Helm を完全に理解するには、3 つの概念に慣れる必要があります:
- チャート:事前に構成された Kubernetes リソースのパッケージ。
- リリース:Helm を使用してクラスターにデプロイされたチャートの特定のインスタンス。
- リポジトリ:他の人が利用できるように公開されたチャートのグループ。
Helm の利点
開発者が Helm チャートを好む理由は多くあります:
生産性を向上させる
ソフトウェアエンジニアはソフトウェアを書くのが得意で、彼らの時間はそれを行うのが最も良い使い方です。Helm を使用することで、ソフトウェアはボタンをクリックするだけでテスト環境をデプロイできます。
例えば、新機能をテストするためにエンジニアが SQL データベースを必要とする場合、ソフトウェアをローカルにインストールし、必要なデータベースやテーブルを作成するプロセスを経る代わりに、エンジニアは単一の Helm Install コマンドを実行して、テスト用に準備されたデータベースを作成できます。
重複と複雑さを減らす
チャートを一度作成すれば、何度でも、誰でも使うことができます。どの環境でも同じチャートを使用できるという事実は、開発、テスト、本番のために何かを作成する複雑さを減らします。チャートを調整して、どの環境にも適用できるように準備するだけで済みます。そして、開発環境で本番用のチャートを使用する利点を得られます。
K8S の学習曲線をスムーズにする
Kubernetes とコンテナの学習曲線が、平均的な開発者には長いことは秘密ではありません。Helm はその学習曲線を簡素化します:開発者は、コンテナアプリケーションを開発およびデプロイするために、各 Kubernetes オブジェクトの機能を完全かつ詳細に理解する必要はありません。
Helm は、CI/CD パイプラインに簡単に統合され、ソフトウェアエンジニアはコードを書くことに集中できるようにします—アプリケーションをデプロイするのではなく。
デプロイメントを簡素化する
Helm チャートは、 values.yaml ファイルで上書き可能なデフォルトを設定するのを簡単にして、ソフトウェアベンダーやチャートの管理者がベース設定を定義できるようにします。チャートの開発者やユーザーは、それぞれのニーズに合わせてチャートをインストールする際にこれらの設定を上書きできます。デフォルトのインストールが必要な場合は、上書きは必要ありません。
Kubernetes へのアプリケーションのデプロイ は、異なるオブジェクトが密接に結びついているため、単純なプロセスではありません。これらのオブジェクトとその機能についての特定の知識が必要です。Helm は、その複雑さを取り除き、ほとんどの作業をあなたのために行います。
Helm チャートの説明
Helm には、新しいチャートを作成するときに特定の構造があります。作成するには、「helm create YOUR-CHART-NAME」を実行します。一度これが作成されると、ディレクトリ構造は次のようになります:
YOUR-CHART-NAME/
|
|- .helmignore
|
|- Chart.yaml
|
|- values.yaml
|
|- charts/
|
|- templates/
- .helmignore:これは、チャートをパッケージ化するときに無視するすべてのファイルを保持します。git に精通している場合は、 .gitignore に似ています。
- Chart.yaml:これは、パッケージ化しているチャートに関するすべての情報を入力する場所です。たとえば、バージョン番号などです。ここにすべての詳細を入力します。
- Values.yaml:これは、テンプレートに注入したいすべての値を定義する場所です。terraform に精通している場合は、これは Helm の variable.tf ファイルと考えてください。
- Charts:これは、あなたのチャートが依存している他のチャートを保存する場所です。あなたのチャートが正常に機能するために必要な他のチャートを呼び出す場合があります。
- Templates:このフォルダには、チャートでデプロイしている実際のマニフェストが含まれています。例えば、サービス、configmap、シークレットが必要な nginx デプロイメントをデプロイする場合、deployment.yaml、service.yaml、config.yaml、secrets.yaml すべてをテンプレートディレクトリに配置します。これらはすべて、上記の values.yaml から値を取得します。
Helm のインストールと Helm チャートの設定
Helm を使用する準備は整いましたか? K8S クラスターのために Helm をインストールし、設定するのは非常に迅速かつ簡単なプロセスです—インストールできる Helm のバージョンが複数あります(v1/v2 および最近の v3)、すべて組織のニーズに合わせて設定できます。Helm のダウンロードとインストールに関する手順については、入門ページ を確認してください。
最初の Helm チャートを始めるのは、安定リポジトリからいくつかのチャートをインストールするのと同じくらい簡単です。Helm 安定リポジトリは、クラスターにデプロイする準備が整ったアプリケーションのコレクションです。
Helm ユーザーは、自分のチャートを書くか、安定リポジトリからチャートを取得できます:
アプリケーションのために独自の Helm チャートを作成したい場合は、Helm には開始するためのシンプルな 開発者ガイド があります。
Helm はソフトウェアのデプロイを簡素化します
要約すると、Helm はソフトウェアや自分のアプリケーションを Kubernetes にデプロイする際の多くの複雑さを取り除きます。数分でインストールでき、安定リポジトリからチャートをデプロイすることができます。独自のチャートを書くことも簡単なプロセスですが、Kubernetes オブジェクトを理解する必要があります。Helm は開発者に効率よく作業できるようにし、ローカルでコードをテストするために必要なツールを提供します。
追加のリソース
Kubernetes に関する詳細情報は、以下のリソースを探求してください:
Kubernetes ガイド
- Kubernetes (K8s) とは? Kubernetes 基礎チュートリアル
- クラスタの効率を高めるための Kubernetes ベストプラクティス
- ベストプラクティス:Kubernetes にアプリケーションをアーキテクチャする方法
- Kubernetes ポッド:入門
- Kubernetes ReplicaSets:簡単な紹介
- Kubernetes デプロイメントの完全解説
- Kubernetes DaemonSets の使用と管理
- Kubernetes サービスの仕組み
- Kubernetes ポート、TargetPort、および NodePort の使用
- Kubernetes における ConfigMaps の作成と使用
- Kubernetes シークレットの紹介
- Kubernetes ネットワーキングの基本
- Kubernetes Ingress の解説
- Kubernetes Helm チャートの紹介
- Kubernetes オペレーターパターンとは?
- Kubernetes で StatefulSet として PostgreSQL をデプロイする
- Kubernetes カスタムリソース定義 (CRDs) の解説
- クラウドネイティブアプリケーションのための 3 つの Kubernetes パターン
- Kubernetes コンピュートリソースの解説
- DevOps パイプラインのための Kubernetes セキュリティ
- 継続的デリバリーのための Kubernetes と Spinnaker の使用
- Kubernetes マルチクラスター:どのように、なぜそれを使用するのか
- Kubernetes モニタリング:包括的ガイド
- Kubernetes vs Docker:簡単な比較
- Kubernetes vs Docker Swarm:コンテナオーケストレーションツールの比較
- Kubernetes vs OpenShift:違いは何ですか?
- Kubernetes 認定:どのように、なぜ認定を取得するのか
これらの投稿は私自身の意見であり、BMCの見解、戦略、または意見を必ずしも代表するものではありません。