First some background. I’ve been looking at Kubernetes to deploy some Julia code to the cloud, and I find the tooling there non-optimal. Or at least it’s my opinion on them. Kubernetes is basically configured with YAML files, and at least one of the tools to combine several those to one complete set of files is called Helm (charts). Helm basically runs the files through Go’s templating mechanism, and any interesting variables are in a separate YAML file. I’ll post a couple of code snippets at the end.
So I’d like to read in a YAML file (YAML.jl) and customize it to suite ‘my environment’. What kind of packages might be useful? I see two general ways of doing this. You can template the files, which means that the original files will become relatively complex with a separate values file, basically what’s already there. Another could be some way to be able to select suitable parts of the YAML files and define transformations to those parts, so the original author of the ‘chart’ would not need to think ahead for all the possible ways it could be re-used.
Comments? Ideas?
A small part of a template file in Helm:
{{- if .Values.ingress.enabled -}}
{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" }}
apiVersion: networking.k8s.io/v1
{{- else }}
apiVersion: networking.k8s.io/v1beta1
{{- end }}
kind: Ingress
metadata:
A small part of a Values file:
hub:
config:
JupyterHub:
admin_access: true
authenticator_class: dummy
service:
type: ClusterIP
annotations: {}
ports:
nodePort:
loadBalancerIP:
baseUrl: /
cookieSecret:
initContainers: []
fsGid: 1000