應用程式執行階段

應用程式執行階段是應用程式執行的環境。

Buildpack 應用程式 容器映像檔應用程式
系統程式庫 由堆疊提供 在容器中提供
網路存取 透過 Envoy 附加元件提供完整存取權 透過 Envoy 附加元件提供完整存取權
檔案系統 臨時儲存空間 臨時儲存空間
語言執行階段 由堆疊或 Buildpack 提供 內建至容器
使用者 由堆疊指定 在容器上指定
隔離機制 Kubernetes Pod Kubernetes Pod
DNS 由 Kubernetes 提供 由 Kubernetes 提供

環境變數

Kubernetes 會在執行階段將環境變數插入應用程式。變數會依照下列順序新增,其中較後面的值會覆寫同名的前面值:

  1. 聊天室 (由管理員設定)
  2. 應用程式 (由開發人員設定)
  3. 系統 (由 Kf 設定)

Kf 提供下列系統環境變數:

變數 目的
CF_INSTANCE_ADDR 應用程式執行個體的叢集可見 IP:PORT。
CF_INSTANCE_GUID 應用程式執行個體的 UUID。
INSTANCE_GUID CF_INSTANCE_GUID 的別名。
CF_INSTANCE_INDEX 應用程式執行個體的索引編號,一律為 0。
INSTANCE_INDEX CF_INSTANCE_INDEX 的別名。
CF_INSTANCE_IP 應用程式執行個體的叢集可見 IP。
CF_INSTANCE_INTERNAL_IP CF_INSTANCE_IP 的別名
VCAP_APP_HOST CF_INSTANCE_IP 的別名
CF_INSTANCE_PORT 應用程式執行個體的叢集可見通訊埠。在 Kf 中,這與 PORT 相同。
DATABASE_URL VCAP_SERVICES 憑證中找到的第一個 URI。
LANG Buildpack 必須使用這個屬性,才能確保一致的指令碼載入順序。
MEMORY_LIMIT 應用程式可使用的記憶體量上限 (以 MB 為單位)。
PORT 應用程式應監聽要求的通訊埠。
VCAP_APP_PORT PORT 的別名。
VCAP_APPLICATION 包含應用程式中繼資料的 JSON 結構。
VCAP_SERVICES 指定已綁定服務的 JSON 結構。

來自繫結服務的服務憑證會透過 VCAP_SERVICES 環境變數插入應用程式。這個變數是有效的 JSON 物件,具有下列結構。

VCAPServices

JSON 物件,其中鍵是服務標籤,值則是 VCAPService 的陣列。這個陣列代表具有該標籤的每個繫結服務。使用者提供的服務會放在 user-provided 標籤下方。

示例

{
  "mysql": [...],
  "postgresql": [...],
  "user-provided": [...]
}

VCAPService

這個類型代表單一已繫結的服務執行個體。

示例

{
  "binding_name": string,
  "instance_name": string,
  "name": string,
  "label": string,
  "tags": string[],
  "plan": string,
  "credentials": object
}

欄位

欄位 類型 說明
binding_name string 使用者指派給服務繫結的名稱。
instance_name string 使用者指派給服務執行個體的名稱。
name string 如果存在 binding_name,則傳回 binding_name;否則傳回 instance_name
label string 服務方案的名稱。
tags string[] 應用程式可用來識別服務執行個體的字串陣列。
plan string[] 建立服務執行個體時選取的服務方案。
credentials object 存取服務執行個體所需的服務專屬憑證。

VCAP_APPLICATION

VCAP_APPLICATION 環境變數是 JSON 物件,其中包含應用程式相關的中繼資料。

示例

{
  "application_id": "12345",
  "application_name": "my-app",
  "application_uris": ["my-app.example.com"],
  "limits": {
    "disk": 1024,
    "mem": 256
  },
  "name": "my-app",
  "process_id": "12345",
  "process_type": "web",
  "space_name": "my-ns",
  "uris": ["my-app.example.com"]
}

欄位

欄位 類型 說明
application_id string 用於識別應用程式的 GUID。
application_name string 應用程式在推送時指派的名稱。
application_uris string[] 指派給應用程式的 URI。
limits object 應用程式可使用的磁碟空間和記憶體限制。記憶體和磁碟空間限制會在應用程式部署時提供,可透過指令列或應用程式資訊清單提供。磁碟和記憶體限制以整數表示,並假設單位為 MB。
name string application_name 相同。
process_id string 識別程序的 UID。僅會顯示在執行中的應用程式容器中。
process_type string 程序類型。僅會顯示在執行中的應用程式容器中。
space_name string 應用程式部署所在聊天室的易讀名稱。
uris string[] application_uris 相同。

遺漏欄位

Kf 目前不支援 Cloud Foundry 中 VCAP_APPLICATION 的部分欄位。

除了 CF 專屬和已淘汰的欄位 (cf_apihostusers) 之外,Kf 不支援的欄位如下:

  • application_version (與 version 相同)
  • organization_id
  • organization_name
  • space_id
  • start (與 started_at 相同)
  • started_at_timestamp (與 state_timestamp 相同)