K8s は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するオープンソースのコンテナ オーケストレーション プラットフォームです。近年、K8s はクラウドネイティブ アーキテクチャとコンテナ化テクノロジーを採用する組織の標準となっています。 ただし、K8s の複雑さのため、使用しきい値を簡素化するためのツールが多数作成されています。ほとんどの企業が使用する2つのツールは、Kustomize(K8sの構成マネージャー)とHelm(K8sのパッケージマネージャー)です。 この記事では、Helm と Kustomize の機能、使用方法、およびこれらのツールの違いについて説明します。
Kustomize とは何ですか?Kustomize は、k8s クラスターの構成カスタマイズ ツールです。これにより、管理者は元のマニフェスト ファイルに影響を与えずに、テンプレート以外のファイルを使用して宣言的な変更を加えることができます。 すべてのカスタム仕様は kustomization.yaml ファイルに含まれており、既存のマニフェストの上に仕様をオーバーレイして、リソースのカスタマイズされたバージョンを生成します。 たとえば、本番環境とテスト環境にデプロイする必要があるアプリケーションがあり、その YAML 構成がほとんど同じで、いくつかのフィールドのみが異なる場合は、kustomize を使用してこの問題を解決できます。 構造をカスタマイズするKustomize は共有の基本リソースとオーバーライドを使用して、再利用性と構成生成を実現します。 Kustomize プロジェクトの一般的なディレクトリ構造は次のとおりです。 写真 Kustomize プロジェクト構造は通常、ベース ディレクトリとオーバーライド ディレクトリで構成されます。上記の構造では、ベース ディレクトリに kustomization.yaml というファイルと共有リソースのマニフェスト ファイルが含まれています。 base/kustomization.yamlファイルは、すべての環境に含まれるファイルを宣言します。 Overlays ディレクトリには、ベース フォルダー内の yaml ファイルを参照し、カスタム変更を加えてパーソナライズされたリソースを構築する kustomization.yaml も含まれています。 Overlays ディレクトリには、Kustomize が環境固有のリソースを作成するために使用する個別の yaml ファイルも含まれています。 カスタム展開の例次の一般的な例は、最小限の K8s デプロイメントに Kustomize を使用して、開発環境と本番環境にリソースをデプロイする方法を示しています。 事前依存関係
次のコマンドを使用して、サンプル Git リポジトリをクローンし、必要なマニフェストを作業環境にダウンロードします。 写真 構造は次の通りです 写真 この例では、さまざまな環境での httpd の dp と svc の展開をシミュレートします。 dev は名前の前に dev- を追加し、prod は名前の前に prod- を追加し、base はデフォルト名 httpd を使用します。
展開する
実行が完了すると、次の結果が出力されます。 写真
前と同様に、以下に示すように、「/overlays/dev」フォルダーに移動してデプロイを実行します。 出力 写真 本番環境の導入
出力 写真 検証
写真
写真 上記の結果から、設定が有効になっていることがわかります。 Helm とは何ですか?Helm は、K8s 上でアプリケーションをパッケージ化、デプロイ、管理できるツールです。最も複雑な K8s アプリケーションの定義、インストール、アップグレードにも役立ちます。 Helm も CNCF の卒業プロジェクトです。 写真 Helmにおける以下の概念 Helm Charts: 事前設定された YAML テンプレート (ここでは Charts と呼びます)。K8s アプリケーションの YAML と構成を記述するために使用されます。 Helmクライアント: Helmと対話し、これらのチャートのバージョンを管理するためのコマンドラインインターフェース Chart Warehouse: チャートを管理するウェアハウス。Maven の Nexus と同じです。たとえば、社内環境でチャートを構築してアップロードし、顧客のコンピュータルームの Chart Warehouse に接続してチャートをダウンロードし、k8s にデプロイすることができます。 Helm の例事前依存関係
Helm Charts は、事前構成された K8s リソース パッケージです。 Helm チャートには、K8s マニフェスト、環境変数、その他の構成など、特定のアプリケーションまたはサービスをデプロイするために必要なすべての情報が含まれています。 ディレクトリ名はチャートの名前です。 Helm のドキュメントに示されているように、 helm create helm-demo コマンドを使用して Chart を作成します。実行後、以下に示すように、nginxチャートがデフォルトで生成されます。 写真 チャート.yaml現在のチャートのバージョンを定義し、現在のチャートの目的を説明します。 name パラメータは、後続のアップロードとダウンロードに使用されるチャート名を示します。 値.yaml変数パラメータはこのファイルで定義され、image.repositoryなどのYAMLテンプレートで参照され、以下に示すように.Values + 変数名を通じて参照されます。 写真 _helpers.tpl共通コードブロックを定義し、yamlファイルはincludeを通じて参照される。 意味
参考文献
テンプレートこのディレクトリには主にデプロイされる yaml ファイル テンプレートが格納され、_helpers.tpl ファイルも含まれています。テンプレートは、values.yamlとChart.yamlで定義されたパラメータと、_helpers.tplで定義された共通コードブロックを参照します。 写真 展開する
写真 次のコマンドは、set を通じて 2 つのレプリカ ポッドのデプロイを指定します。このパラメータはvalues.yamlで定義されています
写真 検証2つのコピーが展開されていることがわかります
写真 主な違い操作方法Kustomize は、ディレクトリ固有の kustomization.yaml ファイルを使用して、個々のリソースを構築し、変更を加えます。これらのファイルは、共有ベース フォルダーで宣言されたリソースにパッチとオーバーライドを適用し、自動化されたマルチ環境構成を提供します。 Helm はテンプレートを使用して、value.yaml ファイルを変数ソースとして参照し、有効な K8s 構成を生成します。テンプレート ディレクトリは、デプロイ中にリソースを作成するために Helm チャートが使用するファイルをホストします。 利便性K8s バージョン 1.14 以降では、Kustomize は kubectl CLI にバンドルされているため、追加のツールを習得する必要はありません。 Kustomize は宣言型のデプロイメントをサポートし、各ファイルに純粋な YAML を使用するため、使いやすくなります。 Helm は、K8s パッケージ管理タスクに抽象化レイヤーを追加し、クラスター構成とリリースの自動化を簡素化したいチームの学習曲線を加速します。 Helm Chart は Kustomize よりも複雑ですが、より強力です。 パックKustomize にはパッケージ化機能がないため、各リソースはベース フォルダーで宣言し、バリアントはオーバーレイの kustomization.yaml ファイルで個別に宣言する必要があります。 Helm は必要なすべての K8s リソースを 1 つのフォルダーにパッケージ化し、必要に応じて再利用できるようにします。 Helm では、参照される yaml ファイルに挿入できる values.yaml ファイルを使用して、アプリケーションのデフォルトを設定したり、パラメータを変更したりすることもできます。 ネイティブ kubectl 統合K8s バージョン 1.14 以降、Kustomize には kubectl がプリインストールされています。 Helm は K8s と事前に統合されていないため、Helm を手動でインストールする必要があります。 Kustomize vs. Helm - どちらを使うべきかKustomize を使用する場合Kustomize を使用すると、元のファイルを変更せずに正確な変更を加えることができます。したがって、次のようなシナリオが考えられます
Helm を使用する場合Helm はすべての K8s オブジェクトを 1 つのパッケージにカプセル化し、各 yaml ファイルとのやり取りを減らします。これ以外にも、ほとんどのサードパーティベンダーは、自社製品を K8s にデプロイするプロセスを簡素化するために、事前に構築された Helm チャートも提供しています。したがって、監視、データベース、メッセージング ミドルウェアなどの既成ソリューションをインストールする場合、Helm が最初の選択肢となることがよくあります。 |
<<: クラウド開発に関する考察: どのクラウド開発戦略が正しい選択でしょうか?
>>: 2024年に注目すべきクラウドコンピューティングのトレンド
クラウド ストレージ サービスがますます普及するにつれて、転送速度、データ セキュリティ、プライバシ...
北京の記者、李卓中国第2位のレンタカー会社であるeHi Car Rentalは、経営陣の異例の人事異...
「イカゲーム」が巻き起こした世界的なサスペンス熱はまだ完全には冷めていない。国内初の無限流映画・テレ...
アメリカのサーバーベンダーであるSoladriveは現在、独立型サーバーのプロモーションを行っていま...
最新の統計によると、今年1月時点で中国で正常に運営されている共同購入サイトの数は3,790件だった。...
中国の旧正月が近づいてきました。これはすべての中国人にとって大きなイベントであり、祭りの勢いを利用し...
Budgetvm は、Hostcat の以前の投稿で、nlayer に移行すると言及していました。「...
12月17日、周鴻毅氏が「熱心すぎる」宣伝を後悔していた頃、12月18日に検索エンジン業界に新たな参...
itldcはどうですか? itldc ラトビア VPS はどうですか?バルト海の東側に位置するラトビ...
スキルとヒントは、一般的に成功体験を共有することです。Taobao の顧客プロモーションの目的は、ト...
最近、偶然、Lu Songsong 氏の「有名なブログを作るにはどのくらいの時間がかかりますか?」と...
今日の世界ではテクノロジーは常に進化しています。新しいアプリケーション、新しいデバイス、新しい統合が...
2018年はソーシャル分野に資金が流入し、ソーシャルブームが起こりました。 2019年に入り、ソーシ...
不完全なデータ報告によると、国内の「OEM」製造業の現状は、依然として伝統的なビジネスモデルの範囲内...
Xiaomiの携帯電話は2011年11月に発売されて以来、中国でますます人気が高まっており、その優れ...