node.js - 从 .env 文件创建 kubernetes env var secret

标签 node.js docker kubernetes environment-variables bitbucket

我有一个 nodejs 应用程序,它将变量存储在环境变量中。
我正在使用 dotenv模块,所以我有一个 .env文件看起来像:

VAR1=value1
VAR2=something_else
我目前正在设置一个 BitBucket Pipeline 以将其自动部署到 Kubernetes 集群。
我对 Kubernetes 的 secret 不是很熟悉,虽然我是 reading up on them .
我在想 :
有没有一种简单的方法可以将我在 .env 中定义的所有环境变量发送到 Docker-container/kubernetes-deployment文件以便它们在我的应用程序运行的 pod 中可用?
我希望有一个例子secrets.yml.env 获取所有内容的文件或类似文件并进入容器中的环境变量。但它也可以在 BitBucket 管道级别或 Docker 容器级别完成..我不确定......

最佳答案

第一步:使用您的 .env 创建一个 k8s key 文件:

# 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
第二步:验证 secret :
$ 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
第三步:添加 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
第四步:运行 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

关于node.js - 从 .env 文件创建 kubernetes env var secret,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64872206/

相关文章:

javascript - 以函数式、协变的方式使用 Array.prototype.map

node.js - 如何在 Azure 机器人消息文本中添加超链接

node.js - 在主要过程中进行大量计算时出现 Electron 打cup

docker - 如何在 odoo 容器中使用 POSTGRES_PASSWORD_FILE?

kubernetes - OpenLDAP - 以编程方式更新 slapd 配置

kubernetes - kubernetes 中的入口和服务网格有什么区别?

javascript - 将父级的类实例注入(inject)模块导出函数?

docker - 如何使用隔离的网络正确连接使用多个docker-compose文件创建的容器

wordpress - 如何在 Dockerfile 中下载和解压

kubernetes - 默认节点选择器