diff --git a/.gitignore b/.gitignore index 8589e0a..b56cc9a 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,6 @@ old-helm old consignas.txt other -*.tgz \ No newline at end of file +*.tgz +*.crt +*.key \ No newline at end of file diff --git a/helm/README.md b/helm/README.md index 89717e5..4acfa98 100644 --- a/helm/README.md +++ b/helm/README.md @@ -112,3 +112,27 @@ ingress: - api.kube.slc.ar ``` + + +---- + + +Se puede pasar certificados autogenerados en ingress.ssl.* PERO se debe notar las restricciones de helm de seguridad: solo se pueden usar archivos relativos al path del chart. Por lo tanto, si se desea usar un archivo de "afuera" se puede hacer un symbolic link. Por ejemplo: cd helm && ln -sf /usr/local/etc/ssl/certs/ca.crt ca.crt && ln -sf /usr/local/etc/ssl/private/ca.key ca.key. Y luego se puede pasar esos archivos al ingress.ssl.*. + +Note que para que se usen estos secrets: +1) si ya existía el secret-crt se debe borrar y hacer un helm upgrade +2) si no existía con un install basta (o mismo un upgrade si ya estaba andando) + +Por lo tanto, supongamos que se quieren actualizar los certificados por unos autogenerados por usted (y para actualizarlos una vez expirados los autogenerados por usted). Los pasos son los siguientes: + +1) Borrar `exam-crt` +2) Actualizar certificados +3) Ponerlos en el values.yaml de haberse modificado el path o si antes se usaba uno autogenerado por helm +4) Hacer upgrade + +Si se quiere actualizar los autogenerados por helm los pasos son: + +1) Borrar `exam-crt` +2) Hacer upgrade + +Note que si se hace un upgrade solo NO se regenerará el exam-crt. Esto es esperado ya que sino cada vez que modificamos algo se estará autogenerando un nuevo certificado!! \ No newline at end of file diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index d947655..8504cfd 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -65,7 +65,7 @@ Create the name of the service account to use Return true if a TLS secret should be created */}} {{- define "exam.createTlsSecret" -}} -{{- if .Values.ingress.ssl -}} +{{- if and .Values.ingress.ssl.enabled (not .Values.ingress.ssl.cert) -}} {{- true -}} {{- end -}} {{- end -}} diff --git a/helm/templates/ingress.yaml b/helm/templates/ingress.yaml index 25f376f..99ae038 100644 --- a/helm/templates/ingress.yaml +++ b/helm/templates/ingress.yaml @@ -24,7 +24,7 @@ spec: {{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }} ingressClassName: {{ .Values.ingress.className }} {{- end }} - {{- if and (include "exam.createTlsSecret" . ) .Values.ingress.tls }} + {{- if .Values.ingress.tls }} tls: {{- range .Values.ingress.tls }} - hosts: diff --git a/helm/templates/secrets.yaml b/helm/templates/secrets.yaml index bcc5f8a..cf3fcc6 100644 --- a/helm/templates/secrets.yaml +++ b/helm/templates/secrets.yaml @@ -11,23 +11,25 @@ data: {{- end }} type: Opaque --- -{{- if (include "exam.createTlsSecret" . ) }} +{{- if .Values.ingress.ssl.enabled }} {{- $secretName := printf "%s-crt" (include "exam.fullname" .) }} -{{- $ca := genCA "ingress-ca" 365 }} -{{- $fullname := (include "exam.host" . ) }} -{{- $cert := genSignedCert $fullname nil nil 365 $ca }} apiVersion: v1 kind: Secret metadata: name: {{ $secretName }} labels: {{- include "exam.labels" . | nindent 4 }} - annotations: - "helm.sh/hook": "pre-install" - "helm.sh/hook-delete-policy": "before-hook-creation" type: kubernetes.io/tls data: +{{- if (include "exam.createTlsSecret" . ) }} + {{- $ca := genCA "ingress-ca" 365 }} + {{- $fullname := (include "exam.host" . ) }} + {{- $cert := genSignedCert $fullname nil nil 365 $ca }} tls.crt: {{ include "exam.lookup" (dict "secret" $secretName "key" "tls.crt" "defaultValue" $cert.Cert "context" $) }} tls.key: {{ include "exam.lookup" (dict "secret" $secretName "key" "tls.key" "defaultValue" $cert.Key "context" $) }} ca.crt: {{ include "exam.lookup" (dict "secret" $secretName "key" "ca.crt" "defaultValue" $ca.Cert "context" $) }} +{{- else }} + tls.crt: {{ .Files.Get $.Values.ingress.ssl.cert | b64enc | quote }} + tls.key: {{ .Files.Get $.Values.ingress.ssl.key | b64enc | quote }} +{{- end }} {{- end }} \ No newline at end of file diff --git a/helm/values.yaml b/helm/values.yaml index 3182fc1..4ef9e66 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -14,7 +14,10 @@ shared: tier: &clientTier "frontend" ingress: - ssl: true + ssl: + enabled: true + # cert: ca.crt + # key: ca.key annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 nginx.ingress.kubernetes.io/ssl-redirect: "true" diff --git a/run.sh b/run.sh index 60827cb..bdf500f 100755 --- a/run.sh +++ b/run.sh @@ -77,7 +77,7 @@ fi $START_MINIKUBE && minikube addons enable ingress -helm dependency build helm +helm dependency list helm | grep -q "missing" && helm dependency build helm if [ "$fluentd" == true ] || [ "$fluentd" == "y" ] || [ "$fluentd" == "Y" ]; then VALUES=("-f" "helm/values.yaml" "-f" "helm/fluentd.yaml")