應用程式執行階段是應用程式執行的環境。
| Buildpack 應用程式 | 容器映像檔應用程式 | |
|---|---|---|
| 系統程式庫 | 由堆疊提供 | 在容器中提供 | 
| 網路存取 | 透過 Envoy 附加元件提供完整存取權 | 透過 Envoy 附加元件提供完整存取權 | 
| 檔案系統 | 臨時儲存空間 | 臨時儲存空間 | 
| 語言執行階段 | 由堆疊或 Buildpack 提供 | 內建至容器 | 
| 使用者 | 由堆疊指定 | 在容器上指定 | 
| 隔離機制 | Kubernetes Pod | Kubernetes Pod | 
| DNS | 由 Kubernetes 提供 | 由 Kubernetes 提供 | 
環境變數
Kubernetes 會在執行階段將環境變數插入應用程式。變數會依照下列順序新增,其中較後面的值會覆寫同名的前面值:
- 聊天室 (由管理員設定)
 - 應用程式 (由開發人員設定)
 - 系統 (由 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_api、host、users) 之外,Kf 不支援的欄位如下:
application_version(與version相同)organization_idorganization_namespace_idstart(與started_at相同)started_at_timestamp(與state_timestamp相同)