секретами.
Описываю переменную окружения для учебного приложения "калькулятор" в деплойменте.
1) Если использую просто переменную окружения то все работает:
env:
- name: POSTGRES_URI
value: "postgres://root:pass@$(POSTGRES_SERVICE_HOST)/postgres?sslmode=disable"
2) Если использую секрет - не работает:
env:
- name: POSTGRES_URI
valueFrom:
secretKeyRef:
name: calc
key: postgres_uri
3) Если в секрет записываю вместо переменной
$(POSTGRES_SERVICE_HOST) конкретный IP, то с секретом тоже работает!
Секрет выглядит так:
apiVersion: v1
kind: Secret
metadata:
name: calc
type: Opaque
data:
postgres_uri: cG9zdGdyZXM6Ly9yb290OnBhc3NAJChQT1NUR1JFU19TRVJWSUNFX0hPU1QpL3Bvc3RncmVzP3NzbG1vZGU9ZGlzYWJsZQ==
~$ kubectl get service -n dev
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
postgres ClusterIP 10.100.239.246 <none> 5432/TCP 30m
внутри секрета $() работать не будет. $() работает только внутри определения пода. Добавляешь переменную среды через env или envFrom и ссылаешься на нее в манифесте пода (или шаблона пода в deploy,sts,ds,rs,rc). В других местах, например в configmap ты ссылаться на них не можешь. Можно добавлять переменные среды из configmap или secret, и ссылаться на них в манифесте пода, но не наоборот.
Обсуждают сегодня