[bitnami/argo-cd] Add the notifications service to the solution (#15633)

* [bitnami/argo-cd] Add the notifications service to the solution

Signed-off-by: jotamartos <jotamartos@vmware.com>

* Remove duplicated block in the values.yml and document new variables

Signed-off-by: jotamartos <jotamartos@vmware.com>

* Minor changes to deploy notifications and bots services

Signed-off-by: jotamartos <jotamartos@vmware.com>

* apply feedback

Signed-off-by: jotamartos <jotamartos@vmware.com>

* Update README.md with readme-generator-for-helm

Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>

---------

Signed-off-by: jotamartos <jotamartos@vmware.com>
Signed-off-by: Bitnami Containers <bitnami-bot@vmware.com>
Co-authored-by: Bitnami Containers <bitnami-bot@vmware.com>
This commit is contained in:
Juan José Martos
2023-03-20 10:56:35 +01:00
committed by GitHub
parent 087462a68d
commit 68fa931c3d
16 changed files with 1256 additions and 2 deletions

View File

@@ -30,4 +30,4 @@ sources:
- https://github.com/argoproj/argo-cd/
- https://github.com/bitnami/containers/tree/main/bitnami/dex
- https://github.com/dexidp/dex
version: 4.4.16
version: 4.5.0

View File

@@ -305,6 +305,135 @@ The command removes all the Kubernetes components associated with the chart and
| `applicationSet.webhook.ingress.extraTls` | Extra TLS configuration for the Argo CD applicationSet ingress | `[]` |
| `applicationSet.webhook.ingress.tls` | Ingress TLS configuration | `[]` |
### Argo CD notifications controller parameters
| Name | Description | Value |
| ---------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | -------------- |
| `notifications.enabled` | Enable notifications controller | `false` |
| `notifications.command` | Override default container command (useful when using custom images) | `[]` |
| `notifications.args` | Override default container args (useful when using custom images). | `[]` |
| `notifications.extraArgs` | Add extra arguments to the default arguments for the Argo CD notifications controller | `[]` |
| `notifications.logFormat` | Format for the Argo CD notifications controller logs. Options: [text, json] | `text` |
| `notifications.logLevel` | Log level for the Argo CD notifications controller | `info` |
| `notifications.containerPorts.metrics` | Argo CD notifications controller metrics port number | `8085` |
| `notifications.metrics.enabled` | Enable Argo CD notifications controller metrics | `false` |
| `notifications.metrics.service.type` | Argo CD notifications controller service type | `ClusterIP` |
| `notifications.metrics.service.port` | Argo CD notifications controller metrics service port | `8085` |
| `notifications.metrics.service.nodePort` | Node port for the notifications controller service | `""` |
| `notifications.metrics.service.clusterIP` | Argo CD notifications controller metrics service Cluster IP | `""` |
| `notifications.metrics.service.loadBalancerIP` | Argo CD notifications controller service Load Balancer IP | `""` |
| `notifications.metrics.service.loadBalancerSourceRanges` | Argo CD notifications controller service Load Balancer sources | `[]` |
| `notifications.metrics.service.externalTrafficPolicy` | Argo CD notifications controller service external traffic policy | `Cluster` |
| `notifications.metrics.service.annotations` | Additional custom annotations for Argo CD notifications controller service | `{}` |
| `notifications.metrics.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` |
| `notifications.metrics.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` |
| `notifications.metrics.serviceMonitor.enabled` | Create ServiceMonitor Resource for scraping metrics using PrometheusOperator | `false` |
| `notifications.metrics.serviceMonitor.namespace` | Namespace which Prometheus is running in | `""` |
| `notifications.metrics.serviceMonitor.jobLabel` | The name of the label on the target service to use as the job name in prometheus. | `""` |
| `notifications.metrics.serviceMonitor.interval` | Interval at which metrics should be scraped | `30s` |
| `notifications.metrics.serviceMonitor.scrapeTimeout` | Timeout after which the scrape is ended | `10s` |
| `notifications.metrics.serviceMonitor.relabelings` | RelabelConfigs to apply to samples before scraping | `[]` |
| `notifications.metrics.serviceMonitor.metricRelabelings` | MetricRelabelConfigs to apply to samples before ingestion | `[]` |
| `notifications.metrics.serviceMonitor.selector` | ServiceMonitor selector labels | `{}` |
| `notifications.metrics.serviceMonitor.honorLabels` | honorLabels chooses the metric's labels on collisions with target labels | `false` |
| `notifications.service.type` | Argo CD notifications controller service type | `ClusterIP` |
| `notifications.service.port` | Argo CD notifications controller service port | `7000` |
| `notifications.service.nodePort` | Node port for Argo CD notifications controller service | `""` |
| `notifications.service.clusterIP` | Argo CD notifications controller service Cluster IP | `""` |
| `notifications.service.loadBalancerIP` | Argo CD notifications controller service Load Balancer IP | `""` |
| `notifications.service.loadBalancerSourceRanges` | Argo CD notifications controller service Load Balancer sources | `[]` |
| `notifications.service.externalTrafficPolicy` | Argo CD notifications controller service external traffic policy | `Cluster` |
| `notifications.service.annotations` | Additional custom annotations for Argo CD notifications controller service | `{}` |
| `notifications.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` |
| `notifications.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` |
| `notifications.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` |
| `notifications.serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` |
| `notifications.serviceAccount.name` | The name of the ServiceAccount to use. | `""` |
| `notifications.serviceAccount.automountServiceAccountToken` | Automount service account token for the notifications controller service account | `true` |
| `notifications.serviceAccount.annotations` | Annotations for service account. Evaluated as a template. Only used if `create` is `true`. | `{}` |
| `notifications.podAffinityPreset` | Pod affinity preset. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard` | `""` |
| `notifications.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard` | `soft` |
| `notifications.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard` | `""` |
| `notifications.nodeAffinityPreset.key` | Node label key to match. Ignored if `notifications.affinity` is set | `""` |
| `notifications.nodeAffinityPreset.values` | Node label values to match. Ignored if `notifications.affinity` is set | `[]` |
| `notifications.affinity` | Affinity for Argo CD notifications controller pods assignment | `{}` |
| `notifications.podAnnotations` | Annotations for Argo CD notifications controller pods | `{}` |
| `notifications.podLabels` | Extra labels for Argo CD notifications controller pods | `{}` |
| `notifications.containerSecurityContext.enabled` | Enabled Argo CD notifications controller containers' Security Context | `true` |
| `notifications.containerSecurityContext.runAsUser` | Set Argo CD notifications controller containers' Security Context runAsUser | `1001` |
| `notifications.containerSecurityContext.allowPrivilegeEscalation` | Set Argo CD notifications controller containers' Security Context allowPrivilegeEscalation | `false` |
| `notifications.containerSecurityContext.capabilities.drop` | Set Argo CD notifications controller containers' Security Context capabilities to be dropped | `["all"]` |
| `notifications.containerSecurityContext.readOnlyRootFilesystem` | Set Argo CD notifications controller containers' Security Context readOnlyRootFilesystem | `false` |
| `notifications.containerSecurityContext.runAsNonRoot` | Set Argo CD notifications controller container's Security Context runAsNonRoot | `true` |
| `notifications.resources.limits` | The resources limits for the Argo CD notifications controller containers | `{}` |
| `notifications.resources.requests` | The requested resources for the Argo CD notifications controller containers | `{}` |
| `notifications.podSecurityContext.enabled` | Enabled Argo CD notifications controller pods' Security Context | `true` |
| `notifications.podSecurityContext.fsGroup` | Set Argo CD notifications controller pod's Security Context fsGroup | `1001` |
| `notifications.nodeSelector` | Node labels for Argo CD notifications controller pods assignment | `{}` |
| `notifications.tolerations` | Tolerations for Argo CD notifications controller pods assignment | `[]` |
| `notifications.priorityClassName` | Argo CD notifications controller pods' priorityClassName | `""` |
| `notifications.extraVolumes` | Optionally specify extra list of additional volumes for the Argo CD notifications controller pod(s) | `[]` |
| `notifications.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the Argo CD notifications controller container(s) | `[]` |
| `notifications.extraEnvVars` | Array with extra environment variables to add to Argo CD notifications controller nodes | `[]` |
| `notifications.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for Argo CD notifications controller nodes | `""` |
| `notifications.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for Argo CD notifications controller nodes | `""` |
| `notifications.webhook.ingress.enabled` | Enable an ingress resource for Webhooks | `false` |
| `notifications.webhook.ingress.annotations` | Additional ingress annotations | `{}` |
| `notifications.webhook.ingress.labels` | Additional ingress labels | `{}` |
| `notifications.webhook.ingress.ingressClassName` | Defines which ingress controller will implement the resource | `""` |
| `notifications.webhook.ingress.hostname` | Ingress hostname for the Argo CD notifications ingress | `""` |
| `notifications.webhook.ingress.path` | Argo CD notifications ingress path | `/api/webhook` |
| `notifications.webhook.ingress.pathType` | Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific` | `Prefix` |
| `notifications.webhook.ingress.extraHosts` | Extra hosts array for the Argo CD notifications ingress | `[]` |
| `notifications.webhook.ingress.extraPaths` | Extra paths for the Argo CD notifications ingress | `[]` |
| `notifications.webhook.ingress.extraTls` | Extra TLS configuration for the Argo CD notifications ingress | `[]` |
| `notifications.webhook.ingress.tls` | Ingress TLS configuration | `[]` |
| `notifications.bots.slack.enabled` | Enable notifications controller | `false` |
| `notifications.bots.slack.command` | Override default container command (useful when using custom images) | `[]` |
| `notifications.bots.slack.args` | Override default container args (useful when using custom images). | `[]` |
| `notifications.bots.slack.extraArgs` | Add extra arguments to the default arguments for the Argo CD Slack bot | `[]` |
| `notifications.bots.slack.service.type` | Argo CD Slack bot service type | `LoadBalancer` |
| `notifications.bots.slack.service.port` | Argo CD Slack bot service port | `80` |
| `notifications.bots.slack.service.nodePort` | Node port for Argo CD Slack bot service | `""` |
| `notifications.bots.slack.service.clusterIP` | Argo CD Slack bot service Cluster IP | `""` |
| `notifications.bots.slack.service.loadBalancerIP` | Argo CD Slack bot service Load Balancer IP | `""` |
| `notifications.bots.slack.service.loadBalancerSourceRanges` | Argo CD Slack bot service Load Balancer sources | `[]` |
| `notifications.bots.slack.service.externalTrafficPolicy` | Argo CD Slack bot service external traffic policy | `Cluster` |
| `notifications.bots.slack.service.annotations` | Additional custom annotations for Argo CD Slack bot service | `{}` |
| `notifications.bots.slack.service.extraPorts` | Extra ports to expose (normally used with the `sidecar` value) | `[]` |
| `notifications.bots.slack.service.sessionAffinity` | Session Affinity for Kubernetes service, can be "None" or "ClientIP" | `None` |
| `notifications.bots.slack.service.sessionAffinityConfig` | Additional settings for the sessionAffinity | `{}` |
| `notifications.bots.slack.serviceAccount.create` | Specifies whether a ServiceAccount should be created | `true` |
| `notifications.bots.slack.serviceAccount.name` | The name of the ServiceAccount to use. | `""` |
| `notifications.bots.slack.serviceAccount.automountServiceAccountToken` | Automount service account token for the notifications controller service account | `true` |
| `notifications.bots.slack.serviceAccount.annotations` | Annotations for service account. Evaluated as a template. Only used if `create` is `true`. | `{}` |
| `notifications.bots.slack.podAffinityPreset` | Pod affinity preset. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard` | `""` |
| `notifications.bots.slack.podAntiAffinityPreset` | Pod anti-affinity preset. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard` | `soft` |
| `notifications.bots.slack.nodeAffinityPreset.type` | Node affinity preset type. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard` | `""` |
| `notifications.bots.slack.nodeAffinityPreset.key` | Node label key to match. Ignored if `notifications.bots.slack.affinity` is set | `""` |
| `notifications.bots.slack.nodeAffinityPreset.values` | Node label values to match. Ignored if `notifications.bots.slack.affinity` is set | `[]` |
| `notifications.bots.slack.affinity` | Affinity for Argo CD Slack bot pods assignment | `{}` |
| `notifications.bots.slack.podAnnotations` | Annotations for Argo CD Slack bot pods | `{}` |
| `notifications.bots.slack.podLabels` | Extra labels for Argo CD Slack bot pods | `{}` |
| `notifications.bots.slack.containerSecurityContext.enabled` | Enabled Argo CD Slack bot containers' Security Context | `true` |
| `notifications.bots.slack.containerSecurityContext.runAsUser` | Set Argo CD Slack bot containers' Security Context runAsUser | `1001` |
| `notifications.bots.slack.containerSecurityContext.allowPrivilegeEscalation` | Set Argo CD Slack bot containers' Security Context allowPrivilegeEscalation | `false` |
| `notifications.bots.slack.containerSecurityContext.capabilities.drop` | Set Argo CD Slack bot containers' Security Context capabilities to be dropped | `["all"]` |
| `notifications.bots.slack.containerSecurityContext.readOnlyRootFilesystem` | Set Argo CD Slack bot containers' Security Context readOnlyRootFilesystem | `false` |
| `notifications.bots.slack.containerSecurityContext.runAsNonRoot` | Set Argo CD Slack bot container's Security Context runAsNonRoot | `true` |
| `notifications.bots.slack.resources.limits` | The resources limits for the Argo CD Slack bot containers | `{}` |
| `notifications.bots.slack.resources.requests` | The requested resources for the Argo CD Slack bot containers | `{}` |
| `notifications.bots.slack.podSecurityContext.enabled` | Enabled Argo CD Slack bot pods' Security Context | `true` |
| `notifications.bots.slack.podSecurityContext.fsGroup` | Set Argo CD Slack bot pod's Security Context fsGroup | `1001` |
| `notifications.bots.slack.nodeSelector` | Node labels for Argo CD Slack bot pods assignment | `{}` |
| `notifications.bots.slack.tolerations` | Tolerations for Argo CD Slack bot pods assignment | `[]` |
| `notifications.bots.slack.priorityClassName` | Argo CD Slack bot pods' priorityClassName | `""` |
| `notifications.bots.slack.extraVolumes` | Optionally specify extra list of additional volumes for the Argo CD Slack bot pod(s) | `[]` |
| `notifications.bots.slack.extraVolumeMounts` | Optionally specify extra list of additional volumeMounts for the Argo CD Slack bot container(s) | `[]` |
| `notifications.bots.slack.extraEnvVars` | Array with extra environment variables to add to Argo CD Slack bot nodes | `[]` |
| `notifications.bots.slack.extraEnvVarsCM` | Name of existing ConfigMap containing extra env vars for Argo CD Slack bot nodes | `""` |
| `notifications.bots.slack.extraEnvVarsSecret` | Name of existing Secret containing extra env vars for Argo CD Slack bot nodes | `""` |
### Argo CD server Parameters
| Name | Description | Value |
@@ -838,4 +967,4 @@ Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
limitations under the License.

View File

@@ -47,6 +47,13 @@ Return the proper service name for Argo CD applicationSet controller
{{- printf "%s-applicationset-controller" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end -}}
{{/*
Return the proper service name for Argo CD notifications controller
*/}}
{{- define "argocd.notifications" -}}
{{- printf "%s-notifications" (include "common.names.fullname" .) | trunc 63 | trimSuffix "-" }}
{{- end -}}
{{/*
Return the proper service name for Argo CD server
*/}}
@@ -128,6 +135,28 @@ Create the name of the service account to use for the Argo CD applicationSet con
{{- end -}}
{{- end -}}
{{/*
Create the name of the service account to use for the Argo CD notifications controller
*/}}
{{- define "argocd.notifications.serviceAccountName" -}}
{{- if .Values.notifications.serviceAccount.create -}}
{{ default (printf "%s-notifications" (include "common.names.fullname" .)) .Values.notifications.serviceAccount.name | trunc 63 | trimSuffix "-" }}
{{- else -}}
{{ default "default" .Values.notifications.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the service account to use for the Argo CD Slack bot
*/}}
{{- define "argocd.notifications.bots.slack.serviceAccountName" -}}
{{- if .Values.notifications.bots.slack.serviceAccount.create -}}
{{ default (printf "%s-notifications-slack-bot" (include "common.names.fullname" .)) .Values.notifications.bots.slack.serviceAccount.name | trunc 63 | trimSuffix "-" }}
{{- else -}}
{{ default "default" .Values.notifications.bots.slack.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the service account to use for the Argo CD repo server
*/}}

View File

@@ -41,6 +41,7 @@ spec:
{{- end }}
ports:
- name: http-metrics
targetPort: metrics
port: {{ .Values.applicationSet.metrics.service.port }}
protocol: TCP
{{- if (and (or (eq .Values.applicationSet.service.type "NodePort") (eq .Values.applicationSet.service.type "LoadBalancer")) (not (empty .Values.applicationSet.metrics.service.nodePort))) }}

View File

@@ -0,0 +1,102 @@
{{ if and .Values.notifications.enabled .Values.notifications.bots.slack.enabled }}
apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ include "argocd.notifications" . }}-slack-bot
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: notifications-slack-bot
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
app.kubernetes.io/component: notifications-slack-bot
template:
metadata:
{{- if .Values.notifications.bots.slack.podAnnotations }}
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.podAnnotations "context" $) | nindent 8 }}
{{- end }}
labels: {{- include "common.labels.standard" . | nindent 8 }}
app.kubernetes.io/component: notifications-slack-bot
{{- if .Values.notifications.bots.slack.podLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.podLabels "context" $) | nindent 8 }}
{{- end }}
spec:
serviceAccountName: {{ include "argocd.notifications.bots.slack.serviceAccountName" . }}
{{- include "argocd.imagePullSecrets" . | nindent 6 }}
{{- if .Values.notifications.bots.slack.nodeSelector }}
nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.notifications.bots.slack.nodeSelector "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.notifications.bots.slack.affinity }}
affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.notifications.bots.slack.affinity "context" $) | nindent 8 }}
{{- else }}
affinity:
podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.notifications.bots.slack.podAffinityPreset "component" "notifications" "context" $) | nindent 10 }}
podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.notifications.bots.slack.podAntiAffinityPreset "component" "notifications" "context" $) | nindent 10 }}
nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.notifications.bots.slack.nodeAffinityPreset.type "key" .Values.notifications.bots.slack.nodeAffinityPreset.key "values" .Values.notifications.bots.slack.nodeAffinityPreset.values) | nindent 10 }}
{{- end }}
{{- if .Values.notifications.bots.slack.tolerations }}
tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.tolerations "context" .) | nindent 8 }}
{{- end }}
{{- if .Values.notifications.bots.slack.priorityClassName }}
priorityClassName: {{ .Values.notifications.bots.slack.priorityClassName | quote }}
{{- end }}
{{- if .Values.notifications.bots.slack.podSecurityContext.enabled }}
securityContext: {{- omit .Values.notifications.bots.slack.podSecurityContext "enabled" | toYaml | nindent 8 }}
{{- end }}
containers:
- name: notifications-slack-bot
image: {{ include "argocd.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.notifications.bots.slack.command }}
command: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.command "context" $) | nindent 12 }}
{{- end }}
{{- if .Values.notifications.bots.slack.args }}
args: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.args "context" $) | nindent 12 }}
{{- else }}
args:
- argocd-notifications
- bot
{{- if .Values.notifications.bots.slack.extraArgs }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraArgs "context" $) | nindent 12 }}
{{- end }}
{{- end }}
env:
{{- if .Values.notifications.bots.slack.extraEnvVars }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraEnvVars "context" $) | nindent 12 }}
{{- end }}
envFrom:
{{- if .Values.notifications.bots.slack.extraEnvVarsCM }}
- configMapRef:
name: {{ include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraEnvVarsCM "context" $) }}
{{- end }}
{{- if .Values.notifications.bots.slack.extraEnvVarsSecret }}
- secretRef:
name: {{ include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraEnvVarsSecret "context" $) }}
{{- end }}
ports:
- name: http
containerPort: 8080
protocol: TCP
{{- if .Values.notifications.bots.slack.resources }}
resources: {{- toYaml .Values.notifications.bots.slack.resources | nindent 12 }}
{{- end }}
{{- if .Values.notifications.bots.slack.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.notifications.bots.slack.containerSecurityContext "enabled" | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.notifications.bots.slack.extraVolumeMounts }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraVolumeMounts "context" $) | nindent 12 }}
{{- end }}
volumes:
{{- if .Values.notifications.bots.slack.extraVolumes }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.extraVolumes "context" $) | nindent 8 }}
{{- end }}
{{ end }}

