从 .env 文件创建 kubernetes env var 秘密

2024-01-07

我有一个 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(使用前将#替换为@)

从 .env 文件创建 kubernetes env var 秘密 的相关文章

  • Mongoose:保存时根据父字段值设置子文档字段值

    这几乎肯定在其他地方有所涉及 但是 如果我有一个带有嵌入子文档的单一架构 如下所示 var ChildSchema new Schema name type String trim true user type String trim tr
  • Windows 持久卷上的 Kubernetes

    Windows minikube 是否支持带有主机路径的持久卷 如果是这样 语法是什么 I tried apiVersion v1 kind PersistentVolume metadata name kbmongo002 labels
  • 有条件地使用 Node.js 提供两个 React 构建

    我有两个基于设备向客户端提供服务的 React 应用程序 我使用 Node js 和 Express 来实现这一点 我借了static资产处理部分来自这个问题在这里 https stackoverflow com questions 644
  • docker环境下日志不保存到文件

    在我的生产环境中production rb 我已配置我的日志将保存到文件中 config logger Logger new log production log 当我在本地运行时 使用命令行启动服务器rails s e productio
  • docker compose run 命令中 env 变量的用法

    运行命令docker compose run e TYPE result mongo db backup应该给我给定 TYPE 变量的值 mongo db backup image mongo 3 4 volumes backup back
  • 如何获取与 Node.js 中的 TypeScript 文件行数相关的错误信息?

    我正在使用 TypeScript 进行 Node js 后端开发 每当我在 node js 中遇到错误时 它都会显示与已转译的 JavaScript js 文件相关的行号 而不是与 TypeScript ts 文件相关的行号 如果您使用了
  • 如何在 Visual Studio 上关闭调试后访问在 docker 上运行的网站

    我在 net core 上构建了一个非常简单的 Web 应用程序和 Web api 并配置了 docker compose 以使它们能够通过同一网络正确通信 在 Visual Studio 上 当我在 Docker Compose 项目上运
  • Node.js 中的 Zip 档案

    我想创建一个 zip 存档并将其解压缩到 node js 中 我找不到任何节点实现 node core 内置了 zip 功能 http nodejs org api zlib html http nodejs org api zlib ht
  • kubernetes 如何将 pod 暴露给集群机器之外的东西?

    我读了以下内容Kubernetes 文档 https kubernetes io docs tutorials kubernetes basics expose expose intro 这导致以下 yaml 在集群中运行 postgres
  • 在 NodeJs 中处理 Mongodb 全局连接的最佳方法是什么

    I using 节点 Mongodb Native https github com mongodb node mongodb native并尝试设置全局连接变量 但我对两种可能的解决方案感到困惑 大家能帮我看看哪一款比较好吗 1 解决方案
  • 使用主机上的 consul DNS 解析容器

    目标 让 docker 容器使用主机提供的 DNS 主机是在另一个容器中运行的 consul 代理 来访问通过 traefik 反向代理提供的服务 设置 主机 Ubuntu 16 04 2 LTS Registrator 将新容器注册到 c
  • 从数组数组中获取唯一值[重复]

    这个问题在这里已经有答案了 我有以下数组 let arr email protected cdn cgi l email protection email protected cdn cgi l email protection email
  • 从 Windows Batch (cmd.exe) 中的文件读取环境变量

    我正在尝试从批处理文件中读取变量 以便稍后在批处理脚本 Java 启动器 中使用 理想情况下 我希望所有平台 Unix Windows 上的设置文件都具有相同的格式 并且也是有效的 Java 属性文件 也就是说 它应该看起来像这样 sett
  • NodeJS 中的缩进多行日志记录

    我要打印JSON stringify d 反对控制台 将上下文作为 Mocha 测试套件输出的一部分 当测试缩进时 我希望对象日志行向右缩进足够远 例如 3 4 个制表符空格 以便它们可以识别地位于右侧describe group 我怎样才
  • 将变量从 jade 传递到 ng-init 不起作用

    我正在尝试以角度将对象从玉传递到 ng init 这 不起作用 ng init tables JSON stringify tables 这 扩展但是 ng init tables JSON stringify tables 输出未转义并填
  • K8s更改配置映射并更新应用程序日志级别

    我想更改在 K8S 上运行的 Golang 应用程序的登录配置 我在本地尝试了以下代码 它按预期工作 我正在使用 viper 来监视配置文件更改 这是带有日志配置的配置图 apiVersion v1 kind ConfigMap data
  • Kubernetes Pod 中的日志未显示

    我在 pod 中设置了 Kubernetes 并运行 grpc 服务 我成功命中服务上的端点 其中有 print 语句 但我在日志文件中没有看到任何日志 我之前在 Kubernetes 中运行 cron 作业时见过这种情况 并且日志仅在作业
  • ReactJS 服务器端渲染与客户端渲染

    我刚刚开始研究ReactJS 发现它提供了两种渲染页面的方式 服务器端和客户端 但是 我不明白如何一起使用它 构建应用程序是两种不同的方法 还是可以一起使用 如果我们可以一起使用它 该怎么做 我们需要在服务器端和客户端复制相同的元素吗 或者
  • socket.io 自动断开套接字

    当我在电子中运行 socket io 时 我不断在开发者控制台中收到此错误 engine io client socket probe transport websocket failed because of error transpor
  • 为什么 Internet Explorer 无法使用 NodeJS 和 Express 下载 PDF?

    我正在使用 NodeJS 构建一个网站 需要提供一些 PDF 以及其他文件 由于我无法确定的原因 Internet Explorer 8 第一次无法在 Acrobat Viewer 中完全下载 PDF 有时此后多次 直接保存文件效果很好 但

随机推荐