Application を作成する - Amazon EKS

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

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

Application を作成する

Application は、ターゲットクラスター内のデプロイを表します。Application ごとに、ソース (Git リポジトリ) と宛先 (クラスターと名前空間) を定義します。適用すると、Argo CD は Git リポジトリのマニフェストで指定されたリソースをクラスター内の名前空間に作成します。Application では、ワークロードのデプロイを指定することが多くなるものの、送信先クラスターで使用可能な Kubernetes リソースを管理することもできます。

前提条件

基本的な 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: name: in-cluster namespace: default
注記

クラスターの登録時に使用したクラスター名で destination.name を使用します (ローカルクラスターの in-cluster の場合など)。destination.server フィールドは EKS クラスター 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

外部 Git リポジトリの値を含む Helm チャート (マルチソースパターン):

spec: sources: - repoURL: https://github.com/example/helm-charts targetRevision: main path: charts/my-app helm: valueFiles: - $values/environments/production/values.yaml - repoURL: https://github.com/example/config-repo targetRevision: main ref: values

詳細については、Argo CD ドキュメントの「Helm Value Files from External Git Repository」を参照してください。

ECR Helm チャート:

spec: source: repoURL: oci://account-id.dkr.ecr.region.amazonaws.com/repository-name targetRevision: chart-version chart: chart-name

機能ロールに必要な ECR アクセス許可がある場合、リポジトリが直接使用されるため、リポジトリ設定は必要ありません。詳細については、「リポジトリアクセスを設定する」を参照してください。

CodeCommit の Git リポジトリ:

spec: source: repoURL: https://git-codecommit.region.amazonaws.com/v1/repos/repository-name targetRevision: 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: retry: limit: 5 # Number of failed sync attempts; unlimited if less than 0 backoff: duration: 5s # Amount to back off (default unit: seconds, also supports "2m", "1h") factor: 2 # Factor to multiply the base duration after each failed retry maxDuration: 3m # Maximum amount of time allowed for the backoff strategy

これは、最初に作成される CRD に依存するリソースや、CRD がすぐに利用できない可能性がある kro インスタンスを操作する場合に特に便利です。

同期オプション

追加の同期設定:

名前空間が存在しない場合には作成する:

spec: syncPolicy: syncOptions: - CreateNamespace=true

リソースが見つからない場合は、ドライランをスキップする:

まだ存在しない CRD (kro インスタンスなど) に依存するリソースを適用する場合に便利です。

spec: syncPolicy: syncOptions: - SkipDryRunOnMissingResource=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: name: 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: name: 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、Argo CD CLI を使用するか、Application 仕様の targetRevision を以前の Git コミットまたはタグに更新します。

Argo CD CLI を使用する:

argocd app rollback argocd/my-app <revision-id>
注記

マネージド機能で Argo CD CLI を使用する場合は、名前空間プレフィックス namespace/appname を使用してアプリケーションを指定します。

詳細は、Argo CD ドキュメントの「argocd app rollback」を参照してください。

その他のリソース