View File

@@ -0,0 +1,32 @@
{{ if and .Values.notifications.enabled .Values.notifications.bots.slack.enabled .Values.rbac.create }}
apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }}
kind: Role
metadata:
name: {{ include "argocd.notifications" . }}-slack-bot
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
rules:
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- get
- list
- watch
- apiGroups:
- argoproj.io
resources:
- applications
- appprojects
verbs:
- get
- list
- watch
- update
- patch
{{ end }}

View File

@@ -0,0 +1,18 @@
{{ if and .Values.notifications.enabled .Values.notifications.bots.slack.enabled .Values.rbac.create }}
apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }}
kind: RoleBinding
metadata:
name: {{ include "argocd.notifications" . }}-slack-bot
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
subjects:
- kind: ServiceAccount
name: {{ include "argocd.notifications.bots.slack.serviceAccountName" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "argocd.notifications" . }}-slack-bot
{{ end }}

View File

@@ -0,0 +1,22 @@
{{- if and .Values.notifications.enabled .Values.notifications.bots.slack.enabled .Values.notifications.bots.slack.serviceAccount.create .Values.rbac.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "argocd.notifications.bots.slack.serviceAccountName" . }}
namespace: {{ .Release.Namespace | quote }}
{{- if or .Values.notifications.serviceAccount.annotations .Values.commonAnnotations }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: notifications-slack-bot
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.notifications.bots.slack.serviceAccount.annotations }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.serviceAccount.annotations "context" $) | nindent 4 }}
{{- end }}
{{- end }}
automountServiceAccountToken: {{ .Values.notifications.bots.slack.serviceAccount.automountServiceAccountToken }}
{{- end }}

