Merge branch 'master' into papanito/improve-ingress

This commit is contained in:
Adrian Wyssmann 2020-06-24 11:52:56 +02:00 committed by GitHub
commit d416257aa9
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 636 additions and 8 deletions

View file

@ -1,13 +1,16 @@
# https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners
# Argo Workflows
/charts/argo @benjaminws @stefansedich @paguos
# Argo CD
/charts/argo-cd @seanson @spencergilbert
# Argo Events
/charts/argo-events @jbehling
# Argo Workflows
/charts/argo @benjaminws @stefansedich @paguos
# Argo Rollouts
/charts/argo-rollouts @cabrinha
# Argo CD Notifications
/charts/argocd-notifications @alexmt @andyfeller

View file

@ -51,6 +51,16 @@ argocd app create guestbook --dest-namespace default --dest-server https://kuber
argocd app sync guestbook
```
## Testing Argo CD Notification Changes
Thorough testing of argocd-notifications would require one or more notification services (Slack, OpsGenie, etc), however
minimal testing mostly consists of successful Helm chart installation and the argocd-notifications controller having
access to the `Application` resources in the same namespace that Argo CD is installed.
```
helm install argocd-notifications charts/argocd-notifications --namespace argocd
```
## New Application Versions
When raising application versions ensure you make the following changes:

View file

@ -26,6 +26,4 @@ spec:
termination: {{ .Values.server.route.termination_type | default "passthrough" }}
insecureEdgeTerminationPolicy: {{ .Values.server.route.termination_policy | default "None" }}
wildcardPolicy: None
status:
ingress: []
{{- end }}

View file

@ -2,7 +2,7 @@ apiVersion: v1
appVersion: v2.8.0
description: A Helm chart for Argo Workflows
name: argo
version: 0.9.4
version: 0.9.8
icon: https://raw.githubusercontent.com/argoproj/argo/master/docs/assets/argo.png
home: https://github.com/argoproj/argo-helm
maintainers:

View file

@ -63,6 +63,14 @@ spec:
value: {{ .Values.server.baseHref | quote }}
resources:
{{- toYaml .Values.server.resources | nindent 12 }}
{{- with .Values.server.volumeMounts }}
volumeMounts:
{{- toYaml . | nindent 12}}
{{- end }}
{{- with .Values.server.volumes }}
volumes:
{{- toYaml . | nindent 8}}
{{- end }}
{{- with .Values.server.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}

View file

@ -25,8 +25,8 @@ data:
env: {{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
{{- if or .Values.minio.install .Values.useDefaultArtifactRepo }}
artifactRepository:
{{- if or .Values.minio.install .Values.useDefaultArtifactRepo }}
{{- if .Values.artifactRepository.archiveLogs }}
archiveLogs: {{ .Values.artifactRepository.archiveLogs }}
{{- end }}
@ -54,7 +54,7 @@ data:
{{- if .Values.artifactRepository.s3.useSDKCreds }}
useSDKCreds: {{ .Values.artifactRepository.s3.useSDKCreds }}
{{- end }}
{{- end}}
{{- end}}
{{- if .Values.controller.metricsConfig.enabled }}
metricsConfig:
{{ toYaml .Values.controller.metricsConfig | indent 6}}{{- end }}
@ -67,3 +67,6 @@ data:
{{- if .Values.controller.workflowDefaults }}
workflowDefaults:
{{ toYaml .Values.controller.workflowDefaults | indent 6 }}{{- end }}
{{- with .Values.server.sso }}
sso: {{- toYaml . | nindent 6 }}
{{- end }}

View file

@ -43,6 +43,14 @@ spec:
{{- if .Values.singleNamespace }}
- "--namespaced"
{{- end }}
{{- with .Values.controller.workflowWorkers }}
- "--workflow-workers"
- {{ . | quote }}
{{- end }}
{{- if .Values.controller.podWorkers }}
- "--pod-workers"
- {{ . | quote }}
{{- end }}
env:
- name: ARGO_NAMESPACE
valueFrom:

View file

@ -57,6 +57,8 @@ controller:
# spec:
# ttlStrategy:
# secondsAfterCompletion: 84600
# workflowWorkers: 32
# podWorkers: 32
telemetryConfig:
enabled: false
path: /telemetry
@ -162,6 +164,10 @@ server:
# Extra arguments to provide to the Argo server binary.
extraArgs: []
## Additional volumes to the server main container.
volumeMounts: []
volumes: []
## Ingress configuration.
## ref: https://kubernetes.io/docs/user-guide/ingress/
##
@ -195,6 +201,23 @@ server:
clusterWorkflowTemplates:
# Give the server permissions to edit ClusterWorkflowTemplates.
enableEditing: true
sso:
## SSO configuration when SSO is specified as a server auth mode.
## All the values are requied. SSO is activated by adding --auth-mode=sso
## to the server command line.
#
## The root URL of the OIDC identity provider.
# issuer: https://accounts.google.com
## Name of a secret and a key in it to retrieve the app OIDC client ID from.
# clientId:
# name: argo-server-sso
# key: client-id
## Name of a secret and a key in it to retrieve the app OIDC client secret from.
# clientSecret:
# name: argo-server-sso
# key: client-secret
## The OIDC redirect URL. Should be in the form <argo-root-url>/oauth2/callback.
# redirectUrl: https://argo/oauth2/callback
# Influences the creation of the ConfigMap for the workflow-controller itself.
useDefaultArtifactRepo: false

View file

@ -0,0 +1,22 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View file

@ -0,0 +1,15 @@
apiVersion: v2
appVersion: 0.7.0
description: A Helm chart for ArgoCD notifications, an add-on to ArgoCD.
name: argocd-notifications
type: application
version: 1.0.4
home: https://github.com/argoproj/argo-helm
icon: https://raw.githubusercontent.com/argoproj/argo/master/docs/assets/argo.png
keywords:
- argoproj
- argocd
- argocd-notifications
maintainers:
- name: alexmt
- name: andyfeller

View file

@ -0,0 +1,9 @@
## ArgoCD Notifications Chart
This is a **community maintained** chart. It installs the [argocd-notifications](https://github.com/argoproj-labs/argocd-notifications) application. This application comes packaged with:
- Notifications Controller Deployment
- Notifications Controller ConfigMap
- Notifications Controller Secret
- Service Account
- Roles
- Role Bindings

View file

@ -0,0 +1,94 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "argocd-notifications.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "argocd-notifications.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "argocd-notifications.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "argocd-notifications.labels" -}}
helm.sh/chart: {{ include "argocd-notifications.chart" . }}
{{ include "argocd-notifications.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Common slack bot labels
*/}}
{{- define "argocd-notifications.bots.slack.labels" -}}
helm.sh/chart: {{ include "argocd-notifications.chart" . }}
{{ include "argocd-notifications.bots.slack.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "argocd-notifications.selectorLabels" -}}
app.kubernetes.io/name: {{ include "argocd-notifications.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Selector slack bot labels
*/}}
{{- define "argocd-notifications.bots.slack.selectorLabels" -}}
app.kubernetes.io/name: {{ include "argocd-notifications.name" . }}-bot
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "argocd-notifications.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "argocd-notifications.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}
{{/*
Create the name of the bot service account to use
*/}}
{{- define "argocd-notifications.bots.slack.serviceAccountName" -}}
{{- if .Values.bots.slack.serviceAccount.create -}}
{{ default (include "argocd-notifications.fullname" .) .Values.bots.slack.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.bots.slack.serviceAccount.name }}
{{- end -}}
{{- end -}}

View file

@ -0,0 +1,45 @@
{{ if .Values.bots.slack.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "argocd-notifications.name" . }}-bot
labels:
{{- include "argocd-notifications.bots.slack.labels" . | nindent 4 }}
spec:
strategy:
{{- .Values.bots.slack.updateStrategy | toYaml | nindent 4 }}
selector:
matchLabels:
{{- include "argocd-notifications.bots.slack.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "argocd-notifications.bots.slack.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.bots.slack.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "argocd-notifications.serviceAccountName" . }}-bot
containers:
- name: {{ include "argocd-notifications.name" . }}-bot
image: "{{ .Values.bots.slack.image.repository }}:{{ .Values.bots.slack.image.tag }}"
imagePullPolicy: {{ .Values.bots.slack.image.pullPolicy }}
resources:
{{- toYaml .Values.bots.slack.resources | nindent 12 }}
command:
- /app/argocd-notifications
- bot
{{- with .Values.bots.slack.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.bots.slack.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.bots.slack.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{ end }}

View file

@ -0,0 +1,18 @@
{{ if .Values.bots.slack.enabled }}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "argocd-notifications.name" . }}-bot
rules:
- apiGroups:
- argoproj.io
resources:
- applications
- appprojects
verbs:
- get
- list
- watch
- update
- patch
{{ end }}

View file

@ -0,0 +1,13 @@
{{ if .Values.bots.slack.enabled }}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ include "argocd-notifications.name" . }}-bot
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "argocd-notifications.name" . }}-bot
subjects:
- kind: ServiceAccount
name: {{ include "argocd-notifications.bots.slack.serviceAccountName" . }}
{{ end }}

View file

@ -0,0 +1,15 @@
{{ if .Values.bots.slack.enabled }}
apiVersion: v1
kind: Service
metadata:
name: {{ include "argocd-notifications.name" . }}-bot
spec:
ports:
- name: server
port: 80
protocol: TCP
targetPort: 8080
selector:
{{- include "argocd-notifications.bots.slack.selectorLabels" . | nindent 4 }}
type: {{ .Values.bots.slack.service.type }}
{{ end }}

View file

@ -0,0 +1,8 @@
{{ if and .Values.bots.slack.enabled .Values.secret.create }}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "argocd-notifications.bots.slack.serviceAccountName" . }}
labels:
{{- include "argocd-notifications.bots.slack.labels" . | nindent 4 }}
{{ end }}

View file

@ -0,0 +1,16 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "argocd-notifications.name" . }}-cm
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}
data:
config.yaml: |
context:
argocdUrl: {{ .Values.argocdUrl | quote }}
subscriptions:
{{- toYaml .Values.subscriptions | nindent 6 }}
templates:
{{- toYaml .Values.templates | nindent 6 }}
triggers:
{{- toYaml .Values.triggers | nindent 6 }}

View file

@ -0,0 +1,43 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "argocd-notifications.name" . }}-controller
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}
spec:
strategy:
{{- .Values.updateStrategy | toYaml | nindent 4 }}
selector:
matchLabels:
{{- include "argocd-notifications.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "argocd-notifications.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "argocd-notifications.serviceAccountName" . }}
containers:
- name: {{ include "argocd-notifications.name" . }}-controller
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
command:
- /app/argocd-notifications
- controller
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}

View file

@ -0,0 +1,27 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "argocd-notifications.name" . }}-controller
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}
rules:
- apiGroups:
- argoproj.io
resources:
- applications
- appprojects
verbs:
- get
- list
- watch
- update
- patch
- apiGroups:
- ""
resources:
- secrets
- configmaps
verbs:
- get
- list
- watch

View file

@ -0,0 +1,13 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ include "argocd-notifications.name" . }}-controller
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "argocd-notifications.name" . }}-controller
subjects:
- kind: ServiceAccount
name: {{ include "argocd-notifications.serviceAccountName" . }}

View file

@ -0,0 +1,30 @@
{{ if .Values.secret.create }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "argocd-notifications.name" . }}-secret
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}
type: Opaque
stringData:
notifiers.yaml: |
{{- if .Values.secret.notifiers.slack.enabled }}
slack:
token: {{ .Values.secret.notifiers.slack.token }}
username: {{ .Values.secret.notifiers.slack.username }}
icon: {{ .Values.secret.notifiers.slack.icon }}
signingSecret: {{ .Values.secret.notifiers.slack.signingSecret }}
{{- end }}
{{- if .Values.secret.notifiers.grafana.enabled }}
grafana:
apiUrl: {{ .Values.secret.notifiers.grafana.apiUrl }}
apiKey: {{ .Values.secret.notifiers.grafana.apiKey }}
{{- end }}
{{- if .Values.secret.notifiers.webhooks }}
webhook:
{{- range $k, $v := .Values.secret.notifiers.webhooks }}
- name: {{ $k }}
{{- $v | toYaml | nindent 8 }}
{{- end }}
{{- end }}
{{ end }}

View file

@ -0,0 +1,6 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "argocd-notifications.serviceAccountName" . }}
labels:
{{- include "argocd-notifications.labels" . | nindent 4 }}

View file

@ -0,0 +1,201 @@
affinity: {}
# ArgoCD dashboard url; used in place of {{.context.argocdUrl}} in templates
argocdUrl:
fullnameOverride: ""
image:
repository: argoprojlabs/argocd-notifications
tag: v0.7.0
pullPolicy: IfNotPresent
imagePullSecrets: []
nameOverride: "argocd-notifications"
nodeSelector: {}
updateStrategy:
type: Recreate
secret:
# Whether helm chart creates controller secret
create: true
notifiers:
# For more information: https://argoproj-labs.github.io/argocd-notifications/services/overview/
slack:
# For more information: https://argoproj-labs.github.io/argocd-notifications/services/slack/
# Specifies whether Slack notifier should be configured
enabled: false
# OAuth Access Token
token:
# Optional override username
username:
# Optional override icon
icon:
# Optional override signingSecret: https://argoproj-labs.github.io/argocd-notifications/recipients/slack-bot/
signingSecret:
grafana:
# For more information: https://argoproj-labs.github.io/argocd-notifications/services/grafana/
# Specifies whether Grafana notifier should be configured
enabled: false
# Grafana api endpoint; for example: https://grafana.example.com/api
apiUrl:
# Grafana api key
apiKey:
webhooks: {}
# For more information: https://argoproj-labs.github.io/argocd-notifications/services/webhook/
# mywebhook:
# url: http://example.com
# headers:
# - name: headerName
# value: headerValue
# basicAuth:
# username: username
# password: mypassword
# mywebhook2:
# url: http://example.com
# headers:
# - name: headerName
# value: headerValue
# basicAuth:
# username: username
# password: mypassword
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
serviceAccount:
# Specifies whether a service account should be created
create: true
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: argocd-notifications-controller
subscriptions: []
# Assignment of recipients by notification channel to triggers in several forms:
#
# global subscription for all type of notifications
# - recipients:
# - slack:test1
# - webhook:github
#
# subscription for on-sync-status-unknown trigger notifications
# - recipients:
# - slack:test2
# - email:test@gmail.com
# trigger: on-sync-status-unknown
#
# global subscription restricted to applications with matching labels only
# - recipients:
# - slack:test3
# selector: test=true
#
# For more information: https://argoproj-labs.github.io/argocd-notifications/triggers_and_templates/
templates: []
# The notification template is used to generate the notification content. The template is leveraging html/template
# golang package and allow to define notification title and body. The template is meant to be reusable and can be
# referenced by multiple triggers.
#
# Add your custom template
# - name: my-custom-template
# title: Hello {{.app.metadata.name}}
# body: |
# Application details: {{.context.argocdUrl}}/applications/{{.app.metadata.name}}.
#
# Override one field in built-in template
# - name: on-sync-succeeded
# title: Application {{.app.metadata.name}} sync status is {{.app.status.sync.status}}
#
# For more information: https://argoproj-labs.github.io/argocd-notifications/triggers_and_templates/
tolerations: []
triggers:
# The condition when the notification should be sent. The definition includes name, condition and notification template reference.
#
# Enable built-in triggers:
#
# Application has degraded
# - name: on-health-degraded
# enabled: true
#
# Application syncing has failed
# - name: on-sync-failed
# enabled: true
#
# Application is being synced
# - name: on-sync-running
# enabled: true
#
# Application status is 'Unknown'
# - name: on-sync-status-unknown
# enabled: true
#
# Application syncing has succeeded
# - name: on-sync-succeeded
# enabled: true
#
#
# Or define your custom triggers:
#
# - name: my-custom-trigger
# condition: app.status.sync.status == 'Unknown'
# template: my-custom-template
#
# For more information: https://argoproj-labs.github.io/argocd-notifications/triggers_and_templates/
bots:
# For more information: https://argoproj-labs.github.io/argocd-notifications/recipients/bot/
slack:
# You have to set secret.notifiers.slack.signingSecret
enabled: false
updateStrategy:
type: Recreate
image:
repository: argoprojlabs/argocd-notifications
tag: v0.7.0
pullPolicy: IfNotPresent
imagePullSecrets: []
service:
type: LoadBalancer
serviceAccount:
# Specifies whether a service account should be created
create: true
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: argocd-notifications-bot
resources: {}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
affinity: {}
tolerations: []
nodeSelector: {}