не могу понять что делаю не так helm 3
Всем привет. Изучаю хелм и куб. пытаюсь разобраться в го шаблонизаторе. Немного не понимаю как он работает вот мой простенький деплоймент
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: test-deployment
labels:
app: test
spec:
replicas: 1
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
ports:
- name: http
containerPort: {{ .Values.port }}
protocol: TCP
- env:
- name: PORT
value: {{ .Values.port | quote }}
- name: LOGS
value: {{ .Value.logs | quote }}
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
файл с переменными
values.yaml
port: 8080
logs: "/logs/access.log"
replicaCount: 1
image:
repository: #
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "develop"
в случае с containerPort: {{ .Values.port }} всё работает прекрасно но когда я начинаю подставлять перменные в контейнер это не работает
проверяю helm lint или helm install получаю такую ошибку:
gitlab-runner:~$ helm install test ./test --dry-run --debug
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: /home/gitlab-runner/test
Error: template: test/templates/deployment.yaml:28:28: executing "test/templates/deployment.yaml" at <.Value.logs>: nil pointer evaluating interface {}.logs
helm.go:88: [debug] template: test/templates/deployment.yaml:28:28: executing "test/templates/deployment.yaml" at <.Value.logs>: nil pointer evaluating interface {}.logs
подскажите что не так делаю. И еще такой вопрос, как вы задаете переменные в контейнеры ? собираю в гитлабе дальше хочу выкатывать хельмом в куб.
Ответы (1 шт):
В helm нет предопределенного объекта .Value, есть .Values. Что бы избежать подобных ошибок в будущем, лучше всего использовать IDE с поддержкой обработки helm-чартов и с автодополнением по ним.
Еще посмотрите документацию на предмет предопределенных объектов helm.