View File

@@ -0,0 +1,55 @@
{{ if and .Values.notifications.enabled .Values.notifications.bots.slack.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "argocd.notifications" . }}-slack-bot
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: notifications-slack-bot
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
{{- if or .Values.commonAnnotations .Values.notifications.bots.slack.service.annotations }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.notifications.bots.slack.service.annotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.notifications.bots.slack.service.annotations "context" $ ) | nindent 4 }}
{{- end }}
{{- end }}
spec:
type: {{ .Values.notifications.bots.slack.service.type }}
{{- if and .Values.notifications.bots.slack.service.clusterIP (eq .Values.notifications.bots.slack.service.type "ClusterIP") }}
clusterIP: {{ .Values.notifications.bots.slack.service.clusterIP }}
{{- end }}
{{- if (or (eq .Values.notifications.bots.slack.service.type "LoadBalancer") (eq .Values.notifications.bots.slack.service.type "NodePort")) }}
externalTrafficPolicy: {{ .Values.notifications.bots.slack.service.externalTrafficPolicy | quote }}
{{- end }}
{{- if eq .Values.notifications.bots.slack.service.type "LoadBalancer" }}
loadBalancerSourceRanges: {{ .Values.notifications.bots.slack.service.loadBalancerSourceRanges }}
{{- end }}
{{- if (and (eq .Values.notifications.bots.slack.service.type "LoadBalancer") (not (empty .Values.notifications.bots.slack.service.loadBalancerIP))) }}
loadBalancerIP: {{ .Values.notifications.bots.slack.service.loadBalancerIP }}
{{- end }}
{{- if .Values.notifications.bots.slack.service.sessionAffinity }}
sessionAffinity: {{ .Values.notifications.bots.slack.service.sessionAffinity }}
{{- end }}
{{- if .Values.notifications.bots.slack.service.sessionAffinityConfig }}
sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.service.sessionAffinityConfig "context" $) | nindent 4 }}
{{- end }}
ports:
- name: http
port: {{ .Values.notifications.bots.slack.service.port }}
targetPort: http
{{- if (and (or (eq .Values.notifications.bots.slack.service.type "NodePort") (eq .Values.notifications.bots.slack.service.type "LoadBalancer")) (not (empty .Values.notifications.bots.slack.service.nodePort))) }}
nodePort: {{ .Values.notifications.bots.slack.service.nodePort }}
{{- else if eq .Values.notifications.bots.slack.service.type "ClusterIP" }}
nodePort: null
{{- end }}
{{- if .Values.notifications.bots.slack.service.extraPorts }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.bots.slack.service.extraPorts "context" $) | nindent 4 }}
{{- end }}
selector: {{- include "common.labels.matchLabels" . | nindent 4 }}
app.kubernetes.io/component: notifications-slack-bot
{{ end }}

