GKE フリートと Argo CD を使って、セルフサービス型の Kubernetes でチームを強化する
Jiayi Bao
Software Engineer, GKE
Nick Eberts
Product Manager, GKE
※この投稿は米国時間 2024 年 11 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。
複数の Kubernetes クラスタでアプリケーションを管理するのは困難です。さらにクラスタが、異なる環境やクラウド プロバイダにまたがるような形態であれば特に複雑になります。Google Kubernetes Engine(GKE)フリートと 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 CD、Connect Gateway、Workload Identity、チーム管理機能を活用したパワフルで自動化されたマルチクラスタのシステムが使用できるようになります。組織の多様なニーズとセキュリティ上の要件をサポートする準備が整っています。それでは詳しく見ていきましょう。
GKE フリートと Argo CD を備えたマルチクラスタのインフラストラクチャを構築する
サンプルの GKE フリートは簡単に設定できます:
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 CD、Connect Gateway、Workload Identity、そして GKE Enterprise のチーム管理機能の力を組み合わせて、堅牢で自動化されたマルチクラスタのプラットフォームを構築する方法をご紹介しました。こうしたツールを活用することで、Kubernetes のオペレーションを簡素化し、セキュリティを強化し、チームがフリートを通じてアプリケーションを効率的に管理しデプロイするよう後押しできます。
しかし、これはまだ始まりにすぎません。マルチクラスタ Kubernetes の世界はまだ探索することがたくさんあります。次のステップとして、セットアップを強化する方法をいくつかご紹介します。
-
GKE Enterprise チーム の詳細: GKE Enterprise の上級者向けチーム管理機能を活用して、アクセス制御、リソースの割り振り、名前空間の管理を細かく調整しましょう。詳しくは、公式ドキュメントをご覧ください。
-
Connect Gateway でクラスタを安全に保護: Connect Gateway と Workload Identity をさらに詳しく掘り下げ、VPN や複雑なネットワーク構成なしで、クラスタへの認証を簡単かつ安全にする方法を見ていきましょう。詳しくは、このブログ投稿をご覧ください。
-
高度なデプロイ戦略をマスター: Blue/Green デプロイ、カナリア リリース、そして自動ロールアウトなどの、Argo CD を用いた高度なデプロイ戦略で、ダウンタイムなしのデプロイを実現し、更新時のリスクを最小限に抑えましょう。このブログ投稿は、最適な出発点です。
マルチクラスタ Kubernetes を模索していく中で、GKE フリートと Argo CD は、スケーラブルで安全、かつ効率的なプラットフォームのための堅実な基盤を提供することを忘れないでください。自動化、GitOps の原則、そしてチームベースの管理を取り入れ、Kubernetes インフラストラクチャの可能性を最大限に引き出しましょう。
-GKE、ソフトウェア エンジニア Jiayi Bao
-GKE、プロダクト マネージャー Nick Eberts