簡體   English   中英

kubernetes 內的 Nginx fpm Laravel 容器未獲取環境變量

[英]Nginx fpm Laravel container inside kubernetes not picking up the environment variables

我有一個 laravel docker 容器,它是用自定義 nginx + php-fpm Z05B60563C41A2BDAFED46AFCB3053C41A2BDAFED74Z 構建的容器

我已成功部署到 k8s 集群並且可以正常訪問,還可以登錄 pod 並運行env我可以從我的 k8s configmap中看到所有環境變量都已成功設置

在 laravel 代碼中,我讀取了這樣的環境變量:例如在SomeController.php有以下代碼:

$apiCode = env('API_CODE');
// also tried like this $apiCode = getenv('API_CODE'); still not successful in fetching

我的問題和這個問題是 env vars 在 php 代碼中總是被讀取為空,即使在使用env命令的 pod 內我可以看到它們正確設置,不知何故 php 代碼找不到它們。

(我沒有緩存 laravel 配置,以便我們可以排除這種情況,也嘗試使用命令php artisan config:clear事先,仍然相同的結果無法獲取 php 中的環境變量)

在 kubernetes 定義 yml 中,我將 configmap 附加到 env 變量,如下所示,並在 pod 中正確定義它們:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: api
  labels:
    tier: api
spec:
  replicas: 1
  selector:
    matchLabels:
      tier: api
  template:
    metadata:
      labels:
        tier: api
    spec:
      containers:
        - name: api
          image: somenging-fpm-image:latest
          ports:
            - containerPort: 80
          envFrom:
            - configMapRef:
                name: api-config-env-file

目前我迷路了,不知道為什么會發生這種情況。

我最初認為 configmap 可能是在 pod 啟動后創建的(php fpm 以某種方式處理然后沒有選擇啟動 env)

為了驗證和排除這種情況,我銷毀了 pod 並重新創建了 deployment+pod 以使用已經存在的 configmap,但結果仍然是相同的 php 沒有拾取 pod 中存在的環境變量

我可以通過kubectl exec -it [podnamehere] /bin/bash登錄到 pod 並在那里運行env並且可以看到從我的 configmap api-config-env-file正確設置的 env vars,但是代碼總是讓它們為空不能閱讀它們

我只有在有redis或緩存系統時才遇到這個問題。

但是你已經 state 那

(我沒有緩存 laravel 配置,以便我們可以排除這種情況,也嘗試使用命令 php artisan config:clear 事先,仍然相同的結果無法獲取 php 中的環境變量)

因此,請仔細檢查您是否運行任何命令,例如php artisan optimize 它將緩存保存到 redis,laravel 應用程序將從那里選擇設置。

只是為了確保你不會錯過任何東西。

嘗試: php artisan optimize:clear

該命令將執行以下操作:

Cached events cleared!
Compiled views cleared!
Application cache cleared!
Route cache cleared!
Configuration cache cleared!
Compiled services and packages files removed!
Caches cleared successfully!

暫無
暫無

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

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