應用程式執行階段是應用程式執行的環境。
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_id
organization_name
space_id
start
(與started_at
相同)started_at_timestamp
(與state_timestamp
相同)