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: 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-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: 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 コミットまたはタグに更新します。

その他のリソース