このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
Application を作成する
Application は、ターゲットクラスター内のデプロイを表します。Application ごとに、ソース (Git リポジトリ) と宛先 (クラスターと名前空間) を定義します。適用すると、Argo CD は Git リポジトリのマニフェストで指定されたリソースをクラスター内の名前空間に作成します。Application では、ワークロードのデプロイを指定することが多くなるものの、送信先クラスターで使用可能な Kubernetes リソースを管理することもできます。
前提条件
-
EKS クラスターに Argo CD 機能が作成されていること
-
リポジトリアクセスが設定されていること (「リポジトリアクセスを設定する」を参照)
-
ターゲットクラスターが登録されていること (「ターゲットクラスターを登録する」を参照)
-
クラスターと通信できるように
kubectlが設定されていること
基本的な Application を作成する
Git リポジトリからデプロイする Application を定義します。
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: guestbook namespace: argocd spec: project: default source: repoURL: https://github.com/argoproj/argocd-example-apps targetRevision: HEAD path: guestbook destination: server: arn:aws:eks:us-west-2:111122223333:cluster/my-cluster namespace: default
重要
Kubernetes API サーバー URL ではなく、destination.server フィールドで EKS クラスター ARN を使用します。マネージド機能では、ARN でクラスターを識別する必要があります。
Application を適用します。
kubectl apply -f application.yaml
アプリケーションのステータスを表示します。
kubectl get application guestbook -n argocd
ソース設定
Git リポジトリ:
spec: source: repoURL: https://github.com/example/my-app targetRevision: main path: kubernetes/manifests
特定の Git タグまたはコミット:
spec: source: targetRevision: v1.2.0 # or commit SHA
Helm チャート –
spec: source: repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - values.yaml parameters: - name: image.tag value: v1.2.0
ECR Helm チャート:
spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-nametargetRevision:chart-versionchart:chart-name
機能ロールに必要な ECR アクセス許可がある場合、リポジトリが直接使用されるため、リポジトリ設定は必要ありません。詳細については、「リポジトリアクセスを設定する」を参照してください。
CodeCommit の Git リポジトリ:
spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-nametargetRevision: main path: kubernetes/manifests
機能ロールに必要な CodeCommit アクセス許可がある場合、リポジトリが直接使用されるため、リポジトリ設定は必要ありません。詳細については、「リポジトリアクセスを設定する」を参照してください。
CodeConnections の Git リポジトリ:
spec: source: repoURL: https://codeconnections.region.amazonaws.com/git-http/account-id/region/connection-id/owner/repository.git targetRevision: main path: kubernetes/manifests
リポジトリ URL 形式は、CodeConnections 接続 ARN から取得されます。機能ロールに必要な CodeConnections アクセス許可があり、接続が設定されている場合、リポジトリが直接使用されるため、リポジトリ設定は必要ありません。詳細については、「リポジトリアクセスを設定する」を参照してください。
Kustomize:
spec: source: repoURL: https://github.com/example/kustomize-app targetRevision: main path: overlays/production kustomize: namePrefix: prod-
同期ポリシー
Argo CD によるアプリケーション同期の方法を制御します。
手動同期 (デフォルト):
アプリケーションを同期するには、手動による承認が必要です。
spec: syncPolicy: {} # No automated sync
手動で同期をトリガーします。
kubectl patch application guestbook -n argocd \ --type merge \ --patch '{"operation": {"initiatedBy": {"username": "admin"}, "sync": {}}}'
自動同期:
アプリケーションは、Git の変更が検出されたら自動的に同期します。
spec: syncPolicy: automated: {}
自己修復:
クラスターに手動で加えられた変更を自動的に元に戻します。
spec: syncPolicy: automated: selfHeal: true
有効にすると、Argo CD はクラスターに手動で直接加えられた変更を元に戻して、Git を信頼できるソースとして維持します。
プルーニング:
Git から除去されたリソースを自動的に削除します。
spec: syncPolicy: automated: prune: true
警告
プルーニングにより、クラスターからリソースが削除されます。本番稼働環境での使用には注意が必要です。
自動同期を組み合わせる:
spec: syncPolicy: automated: prune: true selfHeal: true syncOptions: - CreateNamespace=true
同期オプション
追加の同期設定:
名前空間が存在しない場合には作成する:
spec: syncPolicy: syncOptions: - CreateNamespace=true
適用する前にリソースを検証する:
spec: syncPolicy: syncOptions: - Validate=true
同期が取れていない場合にのみ適用する:
spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true
高度な同期機能
Argo CD では、複雑なデプロイ向けに高度な同期機能をサポートしています。
-
同期ウェーブ -
argocd.argoproj.io/sync-wave注釈を使用してリソースの作成順序を制御します。 -
同期フック -
argocd.argoproj.io/hook注釈を使用して同期の前後にジョブを実行します (PreSync、PostSync、SyncFail) -
リソースのヘルス評価 - アプリケーションに固有のリソースのカスタムヘルスチェックです。
詳細については、Argo CD ドキュメントの「同期ウェーブ
差分を無視する
Argo CD が他のコントローラー (HPA 管理レプリカなど) で管理されている特定のフィールドを同期しないようにします。
spec: ignoreDifferences: - group: apps kind: Deployment jsonPointers: - /spec/replicas
無視パターンとフィールド除外の詳細については、Argo CD ドキュメントの「差分比較のカスタマイズ
マルチ環境デプロイ
複数の環境に同じアプリケーションをデプロイします。
の開発
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-dev namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: develop path: overlays/development destination: server: arn:aws:eks:us-west-2:111122223333:cluster/dev-cluster namespace: my-app
本番稼働:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: my-app-prod namespace: argocd spec: project: default source: repoURL: https://github.com/example/my-app targetRevision: main path: overlays/production destination: server: arn:aws:eks:us-west-2:111122223333:cluster/prod-cluster namespace: my-app syncPolicy: automated: prune: true selfHeal: true
Application をモニタリングおよび管理する
アプリケーションのステータスを表示する:
kubectl get application my-app -n argocd
Argo CD UI にアクセスする:
EKS コンソールから Argo CD UI を開いて、アプリケーションのトポロジ、同期ステータス、リソースヘルス、デプロイ履歴を表示します。UI アクセスの手順については、「Argo CD の使用」を参照してください。
Application をロールバックする:
以前のリビジョンにロールバックするには、Argo CD UI を使用するか、Application 仕様の targetRevision を以前の Git コミットまたはタグに更新します。
その他のリソース
-
Argo CD Project を操作する - Project でマルチテナント環境向けの Application を整理する
-
ApplicationSet を使用する - テンプレートで複数のクラスターにデプロイする
-
Application 仕様
- 詳細なアプリケーション API リファレンス -
同期オプション
- 高度な同期設定