Я не вижу способа достичь этого без установки COUCHDB_USER
и COUCHDB_PASSWORD
в контейнере env.
Одно из возможных решений: вы можете указать свой секрет в container.EnvFrom
, и весь ваш секрет keys
будет преобразован в переменные окружения. затем вы можете использовать эти переменные среды для создания вашей составной среды (т. е. COUCHDB_URL).
FYI, Для создания env из другого env в kubernetes используется ()
. Фигурные скобки {}
не будут работать в этот самый момент.
Один образец,
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
COUCHDB_USER: YWRtaW4=
COUCHDB_PASSWORD: MWYyZDFlMmU2N2Rm
---
apiVersion: v1
kind: Pod
metadata:
name: secret-env-pod
spec:
containers:
- name: mycontainer
image: redis
envFrom:
- secretRef:
name: mysecret
env:
- name: COUCHDB_URL
value: http://$(COUCHDB_USER):$(COUCHDB_PASSWORD)rest-of-the-url
Вы можете подтвердить вывод,
$ kubectl exec -it secret-env-pod bash
root@secret-env-pod:/data# env | grep COUCHDB
COUCHDB_URL=http://admin:1f2d1e2e67dfrest-of-the-url
COUCHDB_PASSWORD=1f2d1e2e67df
COUCHDB_USER=admin
В вашем случае yaml для контейнера:
containers:
- name: {{ template "myapp.name" . }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: Always
envFrom:
- secretRef:
name: {{ .Release.Name }}-secrets
env:
- name: COUCHDB_URL
value: http://$(COUCHDB_USER):$(COUCHDB_PASSWORD)@{{ .Release.Name }}-couchdb:5984