コンテンツに移動
Containers & Kubernetes

GKE フリートと Argo CD を使って、セルフサービス型の Kubernetes でチームを強化する

2024年11月29日
Jiayi Bao

Software Engineer, GKE

Nick Eberts

Product Manager, GKE

※この投稿は米国時間 2024 年 11 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

複数の Kubernetes クラスタでアプリケーションを管理するのは困難です。さらにクラスタが、異なる環境やクラウド プロバイダにまたがるような形態であれば特に複雑になります。Google Kubernetes EngineGKE)フリート Argo CD、つまり Kubernetes 向けの GitOps 宣言型継続的デリバリー ツールの組み合わせは、この問題に対する強力かつ安全なソリューションとなります。加えて Connect Gateway Workload Identity を活用することで、このソリューションをさらに強化することができます。

このブログ投稿では、こうしたソリューションによって堅牢でチーム中心のマルチクラスタ インフラストラクチャを構築する方法を紹介します。サンプルとして、ワークロード用のアプリケーション クラスタと、Argo CD をホストするためのコントロール クラスタを含む GKE クラスタを使用します。認証を簡略化しセキュリティを強化するために、Connect Gateway Workload Identity を活用します。これにより、面倒な Kubernetes Service Account の管理をせずに Argo CD が安全にクラスタを管理できるようになります。

さらに、アクセスとリソースを管理するために GKE Enterprise のチーム管理機能を導入することで、安全なフレームワーク内で各チームが適切なアクセス許可と名前空間を確保できるようになります。

最後に、この洗練されたセットアップ内でのクラスタ管理を簡素化するために設計された、カスタム Argo CD ジェネレータである、fleet-argocd-plugin を紹介します。このプラグインは、GKE フリートのクラスタリストを自動的に Argo CD にインポートし、クラスタの情報が同期された状態を保ちます。プラットフォーム管理者はリソースの管理が簡単になり、アプリケーション チームはデプロイメントに専念できるようになります。

以下をご参照ください:

  • アプリケーション クラスタとコントロール クラスタを含む GKE フリートを作成する

  • コントロール クラスタに Argo CD をデプロイし、Connect Gateway Workload Identity を使用するように構成する

  • GKE Enterprise のチーム管理機能で細かいアクセス制御を構成する

  • fleet-argocd-plugin をインストール、活用し、チーム認識を持つ安全なマルチクラスタのフリートを管理する

最終的には、GKE フリート、Argo CDConnect GatewayWorkload Identity、チーム管理機能を活用したパワフルで自動化されたマルチクラスタのシステムが使用できるようになります。組織の多様なニーズとセキュリティ上の要件をサポートする準備が整っています。それでは詳しく見ていきましょう。

GKE フリートと Argo CD を備えたマルチクラスタのインフラストラクチャを構築する

サンプルの GKE フリートは簡単に設定できます:

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_y9UprOl.max-1500x1500.png

1. 対象の Google Cloud Project で必要な API を有効にする。このプロジェクトはフリート ホスト プロジェクトとして使用します。

a. gcloud SDK がインストール済みで、gcloud auth login で認証されている必要があります。

読み込んでいます...

2. アプリケーション クラスタを作成し、フリート ホスト プロジェクトに登録する。

読み込んでいます...

3. フリートでチームを設定する。frontend チームが webserver 名前空間を持っているとします。

a. フリートチームとフリートの名前空間があれば、特定のクラスタ上の、特定の名前空間へのアクセスをコントロールできます。

読み込んでいます...

4. Argo CD を設定し、コントロール クラスタにデプロイする。アプリケーションとして新しい GKE クラスタを作成し、Workload Identity を有効にします。

読み込んでいます...

5. Argo CD API サーバーとやり取りするために、Argo CD CLI をインストールする。バージョン 2.8.0 以降である必要があります。インストール手順の詳細については、CLI インストール ドキュメントをご覧ください。

