EKS Capability for Argo CD とセルフマネージド Argo CD を比較する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

EKS Capability for Argo CD とセルフマネージド Argo CD を比較する

EKS Capability for Argo CD により、完全マネージド型の Argo CD を EKS で動作させることができます。EKS 機能とセルフマネージドソリューションの全般的な比較については、「EKS 機能と考慮事項」を参照してください。このトピックでは、認証、マルチクラスター管理、アップストリーム機能のサポートなど、Argo CD 固有の違いに焦点を当てます。

アップストリーム Argo CD との違い

EKS Capability for Argo CD は、アップストリームの Argo CD に基づいていますが、アクセス方法、設定方法、AWS サービスとの統合方法が異なります。

RBAC と認証: 機能が備える RBAC ロールには管理者、編集者、ビューワーの 3 つがあり、Argo CD に組み込みの認証ではなく AWS アイデンティティセンターを使用して認証を行います。Argo CD の argocd-rbac-cm ConfigMap ではなく、機能の rbacRoleMapping パラメータを使用して、アイデンティティセンターのグループを Argo CD ロールにマッピングするように、ロールマッピングを設定します。Argo CD UI は独自のダイレクト URL (クラスターの [機能] タブの EKS コンソールで確認) でホストされ、API アクセスは IAM を介した AWS 認証と認可を使用します。

クラスター設定: ローカルクラスターやハブアンドスポークトポロジは自動的には設定されません。自分でデプロイターゲットクラスターと EKS アクセスエントリを設定します。Amazon EKS クラスターがデプロイターゲットとしてサポートされるのは、Kubernetes API サーバー URL ではなく EKS クラスター ARN を使用している場合のみです。ローカルクラスター (kubernetes.default.svc) がデプロイターゲットとして自動的に追加されることはありません。機能の作成先と同じクラスターにデプロイするには、ARN を使用してそのクラスターを明示的に登録します。

シンプルなリモートクラスターアクセス: EKS アクセスエントリを使用して Argo CD にリモートクラスターへのアクセスを許可することで、マルチクラスターのデプロイをシンプルにします。そのため、サービスアカウントの IAM ロール (IRSA) を設定したり、クロスアカウント IAM ロールの前提条件をセットアップしたりする必要がありません。また、VPC ピアリングや特殊なネットワーク設定を施すことなく、完全にプライベートな EKS クラスターに透過的にアクセスできます。AWS が Argo CD 機能とプライベートリモートクラスターとの接続を自動的に管理します。

AWS サービスの直接統合: 機能ロールの IAM アクセス許可により、AWS サービスを直接統合します。リポジトリ設定を作成しなくても、CodeCommit リポジトリ、ECR Helm チャート、および CodeConnections を Application リソースで直接参照できます。これにより、認証がシンプルになり、AWS サービスごとに認証情報を管理する必要がありません。詳細については、「リポジトリアクセスを設定する」を参照してください。

名前空間のサポート: 現在のところ、機能の作成時に指定した 1 つの名前空間に限り、アプリケーションのデプロイがサポートされます。複数の名前空間に対するアプリケーションのサポートは、今後のリリースで追加される可能性があります。

サポートされていない機能: 次の機能は、マネージド機能では使用できません。

  • Config Management Plugin (CMP) によるカスタムマニフェストの生成

  • カスタム Lua スクリプトによるリソースヘルスの評価 (標準リソースに対する組み込みのヘルスチェックはサポートされています)

  • Notifications コントローラー

  • Argo CD Image Updater

  • カスタム SSO プロバイダー (AWS アイデンティティセンターを利用したサードパーティーのフェデレーション ID を含め、AWS アイデンティティセンターのみがサポートされています)

  • UI の拡張機能とカスタムのバナー

  • argocd-cmargocd-params などの設定 ConfigMaps への直接アクセス

