应用运行时是应用的执行环境。
Buildpack 应用 | 容器映像应用 | |
---|---|---|
系统库 | 由堆栈提供 | 在容器中提供 |
网络访问 | 通过 Envoy Sidecar 的完全访问权限 | 通过 Envoy Sidecar 的完全访问权限 |
文件系统 | 临时存储 | 临时存储 |
语言运行时 | 由 Stack 或 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 |
App 实例的索引编号,此值始终为 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 |
App 实例的集群可见端口。在 Kf 中,这与 PORT 相同。 |
DATABASE_URL |
在 VCAP_SERVICES 凭据中找到的第一个 URI。 |
LANG |
Buildpacks 需要,以确保脚本加载顺序一致。 |
MEMORY_LIMIT |
应用可以消耗的内存量上限(以 MB 为单位)。 |
PORT |
应用应侦听请求的端口。 |
VCAP_APP_PORT |
PORT 的别名。 |
VCAP_APPLICATION |
包含应用元数据的 JSON 结构。 |
VCAP_SERVICES |
用于指定绑定服务的 JSON 结构。 |
通过 VCAP_SERVICES
环境变量将绑定服务中的服务凭据注入到 Apps 中。此变量是具有以下结构的有效 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 (如果存在);否则为 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 相同。 |
缺失字段
VCAP_APPLICATION
中的某些字段位于 Cloud Foundry 中,Kf 目前不支持。
除了 CF 专用字段和已弃用的字段(cf_api
、host
、users
)之外,Kf 不支持的字段包括:
application_version
(与version
相同)organization_id
organization_name
space_id
start
(与started_at
相同)started_at_timestamp
(与state_timestamp
相同)