テンプレートは GitOps 主導の自動化に不可欠です

公開: 2022-05-27

目次

GitOps 主導の自動化

Kubernetes は、コンテナー化されたアプリケーションのスケーリングと管理が容易であることで有名になりました。 アプリケーションのライフサイクル全体を通して、ノード、ピース、コンテナー、サービス、および構成マップを分類および管理できます。 このような柔軟性と制御をスクリプトで実現することは困難でした。

しかし、インフラストラクチャに対する Kubernetes の発表アプローチのおかげで、どのレベルでも精度の変更を定義できます。 Kubernetes を使用すると、複数のツールを統合して、コンテナーの自動化された計画、展開、および監視を容易に行うことができます。

そのようなツールの 1 つが、Kubernetes サークルだけでなく GitOps エコシステムでも人気を博している、CNCF が採用した自動化フレームワークである Helm です。 この投稿では、Helm が Kubernetes と GitOps を介してクラウドネイティブ アプリケーションを自動化するのにどのように役立つかを見ていきます。

ヘルムとは?

パッケージ マネージャーとして説明されていますが、Helm は Kubernetes アプリケーションのインストール、展開、アップグレード、および管理を自動化するための強力なツールです。 Kubernetes マニフェストの管理は、システム全体でますます複雑になっているタスクです。 複数の YAML ファイルを複製し、単一の並べ替えにハードコード値が必要です。 Kubernetes は、シンプルなパッケージ形式で YAML ファイルを管理するためのより良い方法を必要としており、それがヘルム チャートにつながりました。 ただし、ヘルムの目的はテンプレートを超えています。

チャート

Helm チャートは、Kubernetes アプリケーションに使用できるユニットです。 各グラフには、ファイル、メタデータ、およびアプリケーション インフラストラクチャを含めることができます。 Go で記述されたチャートは、関連する変数、バージョン、および説明とともに特定のテンプレート ディレクトリに保存されます。 これらのチャートをアーカイブとしてリポジトリに保存することで、開発チーム全体でチャートを共有して再利用できます。

グラフのコピーが Kubernetes クラスターにインストールされると、それは出力と呼ばれます。 チャートが使用されるたびに新しいリリースが作成されます。これは複数回発生する可能性があります。 出版物は、チャートの監視とインストールに役立ちます。

以下は、Helm を使用する際に知っておくべき重要なルールです。

Chart.YAML: チャートの説明を保持するメイン ファイル

Values.YAML: チャートのデフォルト値を含むファイル

Charts: サブチャートを含むディレクトリ

テンプレート: テンプレートとして定義された Kubernetes ソース ディレクトリ

テンプレート

テンプレート フォルダーは、Helm の重要な機能です。 これには、アプリケーションの構成ファイルが含まれており、クラスターに適用されます。 テンプレート ディレクトリ内のファイルは、values.YAML から値を呼び出します。

なぜヘルム?

Helm は、次の利点をもたらすため、継続的デリバリー環境に大きな価値をもたらします。

生産性の向上:

Helm (Flux などの他の並べ替えツールと共に) を使用すると、1 つのボタンまたは 1 つのコマンドでソフトウェアを並べ替えることができます。 これにより、チームはソフトウェア開発のみに集中できます。

プロセスを簡単にします:

チャートの概念により、パイプライン (開発、テスト、および実稼働) または異なるチームのワークフロー全体で同じチャートをコピーできます。 これにより、問題が大幅に軽減されます。

計測:

グラフは、スケーラビリティを促進する Kubernetes クラスター アーキテクチャに合わせて設計されています。

簡単な引き出し:

Helm はすべてのリリースを管理し、問題が発生したときに変更を簡単に取得できるようにします。

GitOps は Helm と Flux の両方を活用

Helm は、複雑なリリースを管理し、測定時に物事をシンプルに保つことができます。 ただし、変更が徐々に導入されるため、Helm には Kubernetes クラスターを更新するための追加のツールが必要になります。

Flux は、Helm と、Kubernetes クラスター全体とユーティリティ仕様が定義されているすべての重要な Git リポジトリとの間のブリッジとして機能するため、Helm の優れたフィラー ソリューションです。

Flux は、GitOps モデルに基づく展開自動化ソリューションであり、Git がすべての変更の開始点および実際のソースになります。 Flux を使用すると、コード リポジトリと Kubernetes クラスター間の一貫性を維持でき、コードの変更が導入されたときに並べ替えを自動化できます。

つまり、Flux Helm は、Git から Kubernetes クラスターにチャートを同期することにより、チャートのリリースを自動化します。

Flux は Helm とどのように連携しますか?

Flux を GitOps オペレーターとして使用するには、すべての Helm チャートを YAML ファイルおよび Kubernetes カスタム リソースと共に Git リポジトリに保存します。 また、これらのソースの変更されていないイメージをコンテナー レジストリに配置します。

「プル」リクエストで Git に変更を加えると、Flux はリポジトリをチェックし、必要なリソースを提供します。 その後、変更は本番クラスターに組み込まれます。 もちろん、これによりプロセスが簡素化され、喫煙テストや SRE 固有の変更の承認など、さらに多くのことができますが、ここでは単純にしておきましょう。

Flux 2 と Helm がどのように連携して速度と信頼性を高め、アイドル時間を短縮するかについて詳しく知りたい場合は、Scott Rigby によるこの YouTube トークをご覧ください。

結論

Helm は、Kubernetes の実行の難しさを大幅に軽減します。 チャートまたはテンプレートの概念により、GitOps パイプラインに大きな価値を追加します。 とはいえ、テンプレート作成以外にも、エンド ツー エンドのデプロイの自動化という要件があります。 これは、Helm を使用するために Flux (または Flux に組み込まれている Weave GitOps) のようなツールが必要な場所です。 さらに、Magalix のようなソリューションにより、Helm リリースの互換性と安全性が保証されます。

Weave KitApps は、Kubernetes を大規模に管理できる継続的デリバリー ソリューションです。 これにより、どの企業でも GitOps の採用と実装が容易になります。 Weave GitOps は、GitOps を有効にする「gitops install」やアプリケーションに追加する「gitops add app」などのコマンドを使用して、機能的なクラスターを簡素化します。 これらのコマンドは、デプロイメントの自動化に関係する、基礎となる複雑なタスクを抽象化します。 Weave GitOps は、Helm、Flux、Magalix などを含む GitOps パイプライン全体をまとめているため、時間を無駄にすることなく GitOps を開始できます。

簡単な手順でAmazonセラーになる方法

ケータリングのデジタル マーケティング