メインコンテンツまでスキップ

セットアップ

Helmチャートを使用してDRY(Don't Repeat Yourself)アプローチでArgo CDアプリケーションのテンプレートを作成します:

.
|-- app-of-apps
| |-- Chart.yaml
| |-- templates
| | |-- _application.yaml
| | `-- application.yaml
| `-- values.yaml
|-- ui
`-- catalog
...

_application.yamlはテンプレートファイルで、コンポーネント名のリストに基づいてアプリケーションを動的に作成するために使用されます:

~/environment/eks-workshop/modules/automation/gitops/argocd/app-of-apps/templates/_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リポジトリに関連する設定を指定します:

~/environment/eks-workshop/modules/automation/gitops/argocd/app-of-apps/values.yaml
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
A

アプリケーションがデプロイされるKubernetes APIサーバーエンドポイントを指定します(ローカルクラスター)

B

${GITOPS_REPO_URL_ARGOCD}環境変数を使用して、アプリケーションマニフェストを含むGitリポジトリと、追跡するGitブランチ(main)を指定します

C

applicationsリストは、デプロイされるアプリケーションの名前を指定します

まず、このApp of Appsの基本構成をGitディレクトリにコピーしましょう:

~$export GITOPS_REPO_URL_ARGOCD="ssh://git@${GITEA_SSH_HOSTNAME}:2222/workshop-user/argocd.git"
~$cp -R ~/environment/eks-workshop/modules/automation/gitops/argocd/app-of-apps ~/environment/argocd/
~$yq -i ".spec.source.repoURL = env(GITOPS_REPO_URL_ARGOCD)" ~/environment/argocd/app-of-apps/values.yaml

次に、これらの変更をGitリポジトリにコミットしてプッシュしましょう:

~$git -C ~/environment/argocd add .
~$git -C ~/environment/argocd commit -am "Adding App of Apps"
~$git -C ~/environment/argocd push

次に、App of Appsパターンを実装するための新しいArgo CDアプリケーションを作成する必要があります。この際、--sync-policy automatedフラグを使用して、Argo CDがクラスター内の状態をGitリポジトリの構成と自動的に同期できるようにします:

~$argocd app create apps --repo ssh://git@${GITEA_SSH_HOSTNAME}:2222/workshop-user/argocd.git \
--dest-server https://kubernetes.default.svc \
--sync-policy automated --self-heal --auto-prune \
--set-finalizer \
--upsert \
--path app-of-apps
 application 'apps' created
~$argocd app wait apps --timeout 120

Argo CD UIを開いて、メインの「Applications」ページに移動します。私たちのApp of Apps構成はデプロイされ同期されていますが、UIコンポーネントを除くすべてのワークロードアプリは「Unknown」とマークされています。

argocd-ui-apps.png

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