【问题标题】:How do I set the environment for spring.datasource on a spring-boot container using a Kubernetes YAML file ? Is it the same as Docker YAML?如何使用 Kubernetes YAML 文件在 spring-boot 容器上设置 spring.datasource 的环境?和 Docker YAML 一样吗?
【发布时间】:2020-05-10 15:57:05
【问题描述】:
所以前几天我刚刚了解了 Docker,我可以在我的 Docker-Compose YAML 文件中使用如下内容:
environment:
- spring.datasource.url=jdbc:postgresql://192.168.100.100/my_database
- spring.datasource.username=my_username
- spring.datasource.password=my_password!@#$$
我喜欢在我的 Kubernetes YAML 文件中实现这一点。我该怎么做?
【问题讨论】:
标签:
spring-boot
docker
kubernetes
yaml
kubernetes-pod
【解决方案1】:
您可以像在 Docker 文件上一样在 YAML 上声明环境变量,只是语法不同。
这是您要求的示例:
apiVersion: v1
kind: Pod
metadata:
name: envar-demo
spec:
containers:
- name: envar-demo
image: busybox
args:
- sleep
- "86400"
env:
- name: spring.datasource.url
value: "jdbc:postgresql://192.168.100.100/my_database"
- name: spring.datasource.username
value: "my_username"
- name: spring.datasource.password
value: "my_password!@#$"
现在我将创建一个简单的 busybox 容器来在运行时显示激活的变量:
user@minikube:~$ kubectl apply -f envar-pod.yaml
pod/envar-demo created
user@minikube:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
envar-demo 1/1 Running 0 8s
user@minikube:~$ kubectl exec -it envar-demo -- /bin/sh
/ # printenv
HOSTNAME=envar-demo
SHLVL=1
HOME=/root
TERM=xterm
spring.datasource.password=my_password!@#$
spring.datasource.url=jdbc:postgresql://192.168.100.100/my_database
spring.datasource.username=my_username
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/
/ #
更多信息请参考Environment Variable Expose