Robust names

This commit is contained in:
Laszlo Fogas
2021-02-24 13:58:08 +01:00
parent aac51882e4
commit 0c7fe3fe66
15 changed files with 60 additions and 21 deletions
+3
View File
@@ -42,6 +42,9 @@ package:
helm repo index docs --url https://chart.onechart.dev
debug:
helm template charts/onechart/ -f values.yaml --debug
debug-ui:
#gimlet chart configure -s charts/onechart/values.schema.json -u charts/onechart/helm-ui.json onechart/onechart
/home/laszlo/projects/gimlet-cli/build/gimlet chart configure -s charts/onechart/values.schema.json -u charts/onechart/helm-ui.json onechart/onechart
+9
View File
@@ -61,3 +61,12 @@ Create the name of the service account to use
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Create robustName that can be used as Kubernetes resource name, and as subdomain as well
\w Latin letters, digits, underscore '_' .
\W all but \w .
*/}}
{{- define "robustName" -}}
{{ regexReplaceAll "\\W+" . "-" | replace "_" "-" | lower }}
{{- end }}
+1 -1
View File
@@ -2,7 +2,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "helm-chart.labels" . | nindent 4 }}
+7 -7
View File
@@ -1,7 +1,7 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "helm-chart.labels" . | nindent 4 }}
@@ -27,7 +27,7 @@ spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Release.Name }}
- name: {{ template "robustName" .Release.Name }}
securityContext: &securityContext
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -41,15 +41,15 @@ spec:
envFrom: &envFrom
{{- if .Values.vars }}
- configMapRef:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
{{- end }}
{{- if .Values.secret.enabled }}
- secretRef:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
{{- end }}
{{- if .Values.sealedSecrets }}
- secretRef:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
{{- end }}
ports:
- name: http
@@ -78,7 +78,7 @@ spec:
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- if .Values.debugSidecarEnabled }}
- name: {{ .Release.Name }}-debug
- name: {{ template "robustName" .Release.Name }}-debug
securityContext: *securityContext
image: {{ .Values.debugSidecar.image }}
command:
@@ -113,7 +113,7 @@ spec:
- key: "app.kubernetes.io/instance"
operator: In
values:
- {{ .Release.Name }}
- {{ template "robustName" .Release.Name }}
topologyKey: "kubernetes.io/hostname"
{{- end }}
{{- if .Values.affinity }}
+2 -2
View File
@@ -8,7 +8,7 @@ apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $.Release.Name }}
name: {{ template "robustName" $.Release.Name }}
namespace: {{ $.Release.Namespace }}
labels:
{{- $labels | nindent 4 }}
@@ -28,6 +28,6 @@ spec:
http:
paths:
- backend:
serviceName: {{ $.Release.Name }}
serviceName: {{ template "robustName" $.Release.Name }}
servicePort: {{ $.Values.containerPort }}
{{- end }}
+1 -1
View File
@@ -2,7 +2,7 @@
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
spec:
minAvailable: 1
@@ -2,7 +2,7 @@
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "helm-chart.labels" . | nindent 4 }}
+2 -1
View File
@@ -1,9 +1,10 @@
{{- range .Values.volumes }}
{{- $robustName := include "robustName" $.Release.Name -}}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ printf "%s-%s" $.Release.Name .name }}
name: {{ printf "%s-%s" $robustName .name }}
namespace: {{ $.Release.Namespace }}
spec:
accessModes:
@@ -1,9 +1,10 @@
{{- range .Values.sealedFileSecrets }}
{{- $robustName := include "robustName" $.Release.Name -}}
---
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: {{ printf "%s-%s" $.Release.Name .name }}
name: {{ printf "%s-%s" $robustName .name }}
namespace: {{ $.Release.Namespace }}
annotations:
sealedsecrets.bitnami.com/cluster-wide: "true"
+2 -2
View File
@@ -2,7 +2,7 @@
apiVersion: bitnami.com/v1alpha1
kind: SealedSecret
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "helm-chart.labels" . | nindent 4 }}
@@ -15,6 +15,6 @@ spec:
{{- end }}
template:
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
{{- end }}
+1 -1
View File
@@ -1,7 +1,7 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
name: {{ template "robustName" .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
{{- include "helm-chart.labels" . | nindent 4 }}
@@ -17,7 +17,7 @@ tests:
- key: "app.kubernetes.io/instance"
operator: In
values:
- RELEASE-NAME
- release-name
topologyKey: "kubernetes.io/hostname"
- it: Should not spread pods across nodes
set:
@@ -13,7 +13,7 @@ tests:
path: spec.template.spec.containers[0].envFrom
content:
configMapRef:
name: RELEASE-NAME
name: release-name
- it: Should not reference configmap if vars are not set
asserts:
- isNull:
@@ -0,0 +1,25 @@
suite: test deployment
templates:
- deployment.yaml
- configmap.yaml
tests:
- it: Should replace special char
set:
image.repository: nginx
image.tag: x.y.z
release:
name: my+release
asserts:
- equal:
path: spec.template.spec.containers[0].name
value: my-release
- it: Should replace special char 2
set:
image.repository: nginx
image.tag: x.y.z
release:
name: my/release
asserts:
- equal:
path: spec.template.spec.containers[0].name
value: my-release
@@ -11,7 +11,7 @@ tests:
path: spec.template.spec.containers[0].envFrom
content:
secretRef:
name: RELEASE-NAME
name: release-name
- it: Should not reference secret if secret is disabled
set:
secret.enabled: false
@@ -27,4 +27,4 @@ tests:
path: spec.template.spec.containers[0].envFrom
content:
secretRef:
name: RELEASE-NAME
name: release-name