View File

@@ -0,0 +1,132 @@
{{- if .Values.notifications.enabled }}
apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ include "argocd.notifications" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: notifications
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels: {{- include "common.labels.matchLabels" . | nindent 6 }}
app.kubernetes.io/component: notifications
template:
metadata:
{{- if .Values.notifications.podAnnotations }}
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.podAnnotations "context" $) | nindent 8 }}
{{- end }}
labels: {{- include "common.labels.standard" . | nindent 8 }}
app.kubernetes.io/component: notifications
{{- if .Values.notifications.podLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.podLabels "context" $) | nindent 8 }}
{{- end }}
spec:
serviceAccountName: {{ include "argocd.notifications.serviceAccountName" . }}
{{- include "argocd.imagePullSecrets" . | nindent 6 }}
{{- if .Values.notifications.nodeSelector }}
nodeSelector: {{- include "common.tplvalues.render" ( dict "value" .Values.notifications.nodeSelector "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.notifications.affinity }}
affinity: {{- include "common.tplvalues.render" ( dict "value" .Values.notifications.affinity "context" $) | nindent 8 }}
{{- else }}
affinity:
podAffinity: {{- include "common.affinities.pods" (dict "type" .Values.notifications.podAffinityPreset "component" "notifications" "context" $) | nindent 10 }}
podAntiAffinity: {{- include "common.affinities.pods" (dict "type" .Values.notifications.podAntiAffinityPreset "component" "notifications" "context" $) | nindent 10 }}
nodeAffinity: {{- include "common.affinities.nodes" (dict "type" .Values.notifications.nodeAffinityPreset.type "key" .Values.notifications.nodeAffinityPreset.key "values" .Values.notifications.nodeAffinityPreset.values) | nindent 10 }}
{{- end }}
{{- if .Values.notifications.tolerations }}
tolerations: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.tolerations "context" .) | nindent 8 }}
{{- end }}
{{- if .Values.notifications.priorityClassName }}
priorityClassName: {{ .Values.notifications.priorityClassName | quote }}
{{- end }}
{{- if .Values.notifications.podSecurityContext.enabled }}
securityContext: {{- omit .Values.notifications.podSecurityContext "enabled" | toYaml | nindent 8 }}
{{- end }}
containers:
- name: notifications
image: {{ include "argocd.image" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.notifications.command }}
command: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.command "context" $) | nindent 12 }}
{{- end }}
{{- if .Values.notifications.args }}
args: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.args "context" $) | nindent 12 }}
{{- else }}
args:
- argocd-notifications
- --logformat
- {{ .Values.notifications.logFormat | quote }}
- --loglevel
- {{ .Values.notifications.logLevel | quote }}
- --metrics-port
- {{ .Values.notifications.containerPorts.metrics | quote }}
- --argocd-repo-server
- {{ include "argocd.repo-server" . }}:{{ .Values.repoServer.service.port }}
{{- if .Values.notifications.extraArgs }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.extraArgs "context" $) | nindent 12 }}
{{- end }}
{{- end }}
env:
{{- if .Values.notifications.extraEnvVars }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.extraEnvVars "context" $) | nindent 12 }}
{{- end }}
envFrom:
{{- if .Values.notifications.extraEnvVarsCM }}
- configMapRef:
name: {{ include "common.tplvalues.render" (dict "value" .Values.notifications.extraEnvVarsCM "context" $) }}
{{- end }}
{{- if .Values.notifications.extraEnvVarsSecret }}
- secretRef:
name: {{ include "common.tplvalues.render" (dict "value" .Values.notifications.extraEnvVarsSecret "context" $) }}
{{- end }}
ports:
- name: metrics
containerPort: {{ .Values.notifications.containerPorts.metrics }}
protocol: TCP
{{- if .Values.notifications.resources }}
resources: {{- toYaml .Values.notifications.resources | nindent 12 }}
{{- end }}
{{- if .Values.notifications.containerSecurityContext.enabled }}
securityContext: {{- omit .Values.notifications.containerSecurityContext "enabled" | toYaml | nindent 12 }}
{{- end }}
volumeMounts:
{{- if .Values.config.tlsCerts }}
- mountPath: /app/config/tls
name: tls-certs
{{- end }}
- mountPath: /app/config/server/tls
name: argocd-repo-server-tls
{{- if .Values.notifications.extraVolumeMounts }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.extraVolumeMounts "context" $) | nindent 12 }}
{{- end }}
volumes:
{{- if .Values.config.tlsCerts }}
- name: tls-certs
configMap:
name: argocd-tls-certs-cm
{{- end }}
- name: argocd-repo-server-tls
secret:
items:
- key: tls.crt
path: tls.crt
- key: tls.key
path: tls.key
- key: ca.crt
path: ca.crt
optional: true
secretName: argocd-repo-server-tls
{{- if .Values.notifications.extraVolumes }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.extraVolumes "context" $) | nindent 8 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,54 @@
{{- if and .Values.notifications.enabled .Values.notifications.metrics.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "argocd.notifications" . }}-metrics
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: metrics
app.kubernetes.io/part-of: notifications
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
{{- if or .Values.commonAnnotations .Values.notifications.metrics.service.annotations }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
{{- if .Values.notifications.metrics.service.annotations }}
{{- include "common.tplvalues.render" ( dict "value" .Values.notifications.metrics.service.annotations "context" $ ) | nindent 4 }}
{{- end }}
{{- end }}
spec:
type: {{ .Values.notifications.metrics.service.type }}
{{- if and .Values.notifications.metrics.service.clusterIP (eq .Values.notifications.metrics.service.type "ClusterIP") }}
clusterIP: {{ .Values.notifications.metrics.service.clusterIP }}
{{- end }}
{{- if (or (eq .Values.notifications.metrics.service.type "LoadBalancer") (eq .Values.notifications.metrics.service.type "NodePort")) }}
externalTrafficPolicy: {{ .Values.notifications.metrics.service.externalTrafficPolicy | quote }}
{{- end }}
{{- if eq .Values.notifications.metrics.service.type "LoadBalancer" }}
loadBalancerSourceRanges: {{ .Values.notifications.metrics.service.loadBalancerSourceRanges }}
{{- end }}
{{- if (and (eq .Values.notifications.metrics.service.type "LoadBalancer") (not (empty .Values.notifications.metrics.service.loadBalancerIP))) }}
loadBalancerIP: {{ .Values.notifications.metrics.service.loadBalancerIP }}
{{- end }}
{{- if .Values.notifications.metrics.service.sessionAffinity }}
sessionAffinity: {{ .Values.notifications.metrics.service.sessionAffinity }}
{{- end }}
{{- if .Values.notifications.metrics.service.sessionAffinityConfig }}
sessionAffinityConfig: {{- include "common.tplvalues.render" (dict "value" .Values.notifications.metrics.service.sessionAffinityConfig "context" $) | nindent 4 }}
{{- end }}
ports:
- name: http-metrics
targetPort: metrics
port: {{ .Values.notifications.metrics.service.port }}
protocol: TCP
{{- if (and (or (eq .Values.notifications.service.type "NodePort") (eq .Values.notifications.service.type "LoadBalancer")) (not (empty .Values.notifications.metrics.service.nodePort))) }}
nodePort: {{ .Values.notifications.metrics.service.nodePort }}
{{- else if eq .Values.notifications.metrics.service.type "ClusterIP" }}
nodePort: null
{{- end }}
selector: {{- include "common.labels.matchLabels" . | nindent 4 }}
app.kubernetes.io/component: notifications
{{- end }}

View File

@@ -0,0 +1,47 @@
{{- if and .Values.notifications.enabled .Values.rbac.create }}
kind: Role
apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }}
metadata:
name: {{ include "argocd.notifications" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
rules:
- apiGroups:
- argoproj.io
resources:
- applications
- appprojects
verbs:
- get
- list
- watch
- update
- patch
- apiGroups:
- ""
resources:
- configmaps
- secrets
verbs:
- list
- watch
- apiGroups:
- ""
resourceNames:
- argocd-notifications-cm
resources:
- configmaps
verbs:
- get
- apiGroups:
- ""
resourceNames:
- argocd-notifications-secret
resources:
- secrets
verbs:
- get
{{- end }}

View File

@@ -0,0 +1,18 @@
{{- if and .Values.notifications.enabled .Values.notifications.serviceAccount.create .Values.rbac.create }}
kind: RoleBinding
apiVersion: {{ include "common.capabilities.rbac.apiVersion" . }}
metadata:
name: {{ include "argocd.notifications" . }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" ( dict "value" .Values.commonAnnotations "context" $ ) | nindent 4 }}
{{- end }}
subjects:
- kind: ServiceAccount
name: {{ include "argocd.notifications.serviceAccountName" . }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "argocd.notifications" . }}
{{- end }}

View File

@@ -0,0 +1,22 @@
{{- if and .Values.notifications.enabled .Values.notifications.serviceAccount.create .Values.rbac.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "argocd.notifications.serviceAccountName" . }}
namespace: {{ .Release.Namespace | quote }}
{{- if or .Values.notifications.serviceAccount.annotations .Values.commonAnnotations }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
app.kubernetes.io/component: notifications
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" ( dict "value" .Values.commonLabels "context" $ ) | nindent 4 }}
{{- end }}
annotations:
{{- if .Values.commonAnnotations }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.notifications.serviceAccount.annotations }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.serviceAccount.annotations "context" $) | nindent 4 }}
{{- end }}
{{- end }}
automountServiceAccountToken: {{ .Values.notifications.serviceAccount.automountServiceAccountToken }}
{{- end }}

