簡體   English   中英

如何從 Kubernetes Pod 檢查 Node.js 環境變量

[英]How to check Node.js Environment variables from Kubernetes Pod

我已將 node.js 應用程序容器化到 kubernetes pod 中。 為了設置一些環境變量,我創建了.env.k8 文件並在那里設置了一些環境變量。

在構建映像時,我在 docker 構建命令中選擇此文件作為 --env =k8。 假設,我在 that.env.k8 文件中設置了一個 ENV 變量為 URL ="abc.com"

正在創建圖像並且 pod 已啟動。 我需要檢查是否根據 my.env.k8 文件設置了 process.env.URL。 pod有什么辦法,我可以檢查Env變量是否設置正確。

我執行到正在運行的容器中並使用了 commond printenv。 它沒有顯示 node.js 應用程序的進程環境變量,它顯示了為 POD 設置的環境變量。

那么如何從相同的 kubernetes pod 檢查 process.env 變量

您必須從 your.env 文件定義創建一個 configMap 並將其安裝在應用程序的根目錄中。

kubectl create configmap nodejs-env --from-file=.env.k8 

正確安裝后,.env 文件將為您的 Node.js 應用程序設置環境變量

# NodoJS app Deployment using above config map

apiVersion: app/v1
kind: Deployment
metadata:
  name: nodejs-app
  namespace: production
spec:
  replicas: 8
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-app
        image: nodejs-app:3.2.0
        ports:
          containerPort: 80
        volumeMounts:
        - name: nodejs-env-file
          mountPath: /app/.env
          readOnly: true
    volumes:
    - name: nodejs-env-file
      configMap:
        name: nodejs-env

參考: https://www.cloudytuts.com/tutorials/kubernetes/how-to-configure-node-based-apps-in-kubernetes/

一些監視器需要在我們的應用程序中使用端點來顯示帶有統計信息或指標的儀表板。

在 java 中,稱為spring的最安全和完整的框架提供了一個稱為執行器的功能,該功能公開了許多 http 端點。 其中之一能夠顯示環境變量。 您可以禁用此功能或為生產設置安全憑據

同樣在 python、django 框架中,當調試變量為 true 時,出現任何錯誤時,都會顯示 html 頁面,其中包含錯誤的堆棧跟蹤和環境變量。

因此,在 nodejs 中擁有此功能並不是一個瘋狂的想法。 您只需要添加一個簡單的快速路由並返回process.env

app.get("/meta/vars", function(req, res){
    if ( some_security_logic || process.env.NODE_ENV ==  "PROD") { 
      return req.send({});
    }
    req.send(process.env);
});

配置管理器

在運行時使用但在構建時公開的變量不是一個好的做法,因為它破壞了 docker 功能之一: 適用於任何環境的一個構建:開發、分段、生產等

要在文件中包含變量,例如:.env.properties.ini 或任何擴展名,需要人工執行手動寫入任務。 這打破了 devops 自動化 還需要一些存儲,例如 git 存儲庫,這是另一種不好的做法。

在這一點上,我建議您使用一些應用程序來負責管理您公司中所有應用程序的所有變量。 此應用程序必須是安全的,並提供隱藏密碼、加密敏感值和特定應用程序使用這些變量的安全方式等功能。 這里有一些選項:

使用類似之前選項的工具,您無需在構建時手動添加變量。 您的應用只需要使用配置管理器平台發布的安全 http 端點獲取其變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM