Argo CD による継続的デリバリー
ACK ラボでは、ACK capability を使用して Kubernetes から AWS リソースをプロビジョニングしました。このラボでは、アプリケーションがクラスターに_デリバリー_される方法を変更します。kubectl apply を手動で実行する代わりに、Argo CD EKS capability を使用して catalog サービスを Git リポジトリから継続的に reconcile させます。
Argo CD はセルフマネージド Argo CD ラボで示されているように、自分で実行することができます。そこでは helm install argocd を実行し、argocd-server LoadBalancer を待機し、初期管理者シークレットを取得します。その場合、そのコントロールプレーンの可用性、スケーリング、パッチ適用、アップグレードを所有することになります。このラボでは代わりに Argo CD EKS capability を使用します。コントロールプレーンは、クラスターの外部の AWS 管理インフラストラクチャで実行され、AWS がその運用を処理し、IAM Capability Role を引き受けて CodeCommit からプルし、クラスターにデプロイします。
- Argo CD EKS 管理 capability が
ACTIVE状態で、サインイン用に AWS IAM Identity Center とフェデレーションされています(ローカルユーザーや管理者パスワードはありません)。 - AWS CodeCommit リポジトリには
catalogマニフェストが事前にシードされており、capability は IAM ロールを使用してそこからプルするため、SSH キーや Git 認証情報を管理する必要がありません。 git-remote-codecommitは、リポジトリをクローンするために web IDE に事前インストールされています。
このラボを通じて、以下を実施します:
- Argo CD capability が
ACTIVE状態であり、Argo CD API リソースがクラスターに存在することを確認します。 - クラスターを Argo CD デプロイメントターゲットとして登録し、シードされた CodeCommit リポジトリを指す
Applicationを作成し、自動同期を有効にします。 - CodeCommit にレプリカ数の変更をプッシュして GitOps 更新をトリガーし、Argo CD が自動的にロールアウトするのを確認します。
以下のすべてのステップは、Kubernetes API (argoproj.io リソースに対する kubectl)を通じて Argo CD を駆動するため、サインインなしでラボが機能します。Identity Center UI サインインは、ダッシュボードを探索したい場合のオプションのウォークスルーです。
capability の確認
capability が ACTIVE であることを確認します:
ACTIVE
capability は CREATING → ACTIVE を経由して遷移します。ステータスが ACTIVE 以外の場合は、しばらく待ってからコマンドを再実行してください。
次に、Argo CD Custom Resource Definitions (CRD) がクラスターに登録されていることを確認します:
NAME SHORTNAMES APIVERSION NAMESPACED KIND
applications app,apps argoproj.io/v1alpha1 true Application
applicationsets appset,as argoproj.io/v1alpha1 true ApplicationSet
appprojects appproj,... argoproj.io/v1alpha1 true AppProject
CRD は存在しますが、Argo CD コントロールプレーンは存在しません。ノード上で Argo CD が実行されていないことを確認します:
No Argo CD pods in the cluster
これが管理された capability の全体的なポイントです。セルフマネージド Argo CD ラボでは、argocd-server、repo-server、そして redis Pod を helm install し、それらのアップグレードとスケーリングを所有することになります。ここでは、そのコントロールプレーン全体がクラスター外の AWS 所有インフラストラクチャで実行されます。クラスター内に取得するのは CRD だけであり、これを使用して Application を宣言します。