diff --git a/.github/linters/.jscpd.json b/.github/linters/.jscpd.json index f7dc8c7..f771907 100644 --- a/.github/linters/.jscpd.json +++ b/.github/linters/.jscpd.json @@ -1,6 +1,5 @@ { "ignore": [ - "templates/plumbing/hosted-sites.yaml", "templates/plumbing/applications.yaml", "templates/imperative/_helpers.tpl", "templates/core/subscriptions.yaml", diff --git a/Chart.yaml b/Chart.yaml index cb285b8..333657d 100644 --- a/Chart.yaml +++ b/Chart.yaml @@ -3,7 +3,7 @@ description: A Helm chart to create per-clustergroup ArgoCD applications and any keywords: - pattern name: clustergroup -version: 0.9.4 +version: 0.9.5 home: https://github.com/validatedpatterns/clustergroup-chart maintainers: - name: Validated Patterns Team diff --git a/templates/core/catalog-sources.yaml b/templates/core/catalog-sources.yaml index 73c2e94..3dd9ac4 100644 --- a/templates/core/catalog-sources.yaml +++ b/templates/core/catalog-sources.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{- range .Values.clusterGroup.indexImages }} {{- $name := mustRegexReplaceAll "[^/]*/(.*):.*" .image "${1}" | replace "/" "-" }} apiVersion: operators.coreos.com/v1alpha1 @@ -11,4 +10,3 @@ spec: image: {{ .image }} --- {{- end -}} -{{- end -}} diff --git a/templates/core/namespaces.yaml b/templates/core/namespaces.yaml index c9a26af..40e28d6 100644 --- a/templates/core/namespaces.yaml +++ b/templates/core/namespaces.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{- /* We first check if namespaces are defined as a map. If it is we call our helper function in _helpers.tpl to process the namespaces @@ -39,4 +38,3 @@ spec: --- {{- end }} {{- end }} -{{- end }} diff --git a/templates/core/operatorgroup.yaml b/templates/core/operatorgroup.yaml index 6adfef4..40f01e4 100644 --- a/templates/core/operatorgroup.yaml +++ b/templates/core/operatorgroup.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{- /* We first check if namespaces are defined as a map. If it is we call our helper function in _helpers.tpl to process the projects @@ -51,4 +50,3 @@ spec: {{- end }} {{- /* if or (empty $.Values.clusterGroup.operatorgroupExcludes) (not (has . $.Values.clusterGroup.operatorgroupExcludes)) */}} {{- end }} {{- /* range $ns := .Values.clusterGroup.namespaces */}} {{- end }} {{- /* if kindIs "map" $ns */}} -{{- end }} {{- /* if not (eq .Values.enabled "plumbing") */}} diff --git a/templates/core/subscriptions.yaml b/templates/core/subscriptions.yaml index f58f6c2..c261190 100644 --- a/templates/core/subscriptions.yaml +++ b/templates/core/subscriptions.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{- range .Values.clusterGroup.subscriptions }} {{- $subs := . }} {{- $installPlanValue := .installPlanApproval }} @@ -69,5 +68,3 @@ spec: --- {{- end }} {{- end }} ---- -{{- end }} diff --git a/templates/imperative/clusterrole.yaml b/templates/imperative/clusterrole.yaml index 0ad8ff6..0d72e3e 100644 --- a/templates/imperative/clusterrole.yaml +++ b/templates/imperative/clusterrole.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* This is always defined as we always unseal the cluster with an imperative job */}} {{- if $.Values.clusterGroup.imperative.serviceAccountCreate }} --- @@ -34,4 +33,3 @@ rules: verbs: - '*' {{- end }} {{/* if $.Values.clusterGroup.imperative.adminServiceAccountCreate */}} -{{- end }} diff --git a/templates/imperative/configmap.yaml b/templates/imperative/configmap.yaml index 9f2d615..8f03528 100644 --- a/templates/imperative/configmap.yaml +++ b/templates/imperative/configmap.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* This is always defined as we always unseal the cluster with an imperative job */}} {{- $valuesyaml := toYaml $.Values -}} apiVersion: v1 @@ -18,4 +17,3 @@ metadata: annotations: labels: config.openshift.io/inject-trusted-cabundle: 'true' -{{- end }} diff --git a/templates/imperative/job.yaml b/templates/imperative/job.yaml index 55400e8..3260969 100644 --- a/templates/imperative/job.yaml +++ b/templates/imperative/job.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* Define this if needed (jobs defined */}} {{- if (and $.Values.clusterGroup.imperative (gt (len $.Values.clusterGroup.imperative.jobs) 0)) -}} --- @@ -63,4 +62,3 @@ spec: {{- include "imperative.volumes_ca" . | indent 12 }} restartPolicy: Never {{- end }} -{{- end }} diff --git a/templates/imperative/rbac.yaml b/templates/imperative/rbac.yaml index 8bfad5b..f309223 100644 --- a/templates/imperative/rbac.yaml +++ b/templates/imperative/rbac.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* This is always defined as we always unseal the cluster with an imperative job */}} {{- if $.Values.clusterGroup.imperative.serviceAccountCreate -}} --- @@ -44,4 +43,3 @@ subjects: name: {{ $.Values.clusterGroup.imperative.adminServiceAccountName }} namespace: {{ $.Values.clusterGroup.imperative.namespace }} {{- end }} -{{- end }} diff --git a/templates/imperative/role.yaml b/templates/imperative/role.yaml index 63ad37d..0a8c95d 100644 --- a/templates/imperative/role.yaml +++ b/templates/imperative/role.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* This is always defined as we always unseal the cluster with an imperative job */}} --- apiVersion: rbac.authorization.k8s.io/v1 @@ -17,4 +16,3 @@ rules: verbs: - '*' {{- end }} -{{- end }} diff --git a/templates/imperative/serviceaccount.yaml b/templates/imperative/serviceaccount.yaml index a171d30..2c4ada2 100644 --- a/templates/imperative/serviceaccount.yaml +++ b/templates/imperative/serviceaccount.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} {{/* This is always defined as we always unseal the cluster with an imperative job */}} {{- if $.Values.clusterGroup.imperative.serviceAccountCreate }} apiVersion: v1 @@ -15,4 +14,3 @@ metadata: name: {{ $.Values.clusterGroup.imperative.adminServiceAccountName }} namespace: {{ $.Values.clusterGroup.imperative.namespace }} {{- end }} -{{- end }} diff --git a/templates/plumbing/applications.yaml b/templates/plumbing/applications.yaml index f30df92..1e3515a 100644 --- a/templates/plumbing/applications.yaml +++ b/templates/plumbing/applications.yaml @@ -1,123 +1,6 @@ -{{- if not (eq .Values.enabled "core") }} {{- $namespace := print $.Values.global.pattern "-" $.Values.clusterGroup.name }} -{{- if (eq .Values.enabled "plumbing") }} -{{- $namespace = "openshift-gitops" }} -{{- end }} {{- range .Values.clusterGroup.applications }} {{- if .disabled }} {{- /* This allows us to null out an Application entry by specifying disabled: true in an override file */}} -{{- else if or (.generators) (.generatorFile) (.useGeneratorValues) (.destinationServer) (.destinationNamespace) }} -apiVersion: argoproj.io/v1alpha1 -kind: ApplicationSet -metadata: - name: {{ .name }} - namespace: {{ $namespace }} - labels: - app: {{ .name }} -spec: - {{- if .generators }} - generators: {{ .generators | toPrettyJson }} - {{- else }} - generators: - - git: - repoURL: {{ $.Values.global.repoURL }} - revision: {{ $.Values.global.targetRevision }} - {{- if .generatorFile }} - files: - - path: {{ .generatorFile | quote }} - {{- end }} - {{- end }} - template: - metadata: - name: {{ coalesce .namespace $namespace }} - spec: - project: {{ .project }} - {{- if .syncPolicy }} - syncPolicy: {{ .syncPolicy | toPrettyJson }} - {{- else }} - syncPolicy: - automated: {} - retry: - limit: {{ default 20 $.Values.global.options.applicationRetryLimit }} - {{- end }} - {{- if .ignoreDifferences }} - ignoreDifferences: {{ .ignoreDifferences | toPrettyJson | nindent 2 }} - {{- end }} - source: - repoURL: {{ coalesce .repoURL $.Values.global.repoURL }} - targetRevision: {{ coalesce .targetRevision $.Values.global.targetRevision }} - {{- if .chart }} - chart: {{ .chart }} - {{- end }} - {{- if .path }} - path: {{ .path }} - {{- end }} - {{- if .plugin }} - plugin: {{ .plugin | toPrettyJson }} - {{- end }} - {{- if not .kustomize }} - helm: - ignoreMissingValueFiles: true - valueFiles: - {{- include "clustergroup.app.globalvalues.valuefiles" $ | nindent 12 }} - {{- range $valueFile := $.Values.clusterGroup.sharedValueFiles }} - - {{ tpl $valueFile $ | quote }} - {{- end }} - {{- range $valueFile := .extraValueFiles }} - - {{ tpl $valueFile $ | quote }} - {{- end }} - {{- if .useGeneratorValues }} - values: |- - {{ `{{ values }}` }} - {{- end }} - parameters: - {{- include "clustergroup.app.globalvalues.helmparameters" $ | nindent 12 }} - - name: global.repoURL - value: {{ $.Values.global.repoURL }} - - name: global.targetRevision - value: {{ $.Values.global.targetRevision }} - - name: global.namespace - value: {{ $.Values.global.namespace }} - - name: clusterGroup.name - value: {{ $.Values.clusterGroup.name }} - {{- range .extraHubClusterDomainFields }} - - name: {{ . }} - value: {{ $.Values.global.hubClusterDomain }} - {{- end }} - {{- range .extraLocalClusterDomainFields }} - - name: {{ . }} - value: {{ $.Values.global.localClusterDomain }} - {{- end }} - {{- range .extraRepoURLFields }} - - name: {{ . }} - value: {{ $.Values.global.repoURL }} - {{- end }} - {{- range .extraTargetRevisionFields }} - - name: {{ . }} - value: {{ $.Values.global.targetRevision }} - {{- end }} - {{- range .extraNamespaceFields }} - - name: {{ . }} - value: {{ $.Values.global.namespace }} - {{- end }} - {{- range .extraPatternNameFields }} - - name: {{ . }} - value: {{ $.Values.global.pattern }} - {{- end }} - {{- range $k, $v := $.Values.extraParametersNested }} - - name: {{ $k }} - value: {{ printf "%s" $v | quote }} - {{- end }} - {{- range .overrides }} - - name: {{ .name }} - value: {{ .value | quote }} - {{- if .forceString }} - forceString: true - {{- end }} - {{- end }} - {{- end }} - destination: - server: {{ coalesce .destinationServer "https://kubernetes.default.svc" }} - namespace: {{ coalesce .destinationNamespace .namespace $namespace }} {{- else }} --- apiVersion: argoproj.io/v1alpha1 @@ -295,6 +178,5 @@ spec: retry: limit: {{ default 20 $.Values.global.applicationRetryLimit }} {{- end }}{{- /* .syncPolicy */}} -{{- end }}{{- /* if or (.generators) (.generatorFile) (.useGeneratorValues) (.destinationServer) (.destinationNamespace) */}} +{{- end }}{{- /* if .disabled */}} {{- end }}{{- /* range .Values.clusterGroup.applications */}} -{{- end }}{{- /* if not (eq .Values.enabled "core") */}} diff --git a/templates/plumbing/argocd-super-role.yaml b/templates/plumbing/argocd-super-role.yaml index 11366a0..04bec72 100644 --- a/templates/plumbing/argocd-super-role.yaml +++ b/templates/plumbing/argocd-super-role.yaml @@ -1,4 +1,3 @@ -{{- if (eq .Values.enabled "all") }} # WARNING: ONLY USE THIS FOR MANAGING CLUSTERS NOT FOR REGULAR USERS apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding @@ -48,4 +47,3 @@ subjects: - kind: ServiceAccount name: {{ .Values.clusterGroup.name }}-gitops-argocd-dex-server namespace: {{ $.Values.global.pattern }}-{{ .Values.clusterGroup.name }} -{{- end }} diff --git a/templates/plumbing/argocd.yaml b/templates/plumbing/argocd.yaml index d7a8f7e..4ef4269 100644 --- a/templates/plumbing/argocd.yaml +++ b/templates/plumbing/argocd.yaml @@ -1,5 +1,3 @@ - -{{- if (eq .Values.enabled "all") }} {{- $namespace := print $.Values.global.pattern "-" $.Values.clusterGroup.name }} apiVersion: argoproj.io/v1beta1 kind: ArgoCD @@ -204,4 +202,3 @@ spec: href: 'https://{{ .Values.clusterGroup.name }}-gitops-server-{{ $namespace }}.{{ coalesce .Values.global.localClusterDomain .Values.global.hubClusterDomain }}' location: ApplicationMenu text: '{{ title .Values.clusterGroup.name }} ArgoCD' -{{- end }} diff --git a/templates/plumbing/cluster-external-secrets.yaml b/templates/plumbing/cluster-external-secrets.yaml deleted file mode 100644 index 20d6f26..0000000 --- a/templates/plumbing/cluster-external-secrets.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if (eq .Values.enabled "plumbing") }} -{{- $namespace := print $.Values.global.pattern "-" $.Values.clusterGroup.name }} -apiVersion: "external-secrets.io/v1beta1" -kind: ExternalSecret -metadata: - name: {{ .Values.clusterGroup.targetCluster | kebabcase }}-secret - namespace: openshift-gitops - annotations: - argocd.argoproj.io/sync-options: SkipDryRunOnMissingResource=true - argocd.argoproj.io/sync-wave: "100" -spec: - refreshInterval: 15s - secretStoreRef: - name: {{ $.Values.secretStore.name }} - kind: {{ $.Values.secretStore.kind }} - target: - name: {{ .Values.clusterGroup.targetCluster | kebabcase }}-secret - template: - type: Opaque - metadata: - labels: - argocd.argoproj.io/secret-type: cluster - data: - name: {{ .Values.clusterGroup.targetCluster }} - server: https://api.{{ .Values.global.clusterDomain }}:6443 - config: | - { - "bearerToken": {{ "{{ .kubeBearer | toString | quote }}" }}, - "tlsClientConfig": { - "insecure": false, - "caData": {{ "{{ .kubeCA | toString | quote }}" }} - } - } - data: - - secretKey: kubeBearer - remoteRef: - key: {{ $.Values.clusterGroup.hostedSite.secretsPath }} - property: bearerToken - - secretKey: kubeCA - remoteRef: - key: {{ $.Values.clusterGroup.hostedSite.secretsPath }} - property: caCert -{{- end }} diff --git a/templates/plumbing/gitops-namespace.yaml b/templates/plumbing/gitops-namespace.yaml index 3cd7608..785ef75 100644 --- a/templates/plumbing/gitops-namespace.yaml +++ b/templates/plumbing/gitops-namespace.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "plumbing") }} apiVersion: v1 kind: Namespace metadata: @@ -10,4 +9,3 @@ metadata: # - any references to secrets and route URLs in documentation name: {{ $.Values.global.pattern }}-{{ .Values.clusterGroup.name }} spec: {} -{{- end }} diff --git a/templates/plumbing/hosted-sites.yaml b/templates/plumbing/hosted-sites.yaml deleted file mode 100644 index f1f5737..0000000 --- a/templates/plumbing/hosted-sites.yaml +++ /dev/null @@ -1,172 +0,0 @@ -{{- if (eq .Values.enabled "all") }} -{{- range .Values.clusterGroup.managedClusterGroups }} -{{- $group := . }} -{{- if .hostedArgoSites }} -apiVersion: argoproj.io/v1alpha1 -kind: AppProject -metadata: - name: {{ .name }} - namespace: openshift-gitops -spec: - description: "Cluster Group {{ $group.name }}" - destinations: - - namespace: '*' - server: '*' - clusterResourceWhitelist: - - group: '*' - kind: '*' - namespaceResourceWhitelist: - - group: '*' - kind: '*' - sourceRepos: - - '*' -status: {} ---- -{{- end }} -{{- range .hostedArgoSites }} -{{ $secretsPathDefault := print "secret/data/hub/cluster_" .name }} -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: {{ $.Values.global.pattern }}-{{ $group.name }}-{{ .name }} - namespace: openshift-gitops - finalizers: - - resources-finalizer.argocd.argoproj.io/foreground -spec: - project: {{ $group.name }} - source: - repoURL: {{ coalesce $group.repoURL $.Values.global.repoURL }} - targetRevision: {{ coalesce $group.targetRevision $.Values.global.targetRevision }} - path: {{ default "common/clustergroup" $group.path }} - helm: - ignoreMissingValueFiles: true - valueFiles: - - "/values-global.yaml" - - "/values-{{ $group.name }}.yaml" - {{- range $valueFile := $group.extraValueFiles }} - - {{ $valueFile | quote }} - {{- end }} - parameters: - - name: global.repoURL - value: $ARGOCD_APP_SOURCE_REPO_URL - - name: global.targetRevision - value: $ARGOCD_APP_SOURCE_TARGET_REVISION - - name: global.namespace - value: $ARGOCD_APP_NAMESPACE - - name: global.pattern - value: {{ $.Values.global.pattern }} - - name: global.hubClusterDomain - value: {{ $.Values.global.hubClusterDomain }} - - name: global.localClusterDomain - value: apps.{{ .domain }} - - name: global.clusterDomain - value: {{ .domain }} - - name: enabled - value: core - - name: clusterGroup.name - value: {{ $group.name }} - - name: clusterGroup.targetCluster - value: {{ .name }} - - name: clusterGroup.hostedSite.secretsPath - value: {{ default $secretsPathDefault .secretsPath }} - {{- range $group.helmOverrides }} - - name: {{ .name }} - value: {{ .value | quote }} - {{- end }} - {{- if $group.fileParameters }} - fileParameters: - {{- range $group.fileParameters }} - - name: {{ .name }} - path: {{ .path }} - {{- end }} - {{- end }} - destination: - name: {{ .name }} - namespace: {{ $.Values.global.pattern }}-{{ $group.name }} - syncPolicy: - automated: - selfHeal: true - ignoreDifferences: - - group: apps - kind: Deployment - jsonPointers: - - /spec/replicas - - group: route.openshift.io - kind: Route - jsonPointers: - - /status ---- -apiVersion: argoproj.io/v1alpha1 -kind: Application -metadata: - name: {{ $.Values.global.pattern }}-{{ $group.name }}-{{ .name }}-plumbing - namespace: openshift-gitops - finalizers: - - resources-finalizer.argocd.argoproj.io/foreground -spec: - project: {{ $group.name }} - source: - repoURL: {{ coalesce $group.repoURL $.Values.global.repoURL }} - targetRevision: {{ coalesce $group.targetRevision $.Values.global.targetRevision }} - path: {{ default "common/clustergroup" $group.path }} - helm: - ignoreMissingValueFiles: true - valueFiles: - - "/values-global.yaml" - - "/values-{{ $group.name }}.yaml" - {{- range $valueFile := $group.extraValueFiles }} - - {{ $valueFile | quote }} - {{- end }} - parameters: - - name: global.repoURL - value: $ARGOCD_APP_SOURCE_REPO_URL - - name: global.targetRevision - value: $ARGOCD_APP_SOURCE_TARGET_REVISION - - name: global.namespace - value: $ARGOCD_APP_NAMESPACE - - name: global.pattern - value: {{ $.Values.global.pattern }} - - name: global.hubClusterDomain - value: {{ $.Values.global.hubClusterDomain }} - - name: global.localClusterDomain - value: apps.{{ .domain }} - - name: global.clusterDomain - value: {{ .domain }} - - name: enabled - value: plumbing - - name: clusterGroup.name - value: {{ $group.name }} - - name: clusterGroup.targetCluster - value: {{ .name }} - - name: clusterGroup.hostedSite.secretsPath - value: {{ default $secretsPathDefault .secretsPath }} - {{- range $group.helmOverrides }} - - name: {{ .name }} - value: {{ .value | quote }} - {{- end }} - {{- if $group.fileParameters }} - fileParameters: - {{- range $group.fileParameters }} - - name: {{ .name }} - path: {{ .path }} - {{- end }} - {{- end }} - destination: - name: in-cluster - namespace: openshift-gitops - syncPolicy: - automated: - selfHeal: true - ignoreDifferences: - - group: apps - kind: Deployment - jsonPointers: - - /spec/replicas - - group: route.openshift.io - kind: Route - jsonPointers: - - /status ---- -{{- end }} -{{- end }} -{{- end }} diff --git a/templates/plumbing/projects.yaml b/templates/plumbing/projects.yaml index 1050f2e..e3b114d 100644 --- a/templates/plumbing/projects.yaml +++ b/templates/plumbing/projects.yaml @@ -1,4 +1,3 @@ -{{- if not (eq .Values.enabled "core") }} {{- $namespace := print $.Values.global.pattern "-" $.Values.clusterGroup.name }} {{- /* We first check if projects are defined as a map. If it is we call @@ -14,11 +13,7 @@ apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: {{ . }} -{{- if (eq $.Values.enabled "plumbing") }} - namespace: openshift-gitops -{{- else }} namespace: {{ $namespace }} -{{- end }} spec: description: "Pattern {{ . }}" destinations: @@ -36,4 +31,3 @@ status: {} --- {{- end }} {{- /* end range */ -}} {{- end }} {{- /* end if map */ -}} -{{- end }} {{- /* end if not "core" */ -}} diff --git a/values.schema.json b/values.schema.json index 97b09ca..b9b6129 100644 --- a/values.schema.json +++ b/values.schema.json @@ -6,14 +6,6 @@ "type": "object", "additionalProperties": true, "properties": { - "enabled": { - "type": "string", - "enum": [ - "all", - "core", - "plumbing" - ] - }, "secretStore": { "$ref": "#/definitions/SecretStore" }, @@ -351,12 +343,6 @@ "type": "string" } }, - "hostedSite": { - "type": "object", - "items": { - "$ref": "#/definitions/HostedSite" - } - }, "subscriptions": { "anyOf": [ { @@ -694,20 +680,6 @@ } } }, - "HostedSite": { - "type": "object", - "additionalProperties": false, - "properties": { - "secretsPath": { - "type": "string", - "description": "It represents the path in the vault that is supposed to contain two fields: 'bearerToken' representing the token to use to authenticate to the remote cluster and 'caCert' which is the base64-encoded Certificate Authority cert of the remote cluster." - } - }, - "required": [ - "secretsPath" - ], - "title": "HostedSite" - }, "Imperative": { "type": "object", "additionalProperties": false, @@ -852,12 +824,6 @@ "$ref": "#/definitions/ACMLabels" } }, - "hostedArgoSites": { - "type": "array", - "items": { - "$ref": "#/definitions/HostedArgoSites" - } - }, "clusterPools": { "type": "object", "items": { @@ -1061,29 +1027,6 @@ "value" ], "title": "SubscriptionsConfigEnv" - }, - "HostedArgoSites": { - "type": "object", - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "domain": { - "type": "string" - }, - "bearerKeyPath": { - "type": "string" - }, - "caKeyPath": { - "type": "string" - } - }, - "required": [ - "name", - "domain" - ], - "title": "HostedArgoSites" } } } diff --git a/values.yaml b/values.yaml index 6edfd08..af58c51 100644 --- a/values.yaml +++ b/values.yaml @@ -10,8 +10,6 @@ global: installPlanApproval: Automatic applicationRetryLimit: 20 -enabled: "all" - # Note that sometimes changing helm values might require a hard refresh (https://github.com/helm/helm/issues/3486) clusterGroup: name: example