В argocd удобно создавать так называемый root application, который разворачивает все остальные app. Манифест:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-app
namespace: argocd
finalizers:
- resources-finalizer.argocd.argoproj.io
spec:
destination:
namespace: argocd
server: https://kubernetes.default.svc
project: dev
source:
path: "app/"
repoURL: git@gitlab.dev.lan:root/argocd.git
targetRevision: HEAD
syncPolicy:
automated:
prune: true
selfHeal: true
Я использую репозиторий argocd, где в директории app лежат манифесты самих app. Пример с keycloak:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: keycloak
namespace: argocd
spec:
destination:
namespace: keycloak
server: https://kubernetes.default.svc
project: dev
source:
helm:
valueFiles:
- values.yaml
path: keycloak
repoURL: git@gitlab.dev.lan:root/helm-charts.git
targetRevision: main
syncPolicy:
automated: {}
При развертывании любым удобным способом root-app, он автоматически развернет все приложения из директории app/.
В свою очередь эти приложения могут смотреть например на другие репозитории, как keycloak.
#argocd