Helm とは何ですか?クラウドネイティブ アプリケーションのプライベート展開の効率はどのように向上しますか?

Helm とは何ですか?クラウドネイティブ アプリケーションのプライベート展開の効率はどのように向上しますか?

みなさんこんにちは。私はブラザー・スネイルです。 50 個のマイクロサービスを持つプロジェクトがあり、各マイクロサービスにサービス、デプロイメント、イングレス、pvc などの yaml ファイルがあり、合計で約 200 個のファイルがある場合、このプロジェクトを k8s ベースでプライベートに配信する必要があると想像してください。あなたの場合、どのようにしてアプリケーションを迅速に展開しますか?

まず、これについて考えてみましょう。

  • kubectl を通じてデプロイされた 200 個のファイルが適用され、それらを 1 つずつ読み取って実行するためのシェル スクリプトが for ループ内に記述されていますか?しかし、これらの yaml ファイルが更新された場合、どのように同期するのでしょうか?
  • これらのポッドをアップグレードする必要がある場合はどうなりますか?画像タグを一つずつ変更する必要がありますか?
  • データベース アドレス、ファイル システム アドレス、ログ ディレクトリ、リソース サイズなどの YAML ファイル関連のアドレスを更新するにはどうすればよいですか?
  • アンインストールしたい場合はどうすればいいですか?一つずつ削除しますか?

npmやmavenなどのパッケージ管理ツールのように、これらのyamlファイルをパッケージに入れて、キーパラメータを公開し、デプロイ時にこれらのパラメータを指定してワンクリックデプロイを行い、アンインストール時にワンクリックでアンインストールできるツールがあれば、とても便利ではないでしょうか。 Helm はまさにそのようなツールです。

ヘルムとは

Helm は、Kubernetes 上でアプリケーションをパッケージ化、デプロイ、管理できるツールです。最も複雑な Kubernetes アプリケーションの定義、インストール、アップグレードにも役立ちます。 Helm も CNCF の卒業プロジェクトです。

Helm における次の概念:

  • Helm Charts: ここではChartsと呼ばれる事前設定されたYAMLテンプレートは、KubernetesアプリケーションのYAMLと構成を記述するために使用されます。
  • Helmクライアント: Helmと対話し、これらのチャートのバージョンを管理するためのコマンドラインインターフェース
  • Chart Warehouse: チャートを管理するウェアハウス。Maven の Nexus と同じです。たとえば、社内環境でチャートを構築してアップロードし、顧客のコンピュータルームの Chart Warehouse に接続してチャートをダウンロードし、k8s にデプロイすることができます。

私たちは何をすべきでしょうか?

ここではHelmの具体的な機能については紹介しません。詳細は公式サイトでご確認ください。ここでは、Helm の使い方についてのみ説明します。これにより、Helm を理解し、どのようなシナリオで Helm を使用するかを知ることができます。それでは、例を挙げてゲームプレイを説明します。

例の紹介

フロントエンドとバックエンドに分かれた運用保守展開システムがあり、お客様のお部屋に展開する必要があります。 k8s アーキテクチャは次のとおりです。 8 つのファイルが必要であることがわかります (Istio には 2 つの yaml ファイルが必要です)。次の例では、このチャートを段階的に作成します。

1. 例の作成

helm create dp-manage コマンドを使用してチャートを作成します。実行後、以下に示すように、nginxチャートがデフォルトで生成されます。

2. 主要文書の説明

(1) チャート.yaml

現在のチャートのバージョンを定義し、現在のチャートの目的を説明します。 name パラメータは、後続のアップロードとダウンロードに使用されるチャート名を示します。

(2)値.yaml

変数パラメータはこのファイルで定義され、image.repositoryなどのYAMLテンプレートで参照され、以下に示すように.Values + 変数名を通じて参照されます。

(3) _helpers.tpl

フリーメーカーのマクロに似た共通コードブロック定義。yaml で名前によって参照され、dp-manager.selectorLabels などのすべての変更が含まれます。

3. 変更例

デフォルトの Nginx Chart ではニーズを満たすことができないため、冗長なファイルを削除し、以下に示すように、運用および保守デプロイメント システムの yaml ファイルを追加します。

8 つのテンプレート ファイルがあり、そのうち backend-dp.yaml が次のように定義されていることがわかります。

values.yml パラメータと _helpers.tpl の共通コード ブロックを参照することで、最終的に k8s の deploy.yml ファイルが生成されます。他のファイルは一つずつ紹介されません

ビルドとデプロイ

前述のように、チャートを作成した後、チャート ウェアハウスにアップロードし、クライアント ルームでこのウェアハウスに接続してダウンロードする必要があります。したがって、チャート ウェアハウスが必要になります。ここでは Harbor を使用します。 Habor はコンテナ イメージ ウェアハウスとしても、チャート ウェアハウスとしても使用できるため、一石二鳥です。ご利用をお勧めします。

1. 関連倉庫

Helm クライアントをインストールした後、次のコマンドをローカルで実行して、リポジトリに関連付けます。

 helm repo add myrepo https://host/仓库地址\ --username sre \ --password xxxx

追加後、 helm repo list を実行して、追加された myrepo ウェアハウスを見つけます。

2. ビルドとパッケージ化

ウェアハウスが関連付けられた後、 helm package dp-manager コマンドを実行してパッケージ化すると、 dp-manager-1.0.0.tgz パッケージが生成されます。