互換性: Application と ApplicationSet は、アップストリーム Argo CD と同じように動作し、マニフェストの変更は不要です。この機能は同じ Kubernetes API と CRD を使用するため、kubectl のようなツールは同じように機能します。完全にサポートされるのは、Application と ApplicationSet、自動同期を備えた GitOps ワークフロー、マルチクラスターデプロイ、同期ポリシー (自動、プルーニング、自己修復)、同期ウェーブと同期フック、標準 Kubernetes リソースのヘルス評価、ロールバック機能、Git リポジトリソース (HTTPS と SSH)、Helm、Kustomize、プレーン YAML マニフェスト、GitHub アプリ認証情報、マルチテナンシーのプロジェクト、リソースの除外と包含です。

マネージド機能で Argo CD CLI を使用する

Argo CD CLI は、ほとんどのオペレーションでアップストリーム Argo CD と同じように動作しますが、認証とクラスター登録が異なります。

前提条件

アップストリームインストール手順に従って Argo CD CLI をインストールしていること。

設定

環境変数を使用して CLI を設定する:

  1. EKS コンソール (クラスターの [機能] タブの下) または AWS CLI を使用して、Argo CD サーバー URL を取得します。

    export ARGOCD_SERVER=$(aws eks describe-capability \ --cluster-name my-cluster \ --capability-name my-argocd \ --query 'capability.configuration.argoCd.serverUrl' \ --output text \ --region region-code)
  2. Argo CD UI ([設定][アカウント][管理者][新しいトークンを生成]) からアカウントトークンを生成して、環境変数として設定します。

    export ARGOCD_AUTH_TOKEN="your-token-here"
重要

このように生成した管理者アカウントトークンは、初期セットアップと開発ワークフローに使用します。本番稼働のユースケースでは、プロジェクト範囲のロールとトークンを使用して、最小特権の原則に従います。Project のロールと RBAC の詳細については、「Argo CD アクセス許可を設定する」を参照してください。

  1. 必要な gRPC オプションを設定します。

    export ARGOCD_OPTS="--grpc-web"

これらの環境変数を設定すると、argocd login コマンドを実行しなくても Argo CD CLI を使用できます。

主な違い

マネージド機能では、CLI に次の制限があります。

  • argocd admin コマンドはサポートされていません (直接ポッドアクセスが必要です)。

  • argocd login はサポートされていません (代わりにアカウントトークンまたはプロジェクトトークンを使用します)。

  • argocd cluster add には、EKS クラスター ARN を指定した --aws-cluster-name フラグが必要です。

例: クラスターを登録する

アプリケーションをデプロイするための EKS クラスターを登録します。

# Get the cluster ARN CLUSTER_ARN=$(aws eks describe-cluster \ --name my-cluster \ --query 'cluster.arn' \ --output text) # Register the cluster argocd cluster add $CLUSTER_ARN \ --aws-cluster-name $CLUSTER_ARN \ --name in-cluster \ --project default

Argo CD CLI の詳細なドキュメントについては、「Argo CD CLI リファレンス」を参照してください。

移行パス

セルフマネージド Argo CD からマネージド機能に移行できます。

  1. サポートされていない機能 (Notifications コントローラー、CMP、カスタムヘルスチェック) の現在の Argo CD 設定を確認します。

  2. セルフマネージド Argo CD コントローラーをゼロレプリカにスケールします。

  3. クラスターに Argo CD 機能リソースを作成します。

  4. 既存の Application、ApplicationSet、AppProject をエクスポートします。

  5. リポジトリ認証情報、クラスターシークレット、リポジトリ認証情報テンプレート (repocreds) を移行します。

  6. GPG キー、TLS 証明書、または SSH 既知のホストを使用する場合は、こうした設定も移行します。

  7. クラスター名または EKS クラスター ARN を使用するように destination.server フィールドを更新します。

  8. それらをマネージド Argo CD インスタンスに適用します。

  9. アプリケーションが正しく同期されていることを確認します。

  10. セルフマネージド Argo CD インストールを廃止します。

マネージド機能は同じ Argo CD API とリソース定義を使用するため、既存のマニフェストは最小限の変更を加えるだけで動作します。

次のステップ