Browse --- Chat --- Wekan

Verified Commit 5f6bb4b1 authored by kc's avatar kc
Browse files

update to use tpl chart

parent 4d31311c
Showing with 119 additions and 582 deletions
+119 -582
**/*.swp
**/*.vim
**/*.tgz
File moved
dependencies:
- name: tpl
repository: https://gitlab.codeopensrc.com/api/v4/projects/36/packages/helm/stable
version: 0.8.0
- name: tpl
repository: https://gitlab.codeopensrc.com/api/v4/projects/36/packages/helm/stable
version: 0.8.0
digest: sha256:153e3d8652ffe9a32618ecb60e794cbc1fcf2da9601cb160f0f9067a37b8e147
generated: "2023-03-11T15:53:04.682716176-08:00"
apiVersion: v2
name: wekan
description: Helm chart for wekan
type: application
###! Manually update when ONLY updating chart/subcharts/chart dependencies
version: 0.2.0
appVersion: "v5.35"
dependencies:
- name: tpl
version: 0.8.0
alias: app
condition: app.enabled
repository: https://gitlab.codeopensrc.com/api/v4/projects/36/packages/helm/stable
- name: tpl
version: 0.8.0
alias: db
condition: db.enabled
repository: https://gitlab.codeopensrc.com/api/v4/projects/36/packages/helm/stable
app:
enabled: true
replicaCount: 1
image:
repository: wekanteam/wekan
tag: "v5.35"
svcDiscovery:
consul:
enabled: false
#env:
# CONSUL_HOST: "192.168.49.1"
# CONSUL_PORT: "8500"
ingress:
enabled: false
ingressClassName: "nginx"
#annotations:
# cert-manager.io/cluster-issuer: letsencrypt-prod
hosts:
- host: wekan.k8s.example.com
#tls:
# - hosts:
# - wekan.k8s.example.com
# secretName: wekan-tls
containerPorts:
- name: http
port: 8080
containerProbe:
enabled: false
secretStringData:
OAUTH2_CLIENT_ID: ""
OAUTH2_SECRET: ""
configMapData:
MONGO_URL: "mongodb://wekan-db:27017/wekan"
ROOT_URL: "http://wekan.example.com"
MAIL_URL: "smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}"
MAIL_FROM: "Wekan Notifications <noreply.wekan@mydomain.com>"
WITH_API: true
RICHER_CARD_COMMENT_EDITOR: false
SCROLLINERTIA: 0
SCROLLAMOUNT: "auto"
CARD_OPENED_WEBHOOK_ENABLED: false
BIGEVENTS_PATTERN: "NONE"
BROWSER_POLICY_ENABLED: true
OAUTH2_ENABLED: false
OAUTH2_AUTH_ENDPOINT: "oauth/authorize"
OAUTH2_TOKEN_ENDPOINT: "oauth/token"
OAUTH2_USERINFO_ENDPOINT: "oauth/userinfo"
OAUTH2_ID_MAP: "sub"
OAUTH2_USERNAME_MAP: "nickname"
OAUTH2_FULLNAME_MAP: "name"
OAUTH2_EMAIL_MAP: "email"
OAUTH2_SERVER_URL: "https://gitlab.example.com/"
OAUTH2_REQUEST_PERMISSIONS: "openid profile email"
db:
enabled: false
replicaCount: 1
image:
repository: mongo
pullPolicy: IfNotPresent
tag: 4.4.6
#command: ["mongod", "-f", "/etc/mongo/mongod.conf"]
service:
ports:
- servicePort: 27017
targetContainerPortName: mongo
ingress:
enabled: false
containerPorts:
- name: mongo
port: 27017
containerProbe:
enabled: true
type: tcp
port: mongo
probes:
livenessProbe:
failureThreshold: 5
periodSeconds: 15
readinessProbe:
failureThreshold: 2
periodSeconds: 15
useStatefulSet: true
persistence:
statefulset:
persistentVolumeClaimRetentionPolicy:
whenDeleted: Delete
volumeClaimMounts:
- mountPath: /data/db
subPath: db
secretStringData:
MONGO_INITDB_DATABASE: wekan
apiVersion: v2
name: wekan
description: A Helm chart for Kubernetes
type: application
version: 0.1.0
appVersion: "v5.35"
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "wekan.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "wekan.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "wekan.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if and (contains "ClusterIP" .Values.service.type) (not .Values.ciLabels) }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "wekan.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT
{{- end }}
{{/*
Expand the name of the chart.
*/}}
{{- define "wekan.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 "wekan.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 "wekan.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "wekan.labels" -}}
helm.sh/chart: {{ include "wekan.chart" . }}
{{ include "wekan.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "wekan.selectorLabels" -}}
app.kubernetes.io/name: {{ include "wekan.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "wekan.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "wekan.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{- range .Values.createAndAttachExtraConfigMaps }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .name }}
labels:
{{- include "wekan.labels" $ | nindent 4 }}
{{- with $.Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
data:
{{- range $k, $v := .data }}
{{ $k }}: {{ $v | quote }}
{{- end }}
---
{{- end }}
{{- range .Values.createAndAttachExtraSecrets }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .name }}
labels:
{{- include "wekan.labels" $ | nindent 4 }}
{{- with $.Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
type: Opaque
stringData:
{{- range $k, $v := .stringData }}
{{ $k }}: {{ $v | quote }}
{{- end }}
---
{{- end }}
{{- if .Values.configMapData }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "wekan.fullname" . }}
labels:
{{- include "wekan.labels" . | nindent 4 }}
{{- with .Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
data:
{{- range $k, $v := .Values.configMapData }}
{{ $k }}: {{ $v | quote }}
{{- end }}
{{- end }}
{{- if eq (default false .Values.useStatefulSet) false }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "wekan.fullname" . }}
labels:
{{- include "wekan.labels" . | nindent 4 }}
{{- with .Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
annotations:
{{- if .Values.configMapData }}
configHash: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
{{- end }}
{{- range .Values.createAndAttachExtraConfigMaps }}
{{ .name }}Hash: {{ include (print $.Template.BasePath "/auxConfigmap.yaml") $ | sha256sum }}
{{- end }}
{{- range .Values.attachExtraConfigMaps }}
{{- if (lookup "v1" "ConfigMap" $.Release.Namespace .name) }}
{{ .name }}Hash: {{ (lookup "v1" "ConfigMap" $.Release.Namespace .name).data | toString | sha256sum }}
{{- end }}
{{- end }}
{{- if .Values.secretStringData }}
secretHash: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }}
{{- if .Values.dotEnvFile }}
dotEnvFileHash: {{ include (print $.Template.BasePath "/dotEnvSecret.yaml") . | sha256sum }}
{{- end }}
{{- range .Values.createAndAttachExtraSecrets }}
{{ .name }}Hash: {{ include (print $.Template.BasePath "/auxSecret.yaml") $ | sha256sum }}
{{- end }}
{{- range .Values.attachExtraSecrets }}
{{- if (lookup "v1" "Secret" $.Release.Namespace .name) }}
{{ .name }}Hash: {{ (lookup "v1" "Secret" $.Release.Namespace .name).stringData | toString | sha256sum }}
{{- end }}
{{- end }}
{{- with .Values.ciAnnotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
selector:
matchLabels:
{{- include "wekan.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "wekan.selectorLabels" . | nindent 8 }}
{{- with .Values.ciLabels }}
{{- toYaml . | nindent 8 }}
{{- end }}
annotations:
{{- if .Values.configMapData }}
configHash: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
{{- end }}
{{- range .Values.createAndAttachExtraConfigMaps }}
{{ .name }}Hash: {{ include (print $.Template.BasePath "/auxConfigmap.yaml") $ | sha256sum }}
{{- end }}
{{- range .Values.attachExtraConfigMaps }}
{{- if (lookup "v1" "ConfigMap" $.Release.Namespace .name) }}
{{ .name }}Hash: {{ (lookup "v1" "ConfigMap" $.Release.Namespace .name).data | toString | sha256sum }}
{{- end }}
{{- end }}
{{- if .Values.secretStringData }}
secretHash: {{ include (print $.Template.BasePath "/secret.yaml") . | sha256sum }}
{{- end }}
{{- if .Values.dotEnvFile }}
dotEnvFileHash: {{ include (print $.Template.BasePath "/dotEnvSecret.yaml") . | sha256sum }}
{{- end }}
{{- range .Values.createAndAttachExtraSecrets }}
{{ .name }}Hash: {{ include (print $.Template.BasePath "/auxSecret.yaml") $ | sha256sum }}
{{- end }}
{{- range .Values.attachExtraSecrets }}
{{- if (lookup "v1" "Secret" $.Release.Namespace .name) }}
{{ .name }}Hash: {{ (lookup "v1" "Secret" $.Release.Namespace .name).stringData | toString | sha256sum }}
{{- end }}
{{- end }}
{{- with .Values.ciAnnotations }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.podAnnotations }}
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "wekan.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- podAffinityTerm:
labelSelector:
matchExpressions:
{{- $selectorLabelList := regexSplit "\n" (include "wekan.selectorLabels" .) -1 }}
{{- range $ind, $label := $selectorLabelList }}
- key: {{ regexSplit ":" $label -1 | first | trim }}
operator: In
values:
- {{ regexSplit ":" $label -1 | last | trim }}
{{- end }}
topologyKey: "kubernetes.io/hostname"
weight: 100
containers:
- name: {{ include "wekan.fullname" . }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.command }}
command:
{{- toYaml .Values.command | nindent 12 }}
{{- end }}
ports:
{{- range .Values.containerPorts }}
- name: {{ .name }}
containerPort: {{ .port }}
protocol: TCP
{{- end }}
{{- if .Values.containerProbe }}
livenessProbe:
httpGet:
path: {{ default "/" .Values.containerProbe.path }}
port: http
{{- with .Values.containerProbe.httpHeaders }}
httpHeaders:
{{- toYaml . | nindent 16 }}
{{- end }}
failureThreshold: 50
{{- end }}
{{- if .Values.containerProbe }}
readinessProbe:
httpGet:
path: {{ default "/" .Values.containerProbe.path }}
port: http
{{- with .Values.containerProbe.httpHeaders }}
httpHeaders:
{{- toYaml . | nindent 16 }}
{{- end }}
initialDelaySeconds: 5
{{- end }}
envFrom:
{{- if .Values.secretStringData }}
- secretRef:
name: {{ include "wekan.fullname" . }}
{{- end }}
{{- range concat .Values.createAndAttachExtraSecrets .Values.attachExtraSecrets }}
- secretRef:
name: {{ .name }}
{{- end }}
{{- if .Values.configMapData }}
- configMapRef:
name: {{ include "wekan.fullname" . }}
{{- end }}
{{- range concat .Values.createAndAttachExtraConfigMaps .Values.attachExtraConfigMaps }}
- configMapRef:
name: {{ .name }}
{{- end }}
{{- if .Values.dotEnvFile }}
- secretRef:
name: {{ include "wekan.fullname" . }}-dotenv
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- if .Values.lifecyclePostStartCommand }}
lifecycle:
postStart:
exec:
command:
{{- toYaml .Values.lifecyclePostStartCommand | nindent 18 }}
{{- end }}
volumeMounts:
{{- range .Values.volumeMounts }}
{{- if ne .attach false }}
- name: {{ .name }}
mountPath: {{ .mountPath }}
{{- if .subPath }}
subPath: {{ .subPath }}
{{- end }}
{{- end }}
{{- end }}
{{- range .Values.volumeClaimMounts }}
- mountPath: {{ .mountPath }}
name: {{ default (include "wekan.fullname" $) .name }}
{{- if .subPath }}
subPath: {{ .subPath }}
{{- end }}
{{- end }}
{{- range .Values.additionalContainers }}
- name: {{ .name}}
image: {{ .image }}
command:
{{- toYaml .command | nindent 12 }}
volumeMounts:
{{- range .volumeMounts }}
- name: {{ .name }}
mountPath: {{ .mountPath }}
{{- if .subPath }}
subPath: {{ .subPath }}
{{- end }}
{{- end }}
{{- range $.Values.volumeClaimMounts }}
- mountPath: {{ .mountPath }}
name: {{ default (include "wekan.fullname" $) .name }}
{{- if .subPath }}
subPath: {{ .subPath }}
{{- end }}
{{- end }}
{{- with .env }}
env:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- end }}
volumes:
{{- range .Values.volumeMounts }}
{{- if .mountType }}
- name: {{ .name }}
{{- toYaml .mountType | nindent 10 }}
{{- end }}
{{- end }}
{{- if .Values.persistence.deployment.enabled }}
- persistentVolumeClaim:
claimName: {{ include "wekan.fullname" . }}
name: {{ include "wekan.fullname" . }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
{{- if .Values.dotEnvFile }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "wekan.fullname" . }}-dotenv
labels:
{{- include "wekan.labels" . | nindent 4 }}
{{- with .Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
type: Opaque
stringData:
{{- range $line := splitList "\n" .Values.dotEnvFile }}
{{- if and . (not (regexMatch "^#" .)) (not (contains "${" .)) }}
{{- $kv := regexSplit "=" $line 2 }}
{{ first $kv }}: {{ regexReplaceAll "['\" ]+#.*|^['\"]|['\" ]+$" (last $kv) "" | quote }}
{{- end }}
{{- end }}
{{- end }}
{{- range .Values.createExtraConfigMaps }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .name }}
labels:
{{- include "wekan.labels" $ | nindent 4 }}
{{- with $.Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
data:
{{- range $k, $v := .data }}
{{ $k }}: {{ $v | quote }}
{{- end }}
---
{{- end }}
{{- range .Values.createExtraSecrets }}
apiVersion: v1
kind: Secret
metadata:
name: {{ .name }}
labels:
{{- include "wekan.labels" $ | nindent 4 }}
{{- with $.Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
type: Opaque
stringData:
{{- range $k, $v := .stringData }}
{{ $k }}: {{ $v | quote }}
{{- end }}
---
{{- end }}
{{- range .Values.createFileConfigMaps }}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .name }}
labels:
{{- include "wekan.labels" $ | nindent 4 }}
{{- with $.Values.ciLabels }}
{{- toYaml . | nindent 4 }}
{{- end }}
data:
{{ .name }}: |
{{- toYaml .content | nindent 4}}
---
{{- end }}
{{- if .Values.autoscaling.enabled }}
###! This is here for future reference
#apiVersion: autoscaling/v2beta1
#kind: HorizontalPodAutoscaler
#metadata:
# name: {{ include "wekan.fullname" . }}
# labels:
# {{- include "wekan.labels" . | nindent 4 }}
#spec:
# scaleTargetRef:
# apiVersion: apps/v1
# kind: Deployment
# name: {{ include "wekan.fullname" . }}
# minReplicas: {{ .Values.autoscaling.minReplicas }}
# maxReplicas: {{ .Values.autoscaling.maxReplicas }}
# metrics:
# {{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
# - type: Resource
# resource:
# name: cpu
# targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
# {{- end }}
# {{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
# - type: Resource
# resource:
# name: memory
# targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
# {{- end }}
#---
{{- end }}
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "wekan.fullname" . -}}
{{- $svcPort := .Values.service.port -}}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "wekan.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
{{- range .paths }}
- path: {{ .path }}
pathType: {{ .pathType }}
backend:
service:
name: {{ $fullName }}
port:
number: {{ $svcPort }}
{{- else }}
{{- end }}
{{- end }}
{{- end }}
{{- if .Values.persistence.deployment.enabled }}
{{- $vol := .Values.persistence.deployment.volumeTemplate }}
apiVersion: v1
kind: PersistentVolume
metadata:
name: {{ include "wekan.fullname" . }}
labels:
{{- include "wekan.labels" . | nindent 4 }}
annotations:
{{- if $vol.helmResourcePolicy }}
helm.sh/resource-policy: {{ default "keep" $vol.helmResourcePolicy }}
{{- end }}
spec:
accessModes: {{ $vol.accessModes }}
volumeMode: {{ $vol.volumeMode }}
storageClassName: {{ $vol.storageClassName }}
capacity:
storage: {{ $vol.resources.requests.storage }}
persistentVolumeReclaimPolicy: {{ $vol.persistentVolumeReclaimPolicy }}
{{- toYaml $vol.persistentVolumeType | nindent 2 }}
{{- if $vol.nodeAffinity }}
## nodeAffinity req for local storage class
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
{{- range $vol.nodeAffinity }}
- key: {{ .key }}
operator: In
values:
{{ .values }}
{{- end }}
{{- end }}
---
{{- end }}
{{- if .Values.persistence.deployment.enabled }}
{{- $claim := .Values.persistence.deployment.volumeTemplate }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ include "wekan.fullname" . }}
labels:
{{- include "wekan.labels" . | nindent 4 }}
annotations:
{{- if $claim.helmResourcePolicy }}
helm.sh/resource-policy: {{ default "keep" $claim.helmResourcePolicy }}
{{- end }}
spec:
accessModes: {{ $claim.accessModes }}
volumeMode: {{ $claim.volumeMode }}
storageClassName: {{ $claim.storageClassName }}
resources:
{{- toYaml $claim.resources | nindent 4 }}
selector:
matchLabels:
{{- include "wekan.selectorLabels" . | nindent 6 }}
---
{{- end }}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment