kri*_*ris 3 bitbucket environment-variables node.js docker kubernetes
我有一个 nodejs 应用程序,它在环境变量中存储变量。
我正在使用dotenv模块,所以我有一个如下所示的.env文件:
VAR1=value1
VAR2=something_else
Run Code Online (Sandbox Code Playgroud)
我目前正在设置一个 BitBucket Pipeline 以将其自动部署到 Kubernetes 集群。
我对 kubernetes 的秘密不是很熟悉,尽管我正在阅读它们。
我很好奇 :
有没有一种简单的方法可以将我在.env文件中定义的所有环境变量发送到 Docker-container/kubernetes-deployment,以便它们在我的应用程序运行的 pod 中可用?
我希望有一个示例secrets.yml文件或类似文件,它可以将所有内容从.env容器中的环境变量中提取出来。但它也可以在 BitBucket 管道级别或 Docker 容器级别完成..我不确定......
第 1 步:使用您的.env文件创建 k8s 密钥:
# 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
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
第 3 步:添加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
Run Code Online (Sandbox Code Playgroud)
第 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
986 次 |
| 最近记录: |