从.env文件创建kubernetes env var秘密 [英] Create kubernetes env var secrets from .env file

查看:102
本文介绍了从.env文件创建kubernetes env var秘密的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a nodejs application which stores variables in environment variables.

我正在使用 dotenv 模块,所以我有一个 .env文件如下:

I'm using the dotenv module, so I have a .env file that looks like :

VAR1=value1
VAR2=something_else

我当前正在设置一个BitBucket管道,以将其自动部署到Kubernetes集群.
尽管我仔细阅读它们,但我对kubernetes的秘密不是很熟悉.

I'm currently setting up a BitBucket Pipeline to auto deploy this to a Kubernetes cluster.
I'm not very familiar with kubernetes secrets, though I'm reading up on them.

我想知道:

是否有一种简单的方法可以将我在 .env 文件中定义的所有环境变量发送到Docker容器/kubernetes-deployment,以便它们在我的Pod中可用应用正在运行吗?

Is there an easy way to send to a Docker-container / kubernetes-deployment all of the environment variables I have defined in my .env file so they are available in the pods my app is running in ?

我希望找到一个示例文件 secrets.yml 或类似文件,该文件可以将 .env 中的所有内容都放入容器中的环境变量中.但这也可以在BitBucket管道级别或Docker容器级别完成..我不确定...

I'm hoping for an example secrets.yml file or similar which takes everything from .env and makes in into environment variables in the container. But it could also be done in the BitBucket pipeline level, or at the Docker container level .. I'm not sure ...

推荐答案

步骤1:使用您的 .env 文件创建一个k8s机密:

Step 1: Create a k8s secret with your .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

第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 添加到容器的容器中:

Step 3: Add env to your pod's container:

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::运行广告连播,并检查 env 是否存在:

Step 4: Run the pod and check if the env exist or not:

$ 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

这篇关于从.env文件创建kubernetes env var秘密的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