【问题标题】:Create kubernetes env var secrets from .env file从 .env 文件创建 kubernetes env var secret
【发布时间】:2021-02-28 11:44:18
【问题描述】:

我有一个 nodejs 应用程序,它将变量存储在环境变量中。

我正在使用dotenv 模块,所以我有一个.env 文件,看起来像:

VAR1=value1
VAR2=something_else

我目前正在设置一个 BitBucket Pipeline 以将其自动部署到 Kubernetes 集群。
虽然我是reading up on them,但我对 kubernetes 的秘密不是很熟悉。

我想知道:

有没有一种简单的方法可以将我在.env 文件中定义的所有环境变量发送到 Docker-container/kubernetes-deployment,以便它们在我的应用程序运行的 pod 中可用?

我希望有一个示例 secrets.yml 文件或类似文件,它从 .env 获取所有内容并进入容器中的环境变量。但它也可以在 BitBucket 管道级别或 Docker 容器级别完成。我不确定...

【问题讨论】:

    标签: node.js docker kubernetes environment-variables bitbucket


    【解决方案1】:

    第 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
    

    第 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
    

    第 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
    

    第 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
    
    

    【讨论】:

      猜你喜欢
      • 2022-12-26
      • 2020-01-12
      • 2018-12-21
      • 2022-07-15
      • 2020-07-05
      • 2021-12-04
      • 1970-01-01
      • 2015-11-21
      • 2015-07-07
      相关资源
      最近更新 更多