diff --git a/CHANGELOG.md b/CHANGELOG.md index 4fb0eb97..9cd470e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## In Development * Temporary workaround for #311 to use previous bitnami index from: https://github.com/bitnami/charts/issues/10539 (#312) (by @0xhaven) +* Refactor label definitions to be more consistent by building labels and label selectors in partial helper templates. (#299) (by @cognifloyd) ## v0.100.0 * Switch st2 to `v3.7` as a new default stable version (#274) diff --git a/templates/_helpers.tpl b/templates/_helpers.tpl index dd5ce49a..e3f10dc4 100644 --- a/templates/_helpers.tpl +++ b/templates/_helpers.tpl @@ -5,6 +5,37 @@ Expand the name of the chart. {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} {{- end -}} +{{/* +Common labels +Usage: "{{ include "stackstorm-ha.labels" (list $ "st2servicename") }}" +*/}} +{{- define "stackstorm-ha.labels" -}} +{{- $root := index . 0 }} +{{- $name := index . 1 }} +{{ include "stackstorm-ha.selectorLabels" . }} +{{- if list "st2web" "ingress" | has $name }} +tier: frontend +{{- else if eq $name "st2tests" }} +tier: tests +{{- else }} +tier: backend +{{- end }} +vendor: stackstorm +chart: {{ $root.Chart.Name }}-{{ $root.Chart.Version }} +heritage: {{ $root.Release.Service }} +{{- end -}} + +{{/* +Selector labels +Usage: "{{ include "stackstorm-ha.selectorLabels" (list $ "st2servicename") }}" +*/}} +{{- define "stackstorm-ha.selectorLabels" -}} +{{- $root := index . 0 }} +{{- $name := index . 1 }} +app: {{ $name }} +release: {{ $root.Release.Name }} +{{- end -}} + {{/* Generate Docker image repository: Public Docker Hub 'stackstorm' for FOSS version */}} diff --git a/templates/configmaps_packs.yaml b/templates/configmaps_packs.yaml index c31dd487..9d5a8817 100644 --- a/templates/configmaps_packs.yaml +++ b/templates/configmaps_packs.yaml @@ -5,12 +5,6 @@ metadata: name: {{ .Release.Name }}-st2-pack-configs annotations: description: StackStorm pack configs defined in helm values, shipped in (or copied to) '/opt/stackstorm/configs/' - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: {{ toYaml .Values.st2.packs.configs | indent 2 }} diff --git a/templates/configmaps_post-start-script.yaml b/templates/configmaps_post-start-script.yaml index d1a203da..180f822c 100644 --- a/templates/configmaps_post-start-script.yaml +++ b/templates/configmaps_post-start-script.yaml @@ -7,13 +7,7 @@ metadata: name: {{ $.Release.Name }}-{{ . }}-post-start-script annotations: description: Custom postStart lifecycle event handler script for {{ . }} - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: # k8s calls this script in parallel with starting {{ . }} (ie the same time as ENTRYPOINT) # The pod will not be marked as "running" until this script completes successfully. diff --git a/templates/configmaps_rbac.yaml b/templates/configmaps_rbac.yaml index 5c51db7f..99eb5d2c 100644 --- a/templates/configmaps_rbac.yaml +++ b/templates/configmaps_rbac.yaml @@ -6,13 +6,7 @@ metadata: name: {{ .Release.Name }}-st2-rbac-roles annotations: description: Custom StackStorm RBAC roles, shipped in '/opt/stackstorm/rbac/roles/' - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: {{- range $filename, $contents := .Values.st2.rbac.roles }} {{/* to support removing default files, skip files with empty contents */}} @@ -29,13 +23,7 @@ metadata: name: {{ .Release.Name }}-st2-rbac-assignments annotations: description: Custom StackStorm RBAC role assignments, shipped in '/opt/stackstorm/rbac/assignments/' - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: {{- range $filename, $contents := .Values.st2.rbac.assignments }} {{/* to support removing default files, skip files with empty contents */}} @@ -52,13 +40,7 @@ metadata: name: {{ .Release.Name }}-st2-rbac-mappings annotations: description: StackStorm RBAC LDAP groups-to-roles mapping rules, shipped in '/opt/stackstorm/rbac/mappings/' - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: {{- if .Values.st2.rbac.mappings }} {{ toYaml .Values.st2.rbac.mappings | indent 2 }} diff --git a/templates/configmaps_st2-conf.yaml b/templates/configmaps_st2-conf.yaml index fd734997..aac17ff3 100644 --- a/templates/configmaps_st2-conf.yaml +++ b/templates/configmaps_st2-conf.yaml @@ -5,13 +5,7 @@ metadata: name: {{ .Release.Name }}-st2-config annotations: description: Custom StackStorm config which will apply settings on top of default st2.conf - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: # TODO: Bundle DB/MQ login secrets in dynamic ENV-based st2.secrets.conf, leave custom user-defined settings for st2.user.conf (?) # Docker/K8s-based st2 config file used for templating service names and common overrides on top of original st2.conf. diff --git a/templates/configmaps_st2-urls.yaml b/templates/configmaps_st2-urls.yaml index 9810ecd6..e02dccc1 100644 --- a/templates/configmaps_st2-urls.yaml +++ b/templates/configmaps_st2-urls.yaml @@ -5,13 +5,7 @@ metadata: name: {{ .Release.Name }}-st2-urls annotations: description: StackStorm service URLs, used across entire st2 cluster - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: ST2_AUTH_URL: http://{{ .Release.Name }}-st2auth:9100/ ST2_API_URL: http://{{ .Release.Name }}-st2api:9101/ diff --git a/templates/configmaps_st2web.yaml b/templates/configmaps_st2web.yaml index 63ed6c99..44d9a430 100644 --- a/templates/configmaps_st2web.yaml +++ b/templates/configmaps_st2web.yaml @@ -6,13 +6,7 @@ metadata: name: {{ .Release.Name }}-st2web-config annotations: description: Custom StackStorm Web config which will override defaults - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} data: # User-defined st2web config with custom settings to replace default config.js # See https://github.com/StackStorm/st2web#connecting-to-st2-server for more info diff --git a/templates/deployments.yaml b/templates/deployments.yaml index 8c686a72..da96ad0b 100644 --- a/templates/deployments.yaml +++ b/templates/deployments.yaml @@ -13,33 +13,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2auth - labels: - app: st2auth - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2auth") | nindent 4 }} {{- if .Values.st2auth.annotations }} annotations: {{- toYaml .Values.st2auth.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2auth - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2auth") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2auth # Multiple st2auth processes can be behind a load balancer in an active-active configuration. replicas: {{ default 2 .Values.st2auth.replicas }} template: metadata: - labels: - app: st2auth - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2auth") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/auth: {{ include (print $.Template.BasePath "/secrets_st2auth.yaml") . | sha256sum }} @@ -154,33 +140,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2api - labels: - app: st2api - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2api") | nindent 4 }} {{- if .Values.st2api.annotations }} annotations: {{- toYaml .Values.st2api.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2api - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2api") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2api # Multiple st2api process can be behind a load balancer in an active-active configuration. replicas: {{ default 2 .Values.st2api.replicas }} template: metadata: - labels: - app: st2api - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2api") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/datastore-key: {{ include (print $.Template.BasePath "/secrets_datastore_crypto_key.yaml") . | sha256sum }} @@ -298,33 +270,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2stream - labels: - app: st2stream - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2stream") | nindent 4 }} {{- if .Values.st2stream.annotations }} annotations: {{- toYaml .Values.st2stream.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2stream - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2stream") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2stream # Multiple st2stream process can be behind a load balancer in an active-active configuration. replicas: {{ default 2 .Values.st2stream.replicas }} template: metadata: - labels: - app: st2stream - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2stream") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} {{- if .Values.st2stream.postStartScript }} @@ -414,31 +372,17 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2web - labels: - app: st2web - tier: frontend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2web") | nindent 4 }} {{- if .Values.st2web.annotations }} annotations: {{- toYaml .Values.st2web.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2web - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2web") | nindent 6 }} replicas: {{ default 2 .Values.st2web.replicas }} template: metadata: - labels: - app: st2web - tier: frontend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2web") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2web.yaml") . | sha256sum }} {{- if .Values.st2web.postStartScript }} @@ -556,33 +500,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2rulesengine - labels: - app: st2rulesengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2rulesengine") | nindent 4 }} {{- if .Values.st2rulesengine.annotations }} annotations: {{- toYaml .Values.st2rulesengine.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2rulesengine - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2rulesengine") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2rulesengine # Multiple st2rulesengine processes can run in active-active with only connections to MongoDB and RabbitMQ. All these will share the TriggerInstance load and naturally pick up more work if one or more of the processes becomes unavailable. replicas: {{ default 2 .Values.st2rulesengine.replicas }} template: metadata: - labels: - app: st2rulesengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2rulesengine") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/datastore-key: {{ include (print $.Template.BasePath "/secrets_datastore_crypto_key.yaml") . | sha256sum }} @@ -684,34 +614,20 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2timersengine - labels: - app: st2timersengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2timersengine") | nindent 4 }} {{- if .Values.st2timersengine.annotations }} annotations: {{- toYaml .Values.st2timersengine.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2timersengine - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2timersengine") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2timersengine # Only single replica is created as timersengine can't work in active-active mode at the moment and it relies on # K8s failover/reschedule capabilities to address cases when the process fails. replicas: 1 template: metadata: - labels: - app: st2timersengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2timersengine") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} {{- if .Values.st2timersengine.postStartScript }} @@ -799,33 +715,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2workflowengine - labels: - app: st2workflowengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2workflowengine") | nindent 4 }} {{- if .Values.st2workflowengine.annotations }} annotations: {{- toYaml .Values.st2workflowengine.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2workflowengine - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2workflowengine") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2workflowengine # Multiple st2workflowengine processes can run in active-active mode and will share the load and pick up more work if one or more of the processes become available. replicas: {{ default 2 .Values.st2workflowengine.replicas }} template: metadata: - labels: - app: st2workflowengine - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2workflowengine") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/datastore-key: {{ include (print $.Template.BasePath "/secrets_datastore_crypto_key.yaml") . | sha256sum }} @@ -927,32 +829,18 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2scheduler - labels: - app: st2scheduler - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2scheduler") | nindent 4 }} {{- if .Values.st2scheduler.annotations }} annotations: {{- toYaml .Values.st2scheduler.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2scheduler - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2scheduler") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2scheduler replicas: {{ default 2 .Values.st2scheduler.replicas }} template: metadata: - labels: - app: st2scheduler - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2scheduler") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/datastore-key: {{ include (print $.Template.BasePath "/secrets_datastore_crypto_key.yaml") . | sha256sum }} @@ -1054,33 +942,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2notifier - labels: - app: st2notifier - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2notifier") | nindent 4 }} {{- if .Values.st2notifier.annotations }} annotations: {{- toYaml .Values.st2notifier.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2notifier - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2notifier") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2notifier # st2notifier runs in active-active mode and requires for that coordination backend like Redis or Zookeeper replicas: {{ default 2 .Values.st2notifier.replicas }} template: metadata: - labels: - app: st2notifier - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2notifier") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} {{- if .Values.st2notifier.postStartScript }} @@ -1193,21 +1067,13 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ $.Release.Name }}-{{ $name }} - labels: - app: {{ $name }} - tier: backend - vendor: stackstorm - chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ $name) | nindent 4 }} {{- if $sensor.annotations }} annotations: {{- toYaml $sensor.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: {{ $name }} - release: {{ $.Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ $name) | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2sensorcontainer # It is possible to run st2sensorcontainer(s) in one of these modes: # (1) run all sensors in one pod (1 deployment with 1 pod, the default); or @@ -1218,13 +1084,7 @@ spec: replicas: 1 template: metadata: - labels: - app: {{ $name }} - tier: backend - vendor: stackstorm - chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ $name) | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") $ | sha256sum }} checksum/packs: {{ include (print $.Template.BasePath "/configmaps_packs.yaml") $ | sha256sum }} @@ -1396,34 +1256,20 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2actionrunner - labels: - app: st2actionrunner - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2actionrunner") | nindent 4 }} {{- if .Values.st2actionrunner.annotations }} annotations: {{- toYaml .Values.st2actionrunner.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2actionrunner - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2actionrunner") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2actionrunner # Multiple st2actionrunner processes can run in active-active with only connections to MongoDB and RabbitMQ. Work gets naturally # distributed across runners via RabbitMQ. Adding more st2actionrunner processes increases the ability of StackStorm to execute actions. replicas: {{ default 5 .Values.st2actionrunner.replicas }} template: metadata: - labels: - app: st2actionrunner - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2actionrunner") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/ssh: {{ include (print $.Template.BasePath "/secrets_ssh.yaml") . | sha256sum }} @@ -1554,33 +1400,19 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2garbagecollector - labels: - app: st2garbagecollector - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2garbagecollector") | nindent 4 }} {{- if .Values.st2garbagecollector.annotations }} annotations: {{- toYaml .Values.st2garbagecollector.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2garbagecollector - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2garbagecollector") | nindent 6 }} # https://docs.stackstorm.com/reference/ha.html#st2garbagecollector # Having 1 st2garbagecollector unique replica is enough for periodic task like st2 history garbage collection replicas: {{ default 1 .Values.st2garbagecollector.replicas }} template: metadata: - labels: - app: st2garbagecollector - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2garbagecollector") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} {{- if .Values.st2garbagecollector.postStartScript }} @@ -1668,31 +1500,17 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2client - labels: - app: st2client - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2client") | nindent 4 }} {{- if .Values.st2client.annotations }} annotations: {{- toYaml .Values.st2client.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2client - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2client") | nindent 6 }} replicas: 1 template: metadata: - labels: - app: st2client - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2client") | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} checksum/rbac: {{ include (print $.Template.BasePath "/configmaps_rbac.yaml") . | sha256sum }} @@ -1874,32 +1692,18 @@ apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }}-st2chatops - labels: - app: st2chatops - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2chatops") | nindent 4 }} {{- if .Values.st2chatops.annotations }} annotations: {{- toYaml .Values.st2chatops.annotations | nindent 4 }} {{- end }} spec: selector: - matchLabels: - app: st2chatops - release: {{ .Release.Name }} + matchLabels: {{- include "stackstorm-ha.selectorLabels" (list $ "st2chatops") | nindent 6 }} # As hubot can't be HA scaled properly, we deploy only single replica of st2chatops replicas: 1 template: metadata: - labels: - app: st2chatops - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2chatops") | nindent 8 }} annotations: checksum/chatops: {{ include (print $.Template.BasePath "/secrets_st2chatops.yaml") . | sha256sum }} {{- if .Values.st2chatops.postStartScript }} diff --git a/templates/ingress.yaml b/templates/ingress.yaml index ae9e229f..b90b8d03 100644 --- a/templates/ingress.yaml +++ b/templates/ingress.yaml @@ -4,13 +4,7 @@ apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: {{ .Release.Name }}-st2web-ingress - labels: - app: ingress - tier: frontend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "ingress") | nindent 4 }} annotations: {{- if .Values.ingress.tls }} ingress.kubernetes.io/secure-backends: "true" diff --git a/templates/jobs.yaml b/templates/jobs.yaml index e23791dc..d98a397f 100644 --- a/templates/jobs.yaml +++ b/templates/jobs.yaml @@ -4,13 +4,7 @@ apiVersion: batch/v1 kind: Job metadata: name: {{ .Release.Name }}-job-st2-apply-rbac-definitions - labels: - app: st2-apply-rbac-definitions - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2-apply-rbac-definitions") | nindent 4 }} annotations: helm.sh/hook: post-install, post-upgrade, post-rollback helm.sh/hook-delete-policy: before-hook-creation @@ -22,13 +16,7 @@ spec: template: metadata: name: job-st2-apply-rbac-definitions - labels: - app: st2-apply-rbac-definitions - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2-apply-rbac-definitions") | nindent 8 }} annotations: # TODO: Investigate/propose running Helm hook only on condition when ConfigMap or Secret has changed checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} @@ -112,13 +100,7 @@ apiVersion: batch/v1 kind: Job metadata: name: {{ .Release.Name }}-job-st2-apikey-load - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} annotations: helm.sh/hook: post-install, post-upgrade, post-rollback helm.sh/hook-delete-policy: before-hook-creation @@ -130,13 +112,7 @@ spec: template: metadata: name: job-st2-apikey-load - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 8 }} annotations: # TODO: Investigate/propose running Helm hook only on condition when ConfigMap or Secret has changed checksum/urls: {{ include (print $.Template.BasePath "/configmaps_st2-urls.yaml") . | sha256sum }} @@ -254,13 +230,7 @@ apiVersion: batch/v1 kind: Job metadata: name: {{ .Release.Name }}-job-st2-key-load - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} annotations: helm.sh/hook: post-install, post-upgrade, post-rollback helm.sh/hook-delete-policy: before-hook-creation @@ -272,13 +242,7 @@ spec: template: metadata: name: job-st2-key-load - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 8 }} annotations: # TODO: Investigate/propose running Helm hook only on condition when ConfigMap or Secret has changed checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} @@ -387,13 +351,7 @@ apiVersion: batch/v1 kind: Job metadata: name: {{ .Release.Name }}-job-st2-register-content - labels: - app: st2-register-content - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2-register-content") | nindent 4 }} annotations: helm.sh/hook: post-install, post-upgrade, post-rollback helm.sh/hook-delete-policy: before-hook-creation @@ -405,13 +363,7 @@ spec: template: metadata: name: job-st2-register-content - labels: - app: st2-register-content - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2-register-content") | nindent 8 }} annotations: # TODO: Investigate/propose running Helm hook only on condition when ConfigMap or Secret has changed checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") . | sha256sum }} @@ -517,13 +469,7 @@ apiVersion: batch/v1 kind: Job metadata: name: {{ $.Release.Name }}-job-{{ $name }} - labels: - app: {{ $name }} - tier: backend - vendor: stackstorm - chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ $name) | nindent 4 }} annotations: helm.sh/hook: {{ required "Each entry in jobs.extra_hooks must include 'hook' (the helm.sh/hook value)" .hook }} helm.sh/hook-delete-policy: before-hook-creation @@ -535,13 +481,7 @@ spec: template: metadata: name: job-{{ $name }} - labels: - app: {{ $name }} - tier: backend - vendor: stackstorm - chart: {{ $.Chart.Name }}-{{ $.Chart.Version }} - release: {{ $.Release.Name }} - heritage: {{ $.Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ $name) | nindent 8 }} annotations: checksum/config: {{ include (print $.Template.BasePath "/configmaps_st2-conf.yaml") $ | sha256sum }} checksum/packs: {{ include (print $.Template.BasePath "/configmaps_packs.yaml") $ | sha256sum }} diff --git a/templates/secrets_datastore_crypto_key.yaml b/templates/secrets_datastore_crypto_key.yaml index 36c99836..509db834 100644 --- a/templates/secrets_datastore_crypto_key.yaml +++ b/templates/secrets_datastore_crypto_key.yaml @@ -11,13 +11,7 @@ metadata: name: {{ $name }} annotations: description: StackStorm crypto key used to encrypt/decrypt KV records - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: # Datastore key used to encrypt/decrypt record for the KV store diff --git a/templates/secrets_rabbitmq.yaml b/templates/secrets_rabbitmq.yaml index 703b6662..a09f1ddd 100644 --- a/templates/secrets_rabbitmq.yaml +++ b/templates/secrets_rabbitmq.yaml @@ -9,13 +9,7 @@ metadata: name: {{ .Release.Name }}-rabbitmq-definitions annotations: description: A rabbitmq definition which will be loaded by the rabbitmq subchart to enable mirroring for Rabbit HA - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: rabbitmq-definitions.json: {{ tpl (.Files.Get "conf/rabbit-definition.conf") . | b64enc }} diff --git a/templates/secrets_ssh.yaml b/templates/secrets_ssh.yaml index 807c1b83..d236e692 100644 --- a/templates/secrets_ssh.yaml +++ b/templates/secrets_ssh.yaml @@ -11,13 +11,7 @@ metadata: name: {{ $name }} annotations: description: StackStorm SSH secret key for 'stanley' user, used to run actions on remote machines - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: # SSH private key for the 'stanley' system user ('system_user.ssh_key_file' in st2.conf). diff --git a/templates/secrets_st2apikeys.yaml b/templates/secrets_st2apikeys.yaml index 6a2bd7cd..9d6800f8 100644 --- a/templates/secrets_st2apikeys.yaml +++ b/templates/secrets_st2apikeys.yaml @@ -5,13 +5,7 @@ metadata: name: {{ .Release.Name }}-st2-apikeys annotations: description: A list of StackStorm API keys with metadata that will be imported into the system - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: apikeys.yaml: {{ toYaml .Values.st2.apikeys | b64enc | quote }} diff --git a/templates/secrets_st2auth.yaml b/templates/secrets_st2auth.yaml index 8f17d71e..a1f45942 100644 --- a/templates/secrets_st2auth.yaml +++ b/templates/secrets_st2auth.yaml @@ -12,13 +12,7 @@ metadata: name: {{ $name }} annotations: description: StackStorm username and password, used for basic .htaccess auth - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: # Username, used to login to StackStorm system (default: st2admin) diff --git a/templates/secrets_st2chatops.yaml b/templates/secrets_st2chatops.yaml index 460a3a8b..5c853ae6 100644 --- a/templates/secrets_st2chatops.yaml +++ b/templates/secrets_st2chatops.yaml @@ -6,13 +6,7 @@ metadata: name: {{ .Release.Name }}-st2chatops annotations: description: Custom StackStorm chatops config, passed to hubot as ENV vars - labels: - app: st2chatops - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2chatops") | nindent 4 }} type: Opaque data: {{- range $env, $value := .Values.st2chatops.env }} diff --git a/templates/secrets_st2kv.yaml b/templates/secrets_st2kv.yaml index c7952934..0d755d46 100644 --- a/templates/secrets_st2kv.yaml +++ b/templates/secrets_st2kv.yaml @@ -5,13 +5,7 @@ metadata: name: {{ .Release.Name }}-st2-kv annotations: description: Key/Value pairs to save in StackStorm's datastore - labels: - app: st2 - tier: backend - vendor: stackstorm - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - release: "{{ .Release.Name }}" - heritage: "{{ .Release.Service }}" + labels: {{- include "stackstorm-ha.labels" (list $ "st2") | nindent 4 }} type: Opaque data: st2kv.yaml: {{ tpl (toYaml .Values.st2.keyvalue ) . | b64enc | quote }} diff --git a/templates/service-account.yaml b/templates/service-account.yaml index 7b785477..4d1d3380 100644 --- a/templates/service-account.yaml +++ b/templates/service-account.yaml @@ -8,11 +8,7 @@ metadata: annotations: {{- toYaml .Values.serviceAccount.serviceAccountAnnotations | nindent 4 }} {{- end }} - labels: - chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" - app: '{{ template "stackstorm-ha.name" . }}' - heritage: "{{ .Release.Service }}" - release: "{{ .Release.Name }}" + labels: {{- include "stackstorm-ha.labels" (list $ (include "stackstorm-ha.name" $)) | nindent 4 }} {{- if .Values.serviceAccount.pullSecret }} imagePullSecrets: - name: "{{ .Values.serviceAccount.pullSecret }}" diff --git a/templates/services.yaml b/templates/services.yaml index 4eee5975..6b0e385d 100644 --- a/templates/services.yaml +++ b/templates/services.yaml @@ -11,17 +11,9 @@ metadata: {{- if .Values.st2auth.service.annotations }} {{- toYaml .Values.st2auth.service.annotations | nindent 4 }} {{- end }} - labels: - app: st2auth - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2auth") | nindent 4 }} spec: - selector: - app: st2auth - release: {{ .Release.Name }} + selector: {{- include "stackstorm-ha.selectorLabels" (list $ "st2auth") | nindent 4 }} type: {{ .Values.st2auth.service.type }} {{- if contains "ExternalName" .Values.st2auth.service.type }} {{- if .Values.st2auth.service.hostname }} @@ -45,17 +37,9 @@ metadata: {{- if .Values.st2api.service.annotations }} {{- toYaml .Values.st2api.service.annotations | nindent 4 }} {{- end }} - labels: - app: st2api - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2api") | nindent 4 }} spec: - selector: - app: st2api - release: {{ .Release.Name }} + selector: {{- include "stackstorm-ha.selectorLabels" (list $ "st2api") | nindent 4 }} type: {{ .Values.st2api.service.type }} {{- if contains "ExternalName" .Values.st2api.service.type }} {{- if .Values.st2api.service.hostname }} @@ -79,17 +63,9 @@ metadata: {{- if .Values.st2stream.service.annotations }} {{- toYaml .Values.st2stream.service.annotations | nindent 4 }} {{- end }} - labels: - app: st2stream - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2stream") | nindent 4 }} spec: - selector: - app: st2stream - release: {{ .Release.Name }} + selector: {{- include "stackstorm-ha.selectorLabels" (list $ "st2stream") | nindent 4 }} type: {{ .Values.st2stream.service.type }} {{- if contains "ExternalName" .Values.st2stream.service.type }} {{- if .Values.st2stream.service.hostname }} @@ -113,17 +89,9 @@ metadata: {{- if .Values.st2web.service.annotations }} {{- toYaml .Values.st2web.service.annotations | nindent 4 }} {{- end }} - labels: - app: st2web - tier: frontend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2web") | nindent 4 }} spec: - selector: - app: st2web - release: {{ .Release.Name }} + selector: {{- include "stackstorm-ha.selectorLabels" (list $ "st2web") | nindent 4 }} type: {{ .Values.st2web.service.type }} {{- if contains "ExternalName" .Values.st2web.service.type }} {{- if .Values.st2web.service.hostname }} @@ -142,17 +110,9 @@ metadata: name: {{ .Release.Name }}-st2chatops annotations: description: StackStorm st2chatops, - conversation-driven automation service exposed as hubot instance with predefined list of chat adapters - labels: - app: st2chatops - tier: backend - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2chatops") | nindent 4 }} spec: - selector: - app: st2chatops - release: {{ .Release.Name }} + selector: {{- include "stackstorm-ha.selectorLabels" (list $ "st2chatops") | nindent 4 }} type: ClusterIP ports: - protocol: TCP diff --git a/templates/tests/st2tests-configmap.yaml b/templates/tests/st2tests-configmap.yaml index a2730b9f..13703a61 100644 --- a/templates/tests/st2tests-configmap.yaml +++ b/templates/tests/st2tests-configmap.yaml @@ -2,13 +2,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-st2tests - labels: - app: st2tests - tier: tests - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2tests") | nindent 4 }} data: st2tests.sh: | {{ .Files.Get "tests/integration/st2tests.sh" | indent 4 }} diff --git a/templates/tests/st2tests-pod.yaml b/templates/tests/st2tests-pod.yaml index 5bb3b50f..632ec7d7 100644 --- a/templates/tests/st2tests-pod.yaml +++ b/templates/tests/st2tests-pod.yaml @@ -2,13 +2,7 @@ apiVersion: v1 kind: Pod metadata: name: "{{ .Release.Name }}-st2tests" - labels: - app: st2tests - tier: tests - vendor: stackstorm - chart: {{ .Chart.Name }}-{{ .Chart.Version }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{- include "stackstorm-ha.labels" (list $ "st2tests") | nindent 4 }} annotations: "helm.sh/hook": test-success "helm.sh/hook-delete-policy": hook-succeeded diff --git a/tests/unit/labels_test.yaml b/tests/unit/labels_test.yaml index 6457acf2..5584f89b 100644 --- a/tests/unit/labels_test.yaml +++ b/tests/unit/labels_test.yaml @@ -7,14 +7,14 @@ templates: - configmaps_overrides.yaml - configmaps_packs.yaml - - configmaps_post-start-scripts.yaml + - configmaps_post-start-script.yaml - configmaps_rbac.yaml - configmaps_st2-conf.yaml - configmaps_st2-urls.yaml - configmaps_st2web.yaml - secrets_datastore_crypto_key.yaml - - secrets_rabbit.yaml + - secrets_rabbitmq.yaml - secrets_ssh.yaml - secrets_st2apikeys.yaml - secrets_st2auth.yaml @@ -193,19 +193,20 @@ tests: serviceAccount: create: true asserts: + - hasDocuments: + count: 1 - equal: path: metadata.labels.app value: stackstorm-ha - equal: path: metadata.labels.release value: some-release-name - # ServiceAccount does not have tier or vendor - #- equal: - # path: metadata.labels.tier - # value: backend - #- equal: - # path: metadata.labels.vendor - # value: stackstorm + - equal: + path: metadata.labels.tier + value: backend + - equal: + path: metadata.labels.vendor + value: stackstorm - equal: path: metadata.labels.chart value: stackstorm-ha-1.0.999 @@ -221,7 +222,9 @@ tests: hostname: some-host-name ingress: enabled: true - assert: + asserts: + - hasDocuments: + count: 1 - equal: path: metadata.labels.app value: ingress @@ -240,3 +243,172 @@ tests: - equal: path: metadata.labels.heritage value: Helm + + - it: ConfigMaps and Secrets have required labels + templates: + - configmaps_packs.yaml + - configmaps_st2-conf.yaml + - configmaps_st2-urls.yaml + + - secrets_datastore_crypto_key.yaml + - secrets_rabbitmq.yaml + - secrets_ssh.yaml + - secrets_st2apikeys.yaml + - secrets_st2auth.yaml + - secrets_st2kv.yaml + set: + rabbitmq: # for secrets_rabbitmq.yaml + enabled: true + asserts: + - hasDocuments: + count: 1 + - equal: + path: metadata.labels.app + value: st2 + - equal: + path: metadata.labels.release + value: some-release-name + - equal: + path: metadata.labels.tier + value: backend + - equal: + path: metadata.labels.vendor + value: stackstorm + - equal: + path: metadata.labels.chart + value: stackstorm-ha-1.0.999 + - equal: + path: metadata.labels.heritage + value: Helm + + - it: RBAC ConfigMaps have required labels + templates: + - configmaps_rbac.yaml + set: + st2: + rbac: + enabled: true # enable rbac config maps + asserts: + - hasDocuments: + count: 3 + - equal: + path: metadata.labels.app + value: st2 + - equal: + path: metadata.labels.release + value: some-release-name + - equal: + path: metadata.labels.tier + value: backend + - equal: + path: metadata.labels.vendor + value: stackstorm + - equal: + path: metadata.labels.chart + value: stackstorm-ha-1.0.999 + - equal: + path: metadata.labels.heritage + value: Helm + + - it: st2chatops Secret has required labels + templates: + - secrets_st2chatops.yaml + set: + st2chatops: + enabled: true + asserts: + - hasDocuments: + count: 1 + - equal: + path: metadata.labels.app + value: st2chatops + - equal: + path: metadata.labels.release + value: some-release-name + - equal: + path: metadata.labels.tier + value: backend + - equal: + path: metadata.labels.vendor + value: stackstorm + - equal: + path: metadata.labels.chart + value: stackstorm-ha-1.0.999 + - equal: + path: metadata.labels.heritage + value: Helm + + - it: st2web ConfigMap has required labels + templates: + #- configmaps_post-start-scripts.yaml # needs postStartScript for each service + - configmaps_st2web.yaml + set: + st2web: + config: | + // see https://github.com/StackStorm/st2web/blob/master/config.js + 'use strict'; + /* global angular */ + angular.module('main').constant('st2Config', {}); + asserts: + - hasDocuments: + count: 1 + - equal: + path: metadata.labels.app + value: st2 # should this be st2web? + - equal: + path: metadata.labels.release + value: some-release-name + - equal: + path: metadata.labels.tier + value: backend # should this be frontend? + - equal: + path: metadata.labels.vendor + value: stackstorm + - equal: + path: metadata.labels.chart + value: stackstorm-ha-1.0.999 + - equal: + path: metadata.labels.heritage + value: Helm + + - it: post-start-script ConfigMaps have required labels + templates: + - configmaps_post-start-script.yaml + set: + st2auth: &postStartScript + postStartScript: | + echo hello world + st2api: *postStartScript + st2stream: *postStartScript + st2web: *postStartScript + st2rulesengine: *postStartScript + st2timersengine: *postStartScript + st2workflowengine: *postStartScript + st2scheduler: *postStartScript + st2notifier: *postStartScript + st2sensorcontainer: *postStartScript + st2actionrunner: *postStartScript + st2garbagecollector: *postStartScript + st2client: *postStartScript + st2chatops: *postStartScript + asserts: + - hasDocuments: + count: 14 + - equal: + path: metadata.labels.app + value: st2 + - equal: + path: metadata.labels.release + value: some-release-name + - equal: + path: metadata.labels.tier + value: backend + - equal: + path: metadata.labels.vendor + value: stackstorm + - equal: + path: metadata.labels.chart + value: stackstorm-ha-1.0.999 + - equal: + path: metadata.labels.heritage + value: Helm