セットアップ
Helmチャートを使用してDRY(Don't Repeat Yourself)アプローチでArgo CDアプリケーションのテンプレートを作成します:
.
|-- app-of-apps
| |-- Chart.yaml
| |-- templates
| | |-- _application.yaml
| | `-- application.yaml
| `-- values.yaml
|-- ui
`-- catalog
...
_application.yamlはテンプレートファイルで、コンポーネント名のリストに基づいてアプリケーションを動的に作成するために使用されます:
{{- define "application" -}}
{{- $root:= . }}
{{- range $application := .Values.applications}}
---
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: {{ $application.name }}
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
labels:
app.kubernetes.io/created-by: eks-workshop
spec:
project: default
destination:
server: {{ $root.Values.spec.destination.server }}
namespace: {{ $application.name }}
source:
repoURL: {{ $root.Values.spec.source.repoURL }}
targetRevision: {{ $root.Values.spec.source.targetRevision }}
path: {{ $application.name }}
syncPolicy:
syncOptions:
- CreateNamespace=true
automated:
prune: true
selfHeal: true
{{- end -}}
{{- end -}}
values.yamlファイルは、Argo CDアプリケーションが生成されるコンポーネントのリストと、すべてのアプリケー ション間で共通となるGitリポジトリに関連する設定を指定します:
spec:
destination:
server: https://kubernetes.default.svc
source:
repoURL: ${GITOPS_REPO_URL_ARGOCD}
targetRevision: main
applications:
- name: carts
- name: catalog
- name: checkout
- name: orders
- name: ui
アプリケーションがデプロイされるKubernetes APIサーバーエンドポイントを指定します(ローカルクラスター)
${GITOPS_REPO_URL_ARGOCD}環境変数を使用して、アプリケーションマニフェストを含むGitリポジトリと、追跡するGitブランチ(main)を指定します
applicationsリストは、デプロイされるアプリケーションの名前を指定します
まず、このApp of Appsの基本構成をGitディレクトリにコピーしましょう:
次に、これらの変更をGitリポジトリにコミットしてプッシュしましょう:
次に、App of Appsパターンを実装するための新しいArgo CDアプリケーションを作成する必要があります。この際、--sync-policy automatedフラグを使用して、Argo CDがクラスター内の状態をGitリポジトリの構成と自動的に同期できるようにします:
application 'apps' created
Argo CD UIを開いて、メインの「Applications」ページに移動します。私たちのApp of Apps構成はデプロイされ同期されていますが、UIコンポーネントを除くすべてのワークロードアプリは「Unknown」とマークされています。

次のステップで、ワークロードの構成をデプロイします。