I am getting a weird error. I am running helm command inside the application helm chart and getting error as below:
helm upgrade --install socket-manager -nsocket-manager .
Release "socket-manager" does not exist. Installing it now.
Error: template: socket-manager/templates/service.yaml:6:37: executing "socket-manager/templates/service.yaml" at <.Values.config.green_slot_name>: nil pointer evaluating interface {}.green_slot_name
Values.yaml is below:
cat Values.yaml
config:
green_slot_name: "green"
blue_slot_name: "blue"
service.yaml is below:
apiVersion: v1
kind: Service
metadata:
labels:
app: "{{ .Chart.Name }}"
name: "{{ .Chart.Name }}-{{ .Values.config.green_slot_name }}-{{ .Values.config.environment }}-service"
spec:
ports:
- port: {{ .Values.config.port }}
protocol: TCP
targetPort: {{ .Values.config.target_port }}
selector:
app: "{{ .Chart.Name }}"
slot: "{{ .Values.config.green_slot_name }}"
type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
labels:
app: "{{ .Chart.Name }}"
name: "{{ .Chart.Name }}-{{ .Values.config.blue_slot_name }}-{{ .Values.config.environment }}-service"
spec:
ports:
- port: {{ .Values.config.port }}
protocol: TCP
targetPort: {{ .Values.config.target_port }}
selector:
app: "{{ .Chart.Name }}"
slot: "{{ .Values.config.blue_slot_name }}"
type: ClusterIP
I wonder what is wrong here?
At first glance, I can spot a typo in 4 occurrences in your manifests:
It should be
.Values.health_checks.liveliness.*
and not
.Values.health_checks.liveness.*
When I fixed that typo in my local it works.
You can also try to remove the double quotes from selector
inside the service
For instance:
selector:
app: {{ .Chart.Name }}
slot: {{ .Values.config.green_slot_name }}