View File

@@ -0,0 +1,49 @@
{{- if and .Values.notifications.enabled .Values.notifications.metrics.enabled .Values.notifications.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: {{ include "argo-cd.notifications" . }}
{{- if .Values.notifications.metrics.serviceMonitor.namespace }}
namespace: {{ .Values.notifications.metrics.serviceMonitor.namespace | quote }}
{{- else }}
namespace: {{ .Release.Namespace | quote }}
{{- end }}
labels: {{- include "common.labels.standard" . | nindent 4 }}
{{- if .Values.commonLabels }}
{{- include "common.tplvalues.render" (dict "value" .Values.commonLabels "context" $) | nindent 4 }}
{{- end }}
{{- if .Values.notifications.metrics.serviceMonitor.selector }}
{{- include "common.tplvalues.render" (dict "value" .Values.notifications.metrics.serviceMonitor.selector "context" $) | nindent 4 }}
{{- end }}
app.kubernetes.io/component: notifications
{{- if .Values.commonAnnotations }}
annotations: {{- include "common.tplvalues.render" (dict "value" .Values.commonAnnotations "context" $) | nindent 4 }}
{{- end }}
spec:
endpoints:
- port: http-metrics
path: /metrics
{{- if .Values.notifications.metrics.serviceMonitor.interval }}
interval: {{ .Values.notifications.metrics.serviceMonitor.interval }}
{{- end }}
{{- if .Values.notifications.metrics.serviceMonitor.scrapeTimeout }}
scrapeTimeout: {{ .Values.notifications.metrics.serviceMonitor.scrapeTimeout }}
{{- end }}
{{- if .Values.notifications.metrics.serviceMonitor.honorLabels }}
honorLabels: {{ .Values.notifications.metrics.serviceMonitor.honorLabels }}
{{- end }}
{{- if .Values.notifications.metrics.serviceMonitor.metricRelabelings }}
metricRelabelings: {{- include "common.tplvalues.render" ( dict "value" .Values.notifications.metrics.serviceMonitor.metricRelabelings "context" $) | nindent 8 }}
{{- end }}
{{- if .Values.notifications.metrics.serviceMonitor.relabelings }}
relabelings: {- include "common.tplvalues.render" ( dict "value" .Values.notifications.metrics.serviceMonitor.relabelings "context" $) | nindent 8 }}
{{- end }}
namespaceSelector:
matchNames:
- {{ .Release.Namespace }}
selector:
matchLabels:
{{- include "common.labels.matchLabels" . | nindent 6 }}
app.kubernetes.io/component: metrics
app.kubernetes.io/part-of: notifications
{{- end }}

View File

@@ -962,6 +962,550 @@ applicationSet:
##
tls: []
## @section Argo CD notifications controller parameters
## notifications controller
##
notifications:
## @param notifications.enabled Enable notifications controller
##
enabled: false
## @param notifications.command Override default container command (useful when using custom images)
##
command: []
## @param notifications.args Override default container args (useful when using custom images).
##
args: []
## @param notifications.extraArgs Add extra arguments to the default arguments for the Argo CD notifications controller
##
extraArgs: []
## Argo CD notifications controller log format: text|json
## @param notifications.logFormat Format for the Argo CD notifications controller logs. Options: [text, json]
##
logFormat: text
## Argo CD notifications controller log level
## @param notifications.logLevel Log level for the Argo CD notifications controller
##
logLevel: info
## Argo CD notifications controller ports
## @param notifications.containerPorts.metrics Argo CD notifications controller metrics port number
##
containerPorts:
metrics: 8085
## Metrics configuration for Argo CD notifications controller
##
metrics:
## @param notifications.metrics.enabled Enable Argo CD notifications controller metrics
##
enabled: false
service:
## @param notifications.metrics.service.type Argo CD notifications controller service type
##
type: ClusterIP
## @param notifications.metrics.service.port Argo CD notifications controller metrics service port
##
port: 8085
## Node ports to expose
## @param notifications.metrics.service.nodePort Node port for the notifications controller service
## NOTE: choose port between <30000-32767>
##
nodePort: ""
## @param notifications.metrics.service.clusterIP Argo CD notifications controller metrics service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## @param notifications.metrics.service.loadBalancerIP Argo CD notifications controller service Load Balancer IP
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
##
loadBalancerIP: ""
## @param notifications.metrics.service.loadBalancerSourceRanges Argo CD notifications controller service Load Balancer sources
## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
## e.g:
## loadBalancerSourceRanges:
## - 10.10.10.0/24
##
loadBalancerSourceRanges: []
## @param notifications.metrics.service.externalTrafficPolicy Argo CD notifications controller service external traffic policy
## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
##
externalTrafficPolicy: Cluster
## @param notifications.metrics.service.annotations Additional custom annotations for Argo CD notifications controller service
##
annotations: {}
## @param notifications.metrics.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
## If "ClientIP", consecutive client requests will be directed to the same Pod
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
##
sessionAffinity: None
## @param notifications.metrics.service.sessionAffinityConfig Additional settings for the sessionAffinity
## sessionAffinityConfig:
## clientIP:
## timeoutSeconds: 300
##
sessionAffinityConfig: {}
## Argo CD notifications controller metrics service monitor configuration
##
serviceMonitor:
## @param notifications.metrics.serviceMonitor.enabled Create ServiceMonitor Resource for scraping metrics using PrometheusOperator
##
enabled: false
## @param notifications.metrics.serviceMonitor.namespace Namespace which Prometheus is running in
## e.g:
## namespace: monitoring
##
namespace: ""
## @param notifications.metrics.serviceMonitor.jobLabel The name of the label on the target service to use as the job name in prometheus.
##
jobLabel: ""
## @param notifications.metrics.serviceMonitor.interval Interval at which metrics should be scraped
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
interval: 30s
## @param notifications.metrics.serviceMonitor.scrapeTimeout Timeout after which the scrape is ended
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#endpoint
##
scrapeTimeout: 10s
## @param notifications.metrics.serviceMonitor.relabelings RelabelConfigs to apply to samples before scraping
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
##
relabelings: []
## @param notifications.metrics.serviceMonitor.metricRelabelings MetricRelabelConfigs to apply to samples before ingestion
## ref: https://github.com/coreos/prometheus-operator/blob/master/Documentation/api.md#relabelconfig
##
metricRelabelings: []
## @param notifications.metrics.serviceMonitor.selector ServiceMonitor selector labels
## ref: https://github.com/bitnami/charts/tree/main/bitnami/prometheus-operator#prometheus-configuration
##
## selector:
## prometheus: my-prometheus
##
selector: {}
## @param notifications.metrics.serviceMonitor.honorLabels honorLabels chooses the metric's labels on collisions with target labels
##
honorLabels: false
## Argo CD notifications controller service parameters
##
service:
## @param notifications.service.type Argo CD notifications controller service type
##
type: ClusterIP
## @param notifications.service.port Argo CD notifications controller service port
##
port: 7000
## Node ports to expose
## @param notifications.service.nodePort Node port for Argo CD notifications controller service
## NOTE: choose port between <30000-32767>
##
nodePort: ""
## @param notifications.service.clusterIP Argo CD notifications controller service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## @param notifications.service.loadBalancerIP Argo CD notifications controller service Load Balancer IP
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
##
loadBalancerIP: ""
## @param notifications.service.loadBalancerSourceRanges Argo CD notifications controller service Load Balancer sources
## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
## e.g:
## loadBalancerSourceRanges:
## - 10.10.10.0/24
##
loadBalancerSourceRanges: []
## @param notifications.service.externalTrafficPolicy Argo CD notifications controller service external traffic policy
## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
##
externalTrafficPolicy: Cluster
## @param notifications.service.annotations Additional custom annotations for Argo CD notifications controller service
##
annotations: {}
## @param notifications.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
##
extraPorts: []
## @param notifications.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
## If "ClientIP", consecutive client requests will be directed to the same Pod
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
##
sessionAffinity: None
## @param notifications.service.sessionAffinityConfig Additional settings for the sessionAffinity
## sessionAffinityConfig:
## clientIP:
## timeoutSeconds: 300
##
sessionAffinityConfig: {}
## ServiceAccount configuration for the Argo CD notifications controller
##
serviceAccount:
## @param notifications.serviceAccount.create Specifies whether a ServiceAccount should be created
##
create: true
## @param notifications.serviceAccount.name The name of the ServiceAccount to use.
## If not set and create is true, a name is generated using the common.names.fullname template
##
name: ""
## @param notifications.serviceAccount.automountServiceAccountToken Automount service account token for the notifications controller service account
##
automountServiceAccountToken: true
## @param notifications.serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
##
annotations: {}
## @param notifications.podAffinityPreset Pod affinity preset. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard`
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
##
podAffinityPreset: ""
## @param notifications.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard`
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
##
podAntiAffinityPreset: soft
## Node notifications.affinity preset
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
##
nodeAffinityPreset:
## @param notifications.nodeAffinityPreset.type Node affinity preset type. Ignored if `notifications.affinity` is set. Allowed values: `soft` or `hard`
##
type: ""
## @param notifications.nodeAffinityPreset.key Node label key to match. Ignored if `notifications.affinity` is set
##
key: ""
## @param notifications.nodeAffinityPreset.values Node label values to match. Ignored if `notifications.affinity` is set
## E.g.
## values:
## - e2e-az1
## - e2e-az2
##
values: []
## @param notifications.affinity Affinity for Argo CD notifications controller pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
## NOTE: `notifications.podAffinityPreset`, `notifications.podAntiAffinityPreset`, and `notifications.nodeAffinityPreset` will be ignored when it's set
##
affinity: {}
## @param notifications.podAnnotations Annotations for Argo CD notifications controller pods
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
##
podAnnotations: {}
## @param notifications.podLabels Extra labels for Argo CD notifications controller pods
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
podLabels: {}
## Configure Container Security Context
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
## @param notifications.containerSecurityContext.enabled Enabled Argo CD notifications controller containers' Security Context
## @param notifications.containerSecurityContext.runAsUser Set Argo CD notifications controller containers' Security Context runAsUser
## @param notifications.containerSecurityContext.allowPrivilegeEscalation Set Argo CD notifications controller containers' Security Context allowPrivilegeEscalation
## @param notifications.containerSecurityContext.capabilities.drop Set Argo CD notifications controller containers' Security Context capabilities to be dropped
## @param notifications.containerSecurityContext.readOnlyRootFilesystem Set Argo CD notifications controller containers' Security Context readOnlyRootFilesystem
## @param notifications.containerSecurityContext.runAsNonRoot Set Argo CD notifications controller container's Security Context runAsNonRoot
##
containerSecurityContext:
enabled: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- all
readOnlyRootFilesystem: false
runAsNonRoot: true
## Argo CD notifications controller resource requests and limits
## ref: https://kubernetes.io/docs/user-guide/compute-resources/
## @param notifications.resources.limits The resources limits for the Argo CD notifications controller containers
## @param notifications.resources.requests The requested resources for the Argo CD notifications controller containers
##
resources:
limits: {}
requests: {}
## Configure Pods Security Context
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
## @param notifications.podSecurityContext.enabled Enabled Argo CD notifications controller pods' Security Context
## @param notifications.podSecurityContext.fsGroup Set Argo CD notifications controller pod's Security Context fsGroup
##
podSecurityContext:
enabled: true
fsGroup: 1001
## @param notifications.nodeSelector Node labels for Argo CD notifications controller pods assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param notifications.tolerations Tolerations for Argo CD notifications controller pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param notifications.priorityClassName Argo CD notifications controller pods' priorityClassName
##
priorityClassName: ""
## @param notifications.extraVolumes Optionally specify extra list of additional volumes for the Argo CD notifications controller pod(s)
##
extraVolumes: []
## @param notifications.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Argo CD notifications controller container(s)
##
extraVolumeMounts: []
## @param notifications.extraEnvVars Array with extra environment variables to add to Argo CD notifications controller nodes
## e.g:
## extraEnvVars:
## - name: FOO
## value: "bar"
##
extraEnvVars: []
## @param notifications.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Argo CD notifications controller nodes
##
extraEnvVarsCM: ""
## @param notifications.extraEnvVarsSecret Name of existing Secret containing extra env vars for Argo CD notifications controller nodes
##
extraEnvVarsSecret: ""
## Webhook for the Git Generator
## Ref: https://argocd-notifications.readthedocs.io/en/master/Generators-Git/#webhook-configuration)
##
webhook:
ingress:
## @param notifications.webhook.ingress.enabled Enable an ingress resource for Webhooks
##
enabled: false
## DEPRECATED: Use server.ingress.annotations instead of server.ingress.certManager
## certManager: false
##
## @param notifications.webhook.ingress.annotations Additional ingress annotations
##
annotations: {}
## @param notifications.webhook.ingress.labels Additional ingress labels
##
labels: {}
## @param notifications.webhook.ingress.ingressClassName Defines which ingress controller will implement the resource
##
ingressClassName: ""
## @param notifications.webhook.ingress.hostname Ingress hostname for the Argo CD notifications ingress
## Hostname must be provided if Ingress is enabled.
##
hostname: ""
## @param notifications.webhook.ingress.path Argo CD notifications ingress path
##
path: /api/webhook
## @param notifications.webhook.ingress.pathType Ingress path type. One of `Exact`, `Prefix` or `ImplementationSpecific`
##
pathType: Prefix
## @param notifications.webhook.ingress.extraHosts Extra hosts array for the Argo CD notifications ingress
## The list of additional hostnames to be covered with this ingress record.
## Most likely the hostname above will be enough, but in the event more hosts are needed, this is an array
##
extraHosts: []
## @param notifications.webhook.ingress.extraPaths Extra paths for the Argo CD notifications ingress
## Any additional arbitrary paths that may need to be added to the ingress under the main host.
## For example: The ALB ingress controller requires a special rule for handling SSL redirection.
##
extraPaths: []
## - path: /*
## backend:
## serviceName: ssl-redirect
## servicePort: use-annotation
##
## @param notifications.webhook.ingress.extraTls Extra TLS configuration for the Argo CD notifications ingress
## The tls configuration for additional hostnames to be covered with this ingress record.
## see: https://kubernetes.io/docs/concepts/services-networking/ingress/#tls
##
extraTls: []
## - hosts:
## - argocd.server.local
## secretName: argocd.server.local-tls
##
## @param notifications.webhook.ingress.tls Ingress TLS configuration
##
tls: []
## The optional bot component simplifies managing subscriptions
## For more information: https://argocd-notifications.readthedocs.io/en/stable/bots/overview/
bots:
slack:
## @param notifications.bots.slack.enabled Enable notifications controller
##
enabled: false
## @param notifications.bots.slack.command Override default container command (useful when using custom images)
##
command: []
## @param notifications.bots.slack.args Override default container args (useful when using custom images).
##
args: []
## @param notifications.bots.slack.extraArgs Add extra arguments to the default arguments for the Argo CD Slack bot
##
extraArgs: []
## Argo CD Slack bot service parameters
##
service:
## @param notifications.bots.slack.service.type Argo CD Slack bot service type
##
type: LoadBalancer
## @param notifications.bots.slack.service.port Argo CD Slack bot service port
##
port: 80
## Node ports to expose
## @param notifications.bots.slack.service.nodePort Node port for Argo CD Slack bot service
## NOTE: choose port between <30000-32767>
##
nodePort: ""
## @param notifications.bots.slack.service.clusterIP Argo CD Slack bot service Cluster IP
## e.g.:
## clusterIP: None
##
clusterIP: ""
## @param notifications.bots.slack.service.loadBalancerIP Argo CD Slack bot service Load Balancer IP
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer
##
loadBalancerIP: ""
## @param notifications.bots.slack.service.loadBalancerSourceRanges Argo CD Slack bot service Load Balancer sources
## ref: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/#restrict-access-for-loadbalancer-service
## e.g:
## loadBalancerSourceRanges:
## - 10.10.10.0/24
##
loadBalancerSourceRanges: []
## @param notifications.bots.slack.service.externalTrafficPolicy Argo CD Slack bot service external traffic policy
## ref https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
##
externalTrafficPolicy: Cluster
## @param notifications.bots.slack.service.annotations Additional custom annotations for Argo CD Slack bot service
##
annotations: {}
## @param notifications.bots.slack.service.extraPorts Extra ports to expose (normally used with the `sidecar` value)
##
extraPorts: []
## @param notifications.bots.slack.service.sessionAffinity Session Affinity for Kubernetes service, can be "None" or "ClientIP"
## If "ClientIP", consecutive client requests will be directed to the same Pod
## ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
##
sessionAffinity: None
## @param notifications.bots.slack.service.sessionAffinityConfig Additional settings for the sessionAffinity
## sessionAffinityConfig:
## clientIP:
## timeoutSeconds: 300
##
sessionAffinityConfig: {}
## ServiceAccount configuration for the Argo CD Slack bot
##
serviceAccount:
## @param notifications.bots.slack.serviceAccount.create Specifies whether a ServiceAccount should be created
##
create: true
## @param notifications.bots.slack.serviceAccount.name The name of the ServiceAccount to use.
## If not set and create is true, a name is generated using the common.names.fullname template
##
name: ""
## @param notifications.bots.slack.serviceAccount.automountServiceAccountToken Automount service account token for the notifications controller service account
##
automountServiceAccountToken: true
## @param notifications.bots.slack.serviceAccount.annotations Annotations for service account. Evaluated as a template. Only used if `create` is `true`.
##
annotations: {}
## @param notifications.bots.slack.podAffinityPreset Pod affinity preset. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard`
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
##
podAffinityPreset: ""
## @param notifications.bots.slack.podAntiAffinityPreset Pod anti-affinity preset. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard`
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#inter-pod-affinity-and-anti-affinity
##
podAntiAffinityPreset: soft
## Node notifications.bots.slack.affinity preset
## ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#node-affinity
##
nodeAffinityPreset:
## @param notifications.bots.slack.nodeAffinityPreset.type Node affinity preset type. Ignored if `notifications.bots.slack.affinity` is set. Allowed values: `soft` or `hard`
##
type: ""
## @param notifications.bots.slack.nodeAffinityPreset.key Node label key to match. Ignored if `notifications.bots.slack.affinity` is set
##
key: ""
## @param notifications.bots.slack.nodeAffinityPreset.values Node label values to match. Ignored if `notifications.bots.slack.affinity` is set
## E.g.
## values:
## - e2e-az1
## - e2e-az2
##
values: []
## @param notifications.bots.slack.affinity Affinity for Argo CD Slack bot pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
## NOTE: `notifications.bots.slack.podAffinityPreset`, `notifications.bots.slack.podAntiAffinityPreset`, and `notifications.bots.slack.nodeAffinityPreset` will be ignored when it's set
##
affinity: {}
## @param notifications.bots.slack.podAnnotations Annotations for Argo CD Slack bot pods
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/
##
podAnnotations: {}
## @param notifications.bots.slack.podLabels Extra labels for Argo CD Slack bot pods
## ref: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/
##
podLabels: {}
## Configure Container Security Context
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
## @param notifications.bots.slack.containerSecurityContext.enabled Enabled Argo CD Slack bot containers' Security Context
## @param notifications.bots.slack.containerSecurityContext.runAsUser Set Argo CD Slack bot containers' Security Context runAsUser
## @param notifications.bots.slack.containerSecurityContext.allowPrivilegeEscalation Set Argo CD Slack bot containers' Security Context allowPrivilegeEscalation
## @param notifications.bots.slack.containerSecurityContext.capabilities.drop Set Argo CD Slack bot containers' Security Context capabilities to be dropped
## @param notifications.bots.slack.containerSecurityContext.readOnlyRootFilesystem Set Argo CD Slack bot containers' Security Context readOnlyRootFilesystem
## @param notifications.bots.slack.containerSecurityContext.runAsNonRoot Set Argo CD Slack bot container's Security Context runAsNonRoot
##
containerSecurityContext:
enabled: true
runAsUser: 1001
allowPrivilegeEscalation: false
capabilities:
drop:
- all
readOnlyRootFilesystem: false
runAsNonRoot: true
## Argo CD Slack bot resource requests and limits
## ref: https://kubernetes.io/docs/user-guide/compute-resources/
## @param notifications.bots.slack.resources.limits The resources limits for the Argo CD Slack bot containers
## @param notifications.bots.slack.resources.requests The requested resources for the Argo CD Slack bot containers
##
resources:
limits: {}
requests: {}
## Configure Pods Security Context
## ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod
## @param notifications.bots.slack.podSecurityContext.enabled Enabled Argo CD Slack bot pods' Security Context
## @param notifications.bots.slack.podSecurityContext.fsGroup Set Argo CD Slack bot pod's Security Context fsGroup
##
podSecurityContext:
enabled: true
fsGroup: 1001
## @param notifications.bots.slack.nodeSelector Node labels for Argo CD Slack bot pods assignment
## ref: https://kubernetes.io/docs/user-guide/node-selection/
##
nodeSelector: {}
## @param notifications.bots.slack.tolerations Tolerations for Argo CD Slack bot pods assignment
## ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/
##
tolerations: []
## @param notifications.bots.slack.priorityClassName Argo CD Slack bot pods' priorityClassName
##
priorityClassName: ""
## @param notifications.bots.slack.extraVolumes Optionally specify extra list of additional volumes for the Argo CD Slack bot pod(s)
##
extraVolumes: []
## @param notifications.bots.slack.extraVolumeMounts Optionally specify extra list of additional volumeMounts for the Argo CD Slack bot container(s)
##
extraVolumeMounts: []
## @param notifications.bots.slack.extraEnvVars Array with extra environment variables to add to Argo CD Slack bot nodes
## e.g:
## extraEnvVars:
## - name: FOO
## value: "bar"
##
extraEnvVars: []
## @param notifications.bots.slack.extraEnvVarsCM Name of existing ConfigMap containing extra env vars for Argo CD Slack bot nodes
##
extraEnvVarsCM: ""
## @param notifications.bots.slack.extraEnvVarsSecret Name of existing Secret containing extra env vars for Argo CD Slack bot nodes
##
extraEnvVarsSecret: ""
## @section Argo CD server Parameters
## Argo CD server configuration