

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Argo CD
<a name="argo-cd"></a>

Argo CD は、Kubernetes 用の広く使用されている GitOps 継続的デリバリー (CD) ツールで、いくつかの主要な GitOps 原則に準拠しています。

## GitOps のサポート
<a name="argo-cd-gitops"></a>


| [面積] | ツール機能 | 
| --- | --- | 
| 宣言型設定 | Argo CD は、Git リポジトリに保存されている宣言型設定を使用します。アプリケーションとインフラストラクチャの望ましい状態は、YAML ファイルで定義されます。これらの設定は、デプロイ方法ではなく、デプロイする内容を記述します。 | 
| 信頼できる単一のソースとしてのバージョン管理システム | Git リポジトリは、システム全体の唯一の信頼できるソースとして機能します。アプリケーションとインフラストラクチャに対するすべての変更は、Git を通じて行われます。これにより、完全な監査証跡と、以前の状態にロールバックできます。 | 
| 自動同期 | Argo CD は Git リポジトリの変更を継続的にモニタリングします。変更が検出されると、クラスターの実際の状態と Git で定義されている目的の状態が自動的に同期されます。これにより、クラスターにリポジトリで説明されている状態が常に反映されます。 | 
| Kubernetes ネイティブ | Argo CD は、Kubernetes 環境専用に設計されています。Kubernetes の宣言的な性質とカスタムリソースを活用してアプリケーションを管理します。 | 
| 自己修復とドリフト検出 | Argo CD は、クラスターのライブ状態と Git の希望する状態を定期的に比較します。ドリフト (実際の状態と目的の状態の相違) が検出されると、これらの不一致を自動的に修正できます。 | 
| マルチクラスターとマルチテナンシーのサポート | Argo CD は、1 つのインスタンスから複数の Kubernetes クラスターを管理できます。マルチテナンシーをサポートしているため、さまざまなチームがアプリケーションを個別に管理できます。 | 
| アプリケーション定義 | Argo CD のアプリケーションは、Application CRD (カスタムリソース定義) を使用して定義されます。これにより、デプロイする対象とその方法を定義する Kubernetes ネイティブな方法が可能になります。 | 
| デプロイとリリースの分離 | Argo CD は、リリースからユーザーへのコードのデプロイを分離します。これは、ブルー/グリーンデプロイや Canary デプロイなどのさまざまなデプロイ戦略を通じて実現されます。 | 
| オブザーバビリティと監査可能性 | Argo CD は、アプリケーションとクラスターの状態を監視するためのウェブ UI と CLI を提供します。変更とデプロイの明確な監査証跡を提供するために、すべてのアクションがログに記録されます。 | 
| セキュリティと RBAC | Argo CD は、Kubernetes ロールベースのアクセスコントロール (RBAC) と統合されています。認証と認可のためのシングルサインオン統合をサポートしています。 | 
| プラグ可能なアーキテクチャ | Argo CD は、さまざまなソース管理システム、Helm チャート、Kustomize、およびその他の Kubernetes マニフェスト形式をサポートしています。この柔軟性により、さまざまな環境やワークフローに対応できます。 | 
| 継続的デリバリー (CD) | Argo CD は継続的デリバリーに焦点を当てていますが、継続的インテグレーション (CI) ツールと統合して、完全な CI/CD パイプラインを作成できます。 | 

これらの GitOps の原則に従うことで、Argo CD は Kubernetes デプロイを管理するための堅牢でスケーラブル、安全な方法を提供します。これにより、システムの運用状態が Git リポジトリで定義されている目的の状態と常に同期され、複雑な Kubernetes 環境での一貫性、信頼性、管理が容易になります。

Argo CD が対処できるシナリオと要件については、このガイドの後半にある[「Argo CD のユースケース](use-cases.md#argo-cd-use-cases)」を参照してください。Argo CD と Flux の比較については、このガイドの後半にある[「特徴の比較](use-cases.md#argo-flux-comparison)」を参照してください。

詳細については、[「Argo CD ドキュメント](https://argo-cd.readthedocs.io/en/stable/)」を参照してください。

## アーキテクチャ
<a name="argo-cd-architecture"></a>

次の図は、EKS クラスター内で Argo CD を使用する GitOps 駆動型 CD ワークフローを示しています。詳細については、[「Argo CD ドキュメント](https://argo-cd.readthedocs.io/en/stable/operator-manual/architecture/)」を参照してください。

![Argo CD アーキテクチャとワークフロー AWS](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/eks-gitops-tools/images/argo-cd-on-aws.png)


各パラメータの意味は次のとおりです。
+ **ステップ 1: プルリクエスト (PR) マージ**。開発者は、Git リポジトリに保存されている Kubernetes マニフェストまたは Helm チャートに変更をコミットします。PR がレビューされ、メインブランチにマージされると、アプリケーションの望ましい状態がソース管理で更新されます。
+ **ステップ 2: リポジトリ同期**。Argo CD は EKS クラスター内の専用名前空間 (`argocd`) 内で実行され、設定された Git リポジトリを継続的にモニタリングします。変更を検出すると、最新の更新がプルされ、宣言された状態が調整されます。
+ **ステップ 3: ターゲット名前空間へのデプロイ**。Argo CD は、Git から必要な状態をクラスター内のライブ状態と比較します。次に、ターゲットワークロード名前空間に必要な変更を適用して、それに応じてアプリケーションをデプロイまたは更新します。これには、デプロイ、サービス、ConfigMaps、シークレットなどの Kubernetes リソースを管理し、Git の信頼できるソースとのクラスターの一貫性を維持することが含まれます。