feat(argocd-apps): Add ArgoCD ApplicationSet (#1521)
* Add ArgoCD ApplicationSet Signed-off-by: toyamagu <toyamagu2021@gmail.com> Signed-off-by: Petr Drastil <petr.drastil@gmail.com> Co-authored-by: Petr Drastil <petr.drastil@gmail.com>
This commit is contained in:
parent
9b2f24514c
commit
14d2b8313e
6 changed files with 171 additions and 4 deletions
5
.github/workflows/lint-and-test.yml
vendored
5
.github/workflows/lint-and-test.yml
vendored
|
@ -59,10 +59,11 @@ jobs:
|
||||||
if: steps.list-changed.outputs.changed == 'true'
|
if: steps.list-changed.outputs.changed == 'true'
|
||||||
with:
|
with:
|
||||||
config: .github/configs/kind-config.yaml
|
config: .github/configs/kind-config.yaml
|
||||||
|
|
||||||
- name: Deploy latest ArgoCD CRDs when testing ArgoCD extensions
|
- name: Deploy latest ArgoCD CRDs when testing ArgoCD extensions
|
||||||
if: |
|
if: |
|
||||||
contains(steps.list-changed.outputs.changed_charts, 'argocd-image-updater')
|
contains(steps.list-changed.outputs.changed_charts, 'argocd-image-updater') ||
|
||||||
|
contains(steps.list-changed.outputs.changed_charts, 'argocd-apps')
|
||||||
run: |
|
run: |
|
||||||
helm repo add dandydeveloper https://dandydeveloper.github.io/charts/
|
helm repo add dandydeveloper https://dandydeveloper.github.io/charts/
|
||||||
helm dependency build charts/argo-cd/
|
helm dependency build charts/argo-cd/
|
||||||
|
|
|
@ -2,7 +2,7 @@ apiVersion: v2
|
||||||
name: argocd-apps
|
name: argocd-apps
|
||||||
description: A Helm chart for managing additional Argo CD Applications and Projects
|
description: A Helm chart for managing additional Argo CD Applications and Projects
|
||||||
type: application
|
type: application
|
||||||
version: 0.0.1
|
version: 0.0.2
|
||||||
home: https://github.com/argoproj/argo-helm
|
home: https://github.com/argoproj/argo-helm
|
||||||
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
|
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
|
||||||
keywords:
|
keywords:
|
||||||
|
@ -14,4 +14,4 @@ maintainers:
|
||||||
url: https://argoproj.github.io/
|
url: https://argoproj.github.io/
|
||||||
annotations:
|
annotations:
|
||||||
artifacthub.io/changes: |
|
artifacthub.io/changes: |
|
||||||
- "[Added]: Add additional Applications and Projects"
|
- "[Added]: Add ApplicationSets"
|
||||||
|
|
|
@ -25,6 +25,7 @@ $ helm install my-release argo/argocd-apps
|
||||||
| Key | Type | Default | Description |
|
| Key | Type | Default | Description |
|
||||||
|-----|------|---------|-------------|
|
|-----|------|---------|-------------|
|
||||||
| applications | list | `[]` (See [values.yaml]) | Deploy Argo CD Applications within this helm release |
|
| applications | list | `[]` (See [values.yaml]) | Deploy Argo CD Applications within this helm release |
|
||||||
|
| applicationsets | list | `[]` (See [values.yaml]) | Deploy Argo CD ApplicationSets within this helm release |
|
||||||
| projects | list | `[]` (See [values.yaml]) | Deploy Argo CD Projects within this helm release |
|
| projects | list | `[]` (See [values.yaml]) | Deploy Argo CD Projects within this helm release |
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
|
|
45
charts/argocd-apps/ci/applicationsets-values.yaml
Normal file
45
charts/argocd-apps/ci/applicationsets-values.yaml
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Test with applicationsets
|
||||||
|
|
||||||
|
applicationsets:
|
||||||
|
- name: guestbook
|
||||||
|
namespace: default # Only for test purpose.
|
||||||
|
additionalLabels: {}
|
||||||
|
additionalAnnotations: {}
|
||||||
|
# See PR #10026 (ArgoCD v2.5 or later)
|
||||||
|
# goTemplate: false
|
||||||
|
generators:
|
||||||
|
- git:
|
||||||
|
repoURL: https://github.com/argoproj/argocd-example-apps.git
|
||||||
|
revision: HEAD
|
||||||
|
directories:
|
||||||
|
- path: guestbook
|
||||||
|
- path: kustomize-*
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: '{{path.basename}}'
|
||||||
|
labels: {}
|
||||||
|
annotations: {}
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: https://github.com/argoproj/argocd-example-apps.git
|
||||||
|
targetRevision: HEAD
|
||||||
|
path: '{{path}}'
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: default
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: false
|
||||||
|
selfHeal: false
|
||||||
|
ignoreDifferences:
|
||||||
|
- group: apps
|
||||||
|
kind: Deployment
|
||||||
|
jsonPointers:
|
||||||
|
- /spec/replicas
|
||||||
|
info:
|
||||||
|
- name: url
|
||||||
|
value: https://argoproj.github.io/
|
||||||
|
syncPolicy:
|
||||||
|
# Set Application finalizer
|
||||||
|
preserveResourcesOnDeletion: false
|
73
charts/argocd-apps/templates/applicationsets.yaml
Normal file
73
charts/argocd-apps/templates/applicationsets.yaml
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
|
||||||
|
{{- range .Values.applicationsets }}
|
||||||
|
---
|
||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: ApplicationSet
|
||||||
|
metadata:
|
||||||
|
{{- with .additionalAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- range $key, $value := . }}
|
||||||
|
{{ $key }}: {{ $value | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .additionalLabels }}
|
||||||
|
labels:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ .name }}
|
||||||
|
{{- with .namespace }}
|
||||||
|
namespace: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if hasKey . "goTemplate" }}
|
||||||
|
goTemplate: {{ .goTemplate }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .generators }}
|
||||||
|
generators:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .syncPolicy }}
|
||||||
|
syncPolicy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .template }}
|
||||||
|
template:
|
||||||
|
{{- with .metadata }}
|
||||||
|
metadata:
|
||||||
|
{{- with .annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- range $key, $value := . }}
|
||||||
|
{{ $key }}: {{ $value | squote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .labels }}
|
||||||
|
labels:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
name: {{ .name | squote }}
|
||||||
|
{{- with .namespace }}
|
||||||
|
namespace: {{ . | squote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .spec }}
|
||||||
|
spec:
|
||||||
|
project: {{ tpl .project $ }}
|
||||||
|
source:
|
||||||
|
{{- toYaml .source | nindent 8 }}
|
||||||
|
destination:
|
||||||
|
{{- toYaml .destination | nindent 8 }}
|
||||||
|
{{- with .syncPolicy }}
|
||||||
|
syncPolicy:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .ignoreDifferences }}
|
||||||
|
ignoreDifferences:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .info }}
|
||||||
|
info:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
|
@ -74,3 +74,50 @@ projects: []
|
||||||
# manualSync: true
|
# manualSync: true
|
||||||
# signatureKeys:
|
# signatureKeys:
|
||||||
# - keyID: ABCDEF1234567890
|
# - keyID: ABCDEF1234567890
|
||||||
|
|
||||||
|
# -- Deploy Argo CD ApplicationSets within this helm release
|
||||||
|
# @default -- `[]` (See [values.yaml])
|
||||||
|
## Ref: https://argo-cd.readthedocs.io/en/stable/operator-manual/applicationset/
|
||||||
|
applicationsets: []
|
||||||
|
# - name: guestbook
|
||||||
|
# namespace: argocd
|
||||||
|
# additionalLabels: {}
|
||||||
|
# additionalAnnotations: {}
|
||||||
|
# # See PR #10026 (ArgoCD v2.5 or later)
|
||||||
|
# # goTemplate: false
|
||||||
|
# generators:
|
||||||
|
# - git:
|
||||||
|
# repoURL: https://github.com/argoproj/argocd-example-apps.git
|
||||||
|
# revision: HEAD
|
||||||
|
# directories:
|
||||||
|
# - path: guestbook
|
||||||
|
# - path: kustomize-*
|
||||||
|
# template:
|
||||||
|
# metadata:
|
||||||
|
# name: '{{path.basename}}'
|
||||||
|
# labels: {}
|
||||||
|
# annotations: {}
|
||||||
|
# spec:
|
||||||
|
# project: default
|
||||||
|
# source:
|
||||||
|
# repoURL: https://github.com/argoproj/argocd-example-apps.git
|
||||||
|
# targetRevision: HEAD
|
||||||
|
# path: '{{path}}'
|
||||||
|
# destination:
|
||||||
|
# server: https://kubernetes.default.svc
|
||||||
|
# namespace: default
|
||||||
|
# syncPolicy:
|
||||||
|
# automated:
|
||||||
|
# prune: false
|
||||||
|
# selfHeal: false
|
||||||
|
# ignoreDifferences:
|
||||||
|
# - group: apps
|
||||||
|
# kind: Deployment
|
||||||
|
# jsonPointers:
|
||||||
|
# - /spec/replicas
|
||||||
|
# info:
|
||||||
|
# - name: url
|
||||||
|
# value: https://argoproj.github.io/
|
||||||
|
# syncPolicy:
|
||||||
|
# # Set Application finalizer
|
||||||
|
# preserveResourcesOnDeletion: false
|
||||||
|
|
Loading…
Reference in a new issue