应用运行时

应用运行时是应用的执行环境。

Buildpack 应用 容器映像应用
系统库 由堆栈提供 在容器中提供
网络访问 通过 Envoy Sidecar 的完全访问权限 通过 Envoy Sidecar 的完全访问权限
文件系统 临时存储 临时存储
语言运行时 由 Stack 或 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 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_apihostusers)之外,Kf 不支持的字段包括:

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