• Create a helm chart template

    2 min read

    To get started creating a helm chart on our own there are some common structure that we can reuse from chart to chart: We can let helm create the basic structure for us

    22/04/2021

    Read more...
  • Template complexity: can't evaluate field Values in type interface {}

    2 min read

    Working with templates can be challenging since, at the end of the day, we are mixing two languages: The template language and the language on which the template itself is written. Doing so we are getting the complexity of one language in addition of the complexity of the other language. That's maybe the main reason why, sometimes, it can be challenging to spot a issues when templates are involved. For example, helm uses templates for generating the appropriate Kubernetes objects, this is one of the errors you might encounter:

    $ helm template  . --debug 
    install.go:172: [debug] Original chart version: ""
    install.go:189: [debug] CHART PATH: /home/pet2cattle/git/spinnaker/helm-spinnaker
    
    
    Error: template: spinnaker/templates/hooks/install-using-hal.yaml:15:28: executing "spinnaker/templates/hooks/install-using-hal.yaml" at <include (print $.Template.BasePath "/configmap/halyard-config.yaml") .>: error calling include: template: spinnaker/templates/configmap/halyard-config.yaml:120:54: executing "spinnaker/templates/configmap/halyard-config.yaml" at <.Values.serviceAccount.spinnaker.enable>: can't evaluate field Values in type interface {}
    helm.go:81: [debug] template: spinnaker/templates/hooks/install-using-hal.yaml:15:28: executing "spinnaker/templates/hooks/install-using-hal.yaml" at <include (print $.Template.BasePath "/configmap/halyard-config.yaml") .>: error calling include: template: spinnaker/templates/configmap/halyard-config.yaml:120:54: executing "spinnaker/templates/configmap/halyard-config.yaml" at <.Values.serviceAccount.spinnaker.enable>: can't evaluate field Values in type interface {}
    

    The error itself looks challenging at first glance, the lines that causes this message are the following:

    {{- range $index, $context := .Values.kubeConfig.contexts }}
    (...)
        $HAL_COMMAND config provider kubernetes account $PROVIDER_COMMAND {{ $context }} --docker-registries dockerhub \
                    --context {{ $context }} {{ if .Values.serviceAccount.spinnaker.enable }}--service-account true{{ end }} \
    (...)
    {{- end }}
    

    Can you spot the mistake?

    02/04/2021

    Read more...
  • Create a yaml template using kubectl

    2 min read

    When you create a new deployment you usually focus on:

    • Number of replicas
    • How you are going to select the pods that are going to be managed by this deployment
    • Pod template

    Beside this, all the other required lines on the yaml are boilerplate so it's quite easy to forget about them.

    14/01/2021

    Read more...

From pet to cattle
Treat your kubernetes clusters like cattle, not pets