我有一个 Nodejs 应用程序,它将变量存储在环境变量中。
我正在使用dotenv https://www.npmjs.com/package/dotenv模块,所以我有一个.env
文件看起来像:
VAR1=value1
VAR2=something_else
我目前正在设置 BitBucket Pipeline 以将其自动部署到 Kubernetes 集群。
我不太熟悉 kubernetes 的秘密,尽管我阅读它们 https://kubernetes.io/docs/concepts/configuration/secret/.
我在想 :
有没有一种简单的方法可以将我在我的文件中定义的所有环境变量发送到 Docker 容器/kubernetes-deployment.env
文件以便它们在我的应用程序运行的 Pod 中可用?
我希望有一个例子secrets.yml
文件或类似文件,其中包含所有内容.env
并将其放入容器中的环境变量中。但它也可以在 BitBucket 管道级别或 Docker 容器级别完成..我不确定...
Step 1:使用您的创建一个 k8s 密钥.env
file:
# kubectl create secret generic <secret-name> --from-env-file=<path-to-env-file>
$ kubectl create secret generic my-env-list --from-env-file=.env
secret/my-env-list created
Step 2:验证秘密:
$ kubectl get secret my-env-list -o yaml
apiVersion: v1
data:
VAR1: dmFsdWUx
VAR2: c29tZXRoaW5nX2Vsc2U=
kind: Secret
metadata:
name: my-env-list
namespace: default
type: Opaque
Step 3: Add env
到你的 pod 容器:
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
spec:
containers:
- name: demo-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- secretRef:
name: my-env-list # <---- here
restartPolicy: Never
Step 4:运行 pod 并检查是否env
存在或不存在:
$ kubectl apply -f pod.yaml
pod/demo-pod created
$ kubectl logs -f demo-pod
KUBERNETES_PORT=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT=443
HOSTNAME=demo-pod
SHLVL=1
HOME=/root
KUBERNETES_PORT_443_TCP_ADDR=10.96.0.1
VAR1=value1 # <------------------------------------------------------here
VAR2=something_else # <-----------------------------------------------here
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
KUBERNETES_PORT_443_TCP_PORT=443
KUBERNETES_PORT_443_TCP_PROTO=tcp
KUBERNETES_PORT_443_TCP=tcp://10.96.0.1:443
KUBERNETES_SERVICE_PORT_HTTPS=443
PWD=/
KUBERNETES_SERVICE_HOST=10.96.0.1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)