Передача переменных окружения в докер, работающий в kubernetes
У меня есть докер-файл, который выглядит следующим образом:
FROM golang:1.8-alpine
COPY ./ /src
ENV GOOGLE_CLOUD_PROJECT = "snappy-premise-118915"
RUN apk add --no-cache git && \
apk --no-cache --update add ca-certificates && \
cd /src && \
go get -t -v cloud.google.com/go/pubsub && \
CGO_ENABLED=0 GOOS=linux go build main.go
# final stage
FROM alpine
ENV LATITUDE "-121.464"
ENV LONGITUDE "36.9397"
ENV SENSORID "sensor1234"
ENV ZIPCODE "95023"
ENV INTERVAL "3"
ENV GOOGLE_CLOUD_PROJECT "snappy-premise-118915"
ENV GOOGLE_APPLICATION_CREDENTIALS "/app/key.json"
ENV GRPC_GO_LOG_SEVERITY_LEVEL "INFO"
RUN apk --no-cache --update add ca-certificates
WORKDIR /app
COPY --from=0 /src/main /app/
COPY --from=0 /src/key.json /app/
ENTRYPOINT /app/main
и конфигурация pod выглядит так:
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: sensorpub
spec:
template:
metadata:
labels:
app: sensorpub
spec:
volumes:
- name: google-cloud-key
secret:
secretName: pubsub-key
containers:
- name: sensorgen
image: gcr.io/snappy-premise-118915/sensorgen:v1
volumeMounts:
- name: google-cloud-key
mountPath: /var/secrets/google
env:
- name: GOOGLE_APPLICATION_CREDENTIALS
value: /var/secrets/google/key.json
Я хочу иметь возможность передать в этих средах VARS:
ENV LATITUDE "-121.464"
ENV LONGITUDE "36.9397"
ENV SENSORID "sensor1234"
ENV ZIPCODE "95023"
ENV INTERVAL "3"
ENV GOOGLE_CLOUD_PROJECT "snappy-premise-118915"
ENV GOOGLE_APPLICATION_CREDENTIALS "/app/key.json"
ENV GRPC_GO_LOG_SEVERITY_LEVEL "INFO"
Я хочу иметь возможность устанавливать переменные окружения в конфигурации pod, чтобы файл Docker мог использовать их... как мне сделать это вместо того, чтобы просто кодировать их непосредственно в образ Docker?
1 ответ
Я хочу иметь возможность устанавливать переменные окружения в конфигурации pod, чтобы файл Docker мог использовать их... как мне сделать это вместо того, чтобы просто кодировать их непосредственно в образ Docker?
Там нет необходимости указывать какие-либо ENV
директива в Dockerfile; эти директивы предоставляют значения по умолчанию только в том случае, когда (как в вашем примере PodSpec
) они не предоставляются во время выполнения.
"Как" сделать именно то, что вы сделали в своем примере PodSpec
: заполнить env:
массив с переменными среды, которые вы хотите отобразить в Pod