#kubernetes #environment-variables
#kubernetes #переменные среды
Вопрос:
В настоящее время я изучаю Kubernetes, и я столкнулся с чем-то вроде стены. Я пытаюсь передать переменные среды из моего определения файла YAML в мой контейнер. Но переменные, похоже, не присутствуют после этого. kubectl exec <pod name> -- printenv
дает мне список переменных среды. Но те, которые я определил в моем файле YAML, отсутствуют.
Я определил переменные среды в своем развертывании, как показано ниже:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-boot
labels:
app: hello-world-boot
spec:
selector:
matchLabels:
app: hello-world-boot
template:
metadata:
labels:
app: hello-world-boot
containers:
- name: hello-world-boot
image: lightmaze/hello-world-spring:latest
env:
- name: HELLO
value: "Hello there"
- name: WORLD
value: "to the entire world"
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
selector:
app: hello-world-boot
Надеюсь, кто-нибудь сможет увидеть, где я потерпел неудачу в YAML 🙂
Ответ №1:
Если я исправлю ошибки в вашей Deployment
конфигурации, чтобы она выглядела так:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-world-boot
labels:
app: hello-world-boot
spec:
selector:
matchLabels:
app: hello-world-boot
template:
metadata:
labels:
app: hello-world-boot
spec:
containers:
- name: hello-world-boot
image: lightmaze/hello-world-spring:latest
env:
- name: HELLO
value: "Hello there"
- name: WORLD
value: "to the entire world"
resources:
limits:
memory: "128Mi"
cpu: "500m"
ports:
- containerPort: 8080
И разверните его в моем локальном minikube
экземпляре:
$ kubectl apply -f pod.yml
Тогда, похоже, все работает так, как вы задумали:
$ kubectl exec -it hello-world-boot-7568c4d7b5-ltbbr -- printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/java-1.8-openjdk/jre/bin:/usr/lib/jvm/java-1.8-openjdk/bin
HOSTNAME=hello-world-boot-7568c4d7b5-ltbbr
TERM=xterm
HELLO=Hello there
WORLD=to the entire world
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
KUBERNETES_SERVICE_HOST=10.96.0.1
KUBERNETES_SERVICE_PORT=443
KUBERNETES_SERVICE_PORT_HTTPS=443
KUBERNETES_PORT=tcp://10.96.0.1:443
LANG=C.UTF-8
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
JAVA_VERSION=8u212
JAVA_ALPINE_VERSION=8.212.04-r0
HOME=/home/spring
Если вы посмотрите на приведенный выше вывод, вы можете увидеть как HELLO
WORLD
переменные среды и, которые вы определили в своем Deployment
.
Комментарии:
1. Спасибо, Ларски. Вы указали, что вам нужно было исправить конфигурацию развертывания, что заставило меня задуматься, почему я не получил никаких ошибок по этому поводу, и оказалось, что я забыл настроить сценарий, который запускал все развертывание, и вместо этого создавал развертывание с помощью команд CLI. Очень глупая ошибка с моей стороны…… Теперь это работает, спасибо вам, ларски, за то, что указали мне правильный путь! : D