helm cm-push dp-manager-1.0.0.tgz myrepo を実行して Harbor 倉庫にプッシュします。 Myrepo は私たちの倉庫の名前です。プッシュ後、Harbor にログインして以下のように表示します。

3. プルデプロイメント

チャートがアップロードされたら、顧客ルーム内に Helm クライアントと Kubectl クライアントをインストールします。具体的なインストール方法はオンラインで確認できます。 helm repo add を使用して、Habor 倉庫アドレスを関連付けます。関連付け後、検索コマンドを実行して、運用保守展開システムのチャートを検索します。

 helm search repo myrepo/dp-manager

チャートが見つかったら、それを展開できます。展開方法は2つあります。 1 つは、チャートをローカル コンピューターにダウンロードし、デプロイ前に values.yaml ファイルを変更することです。もう 1 つは、ダウンロードせずに展開するためのパラメータを指定することです。 2 番目の方法を使用します。

 helm install dp-manager myrepo/dp-manager \ --set istioGateway.hosts={dpmanager.test.com} \ --set pv.log.pvEnabled=false \ --set pv.log.type=storageClass \ --set pv.log.pvc.storageName=gfs-storage \ --set pv.log.pvc.storage=20Gi \ --set apollo.cluster=default

このコマンドでは、ドメイン名やストレージ サイズなどのパラメータを指定します。これらのパラメータは values.yaml ファイルを通じて公開されます。また、このコマンドは、運用保守展開システムをデフォルトのコマンド スペースに展開します。名前空間は -n パラメータで指定できます。

コマンドが実行されると、以下に示すように helm list を通じて表示できます。

 helm list

4. 更新

apollo.cluster の値が default から prod に変更されたと仮定して、アップグレードを実行して更新します。

 helm upgrade dp-manager myrepo/dp-manager \ --set istioGateway.hosts={dpmanager.test.com} \ --set pv.log.pvEnabled=false \ --set pv.log.type=storageClass \ --set pv.log.pvc.storageName=gfs-storage \ --set pv.log.pvc.storage=20Gi \ --set apollo.cluster=prod

5. アンインストール

アンインストールは非常に簡単です。次のコマンドを実行するだけです。

 helm uninsall dp-manager

<<:  SSHトンネルを使用してクラウドホストサービスのアクセス制限を突破する

>>:  K8S 実践: 効率的に作業するための非常に実用的な Kubectl エイリアス ツールの推奨

推薦する

Baidu トラフィックの式 = P*Baidu の重み?

SEO を行う人なら誰でも、Baidu を通じて大量のトラフィックを呼び込みたいと願うはずです。トラ...

Vultr-ロサンゼルスストレージVPSはオンライン、大容量ハードディスク、カスタマイズ可能なシステムです

Vultrは、新たに追加されたロサンゼルスデータセンターのストレージVPSが正式に運用開始したことを...

テンセントの500億投資の「持続可能な社会価値イノベーション部門」は、事業開始から1ヶ月を迎え、社会発展の道を模索する「善良ラボ」を設立した。

重慶は、そびえ立つ山々によって雄大で高く、曲がりくねった川によって美しくしなやかです。夜になると、重...

新しいウェブサイトをBaiduに素早くインデックスさせる方法

多くの新しいウェブサイトは、Baidu に組み込むのが難しいと推定されています。Baidu 6.28...

医療・健康サイト向け Baidu 最適化の将来はどうなるのでしょうか?

かつては、「難病や複雑な病気の治療を専門とする」医療ウェブサイトが多数、百度の関連検索ページの最初の...

SAP、顧客のビジネス変革を支援する画期的なソリューションパッケージを発表

SAPは本日、顧客のインテリジェントエンタープライズへの変革を総合的に推進するマイルストーンソリュー...

企業向けマイクロブログマーケティングの4つのヒントについて簡単に説明します

Weibo は成長を続けており、企業がブランド認知度を高め、ターゲット顧客を開拓するための主要なチャ...

JVM パフォーマンス チューニングおよび監視ツールの使用に関する詳細な説明

[[280944]]実際のエンタープライズ レベルの Java アプリケーションの開発と保守では、次...

ハフィントンポストは中国語ウェブサイトを立ち上げるのに適した編集長を探している

AOL が所有するアメリカのニュースおよびブログ サイト、ハフィントン ポストの社長兼編集長、アリア...

midphase - 高品質のウェブホスティング、15% オフ、年間 12 ドル + 無料ドメイン名

20年近い歴史を持つUK2グループの子会社Midphaseでは、最近バーチャルホスト向けに定価より1...

アンセストリーの現金利回りはフェイスブックを上回り、レバレッジド・バイアウトのきっかけとなる可能性がある

北京時間6月9日、インターネット分野で買収の機会を探しているプラ​​イベートエクイティ投資会社にとっ...

Kubernetes がクラスター外部にサービスを公開する方法をご存知ですか?

Kubernetes がグループ外にサービスを公開する方法は、Ingress、LoadBlance...

Baidu Knowsプロモーションであなたの体験を共有しましょう

たとえウェブサイトが大々的に宣伝されていても、コンテンツがなければユーザーを維持できず、宣伝は無駄に...

製品サイトをキーワードのナンバーワンにするにはどうすればいいですか?

以前、私は自分のウェブサイトを4か月で業界2位にした方法を皆さんにシェアしました。今日は、キーワード...

私たちのウェブサイトをブランドウェブサイトにしましょう

金融チャンネルのビジネス戦争をご覧になったことがあるかどうかはわかりませんが、主に市場での戦争とビジ...