6. コントロール クラスタに Argo CD をデプロイする。

読み込んでいます...

Argo CD ジェネレータをカスタマイズする

GKE フリートの設定が完了し、Argo CD をコントロール クラスタにインストールしました。Argo CD では、アプリケーション クラスタはコントロール クラスタに登録され、認証情報(API サーバー アドレスや認証の詳細情報)は、Kubernetes Secret として Argo CD 名前空間に保存されます。このプロセスをもっと簡単にする方法があります。

fleet-argocd-plugin は、カスタマイズされたArgo CD プラグイン ジェネレータであり、以下の方法でクラスタ管理の手間を減らします。

  • 自動的に GKE フリートのクラスタリストを Argo CD にインポートし、各アプリケーション クラスタに対応するクラスタ secret オブジェクトを設定する

  • Google Cloud 上でフリートのステータスを監視し、Argo CD のクラスタリストが常に同期され、最新の状態に保たれるようにする

次に、Argo CD ジェネレータをビルドし構成する方法を見ていきましょう。

7. fleet-argocd-plugin をコントロール クラスタにインストールする。

a. このデモでは、Cloud Build を使ってfleet-argocd-plugin をビルドしデプロイします。

読み込んでいます...

8. fleet-argocd-plugin が正常に動作するか確かめるため、フリート管理のために適切なアクセス許可を与える。

a. IAM サービス アカウントを Argo CD コントロール クラスタ内で作成し、適切なアクセス許可を付与します。以下の設定は公式のオンボーディング ガイド GKE Workload Identity 連携に沿ったものです。

読み込んでいます...

b. さらに、Google Compute Engine サービス アカウントが、アーティファクト リポジトリからイメージを取得できるよう、アクセスを許可する必要があります。

読み込んでいます...

9. Argo CD コントロール クラスタでフリート プラグインを実行!

読み込んでいます...

デモの時間

GKE フリートと Argo CD がうまく連携しているか、簡単に確認してみましょう。アプリケーション クラスタの secret が自動的に生成されているか確認してください。

読み込んでいます...

デモ 1: Argo CD 内の自動的なフリート管理

仕組みを詳しく見ていきましょう。ゲストブックのサンプル アプリケーションを使います。まず、フロントエンド チームが使うクラスタにデプロイします。アプリケーション クラスタ上でゲストブック アプリケーションが動作しているか確かめられれば、クラスタの secret を手動で扱う必要はありません、

読み込んでいます...

デモ 2: fleet-argocd-plugin を使えば、簡単にフリートが進化

フロントエンド チームに新しいクラスタを追加するとしましょう。新しい GKE クラスタを作成し、フロントエンド チームにアサインします。それから、ゲストブック アプリケーションが新しいクラスタにデプロイされているか確認します。

読み込んでいます...

まとめ

このブログ投稿では、GKE フリート、Argo CDConnect GatewayWorkload Identity、そして GKE Enterprise のチーム管理機能の力を組み合わせて、堅牢で自動化されたマルチクラスタのプラットフォームを構築する方法をご紹介しました。こうしたツールを活用することで、Kubernetes のオペレーションを簡素化し、セキュリティを強化し、チームがフリートを通じてアプリケーションを効率的に管理しデプロイするよう後押しできます。

しかし、これはまだ始まりにすぎません。マルチクラスタ Kubernetes の世界はまだ探索することがたくさんあります。次のステップとして、セットアップを強化する方法をいくつかご紹介します。

マルチクラスタ Kubernetes を模索していく中で、GKE フリートと Argo CD は、スケーラブルで安全、かつ効率的なプラットフォームのための堅実な基盤を提供することを忘れないでください。自動化、GitOps の原則、そしてチームベースの管理を取り入れ、Kubernetes インフラストラクチャの可能性を最大限に引き出しましょう。

-GKE、ソフトウェア エンジニア Jiayi Bao 

-GKE、プロダクト マネージャー Nick Eberts

投稿先