El entorno de ejecución de la app es el entorno en que se ejecutan las apps.
Apps de paquetes de compilación | Aplicaciones de imágenes de contenedor | |
---|---|---|
Bibliotecas del sistema | Proporcionado por la pila | Proporcionado en el contenedor |
Acceso a la red | Acceso completo mediante el archivo adicional de Envoy | Acceso completo mediante el archivo adicional de Envoy |
Sistema de archivos | Almacenamiento efímero | Almacenamiento efímero |
Entorno de ejecución del lenguaje | Proporcionado por la pila o el paquete de compilación | Compilado en el contenedor |
Usuario | Especificado por la pila | Especificado en el contenedor |
Mecanismo de aislamiento | Pod de Kubernetes | Pod de Kubernetes |
DNS | Proporcionado por Kubernetes | Proporcionado por Kubernetes |
Variables de entorno
Kubernetes inserta las variables de entorno en la app durante el tiempo de ejecución. Las variables se agregan según el siguiente orden, en el que los valores posteriores anulan los anteriores con el mismo nombre:
- Espacio (establecido por los administradores)
- App (configurada por los desarrolladores)
- Sistema (definido por Kf)
Kf proporciona las siguientes variables de entorno del entorno de ejecución:
Variable | Objetivo |
---|---|
CF_INSTANCE_ADDR |
El IP:PORT visible del clúster de la instancia de la app. |
CF_INSTANCE_GUID |
UUID de la instancia de la app. |
INSTANCE_GUID |
Alias de CF_INSTANCE_GUID . |
CF_INSTANCE_INDEX |
El número de índice de la instancia de la aplicación, que será SIEMPRE 0. |
INSTANCE_INDEX |
Alias de CF_INSTANCE_INDEX . |
CF_INSTANCE_IP |
La IP visible del clúster de la instancia de la app. |
CF_INSTANCE_INTERNAL_IP |
Alias de CF_INSTANCE_IP . |
VCAP_APP_HOST |
Alias de CF_INSTANCE_IP . |
CF_INSTANCE_PORT |
El puerto visible del clúster de la instancia de la app. En Kf, es igual a PORT . |
DATABASE_URL |
El primer URI que se encuentra en una credencial VCAP_SERVICES . |
LANG |
Obligatorio para los paquetes de compilación a fin de garantizar un orden de carga de la secuencia de comandos coherente. |
MEMORY_LIMIT |
La cantidad máxima de memoria (en MB) que puede consumir la app. |
PORT |
El puerto en el que la app debe escuchar para las solicitudes. |
VCAP_APP_PORT |
Alias de PORT . |
VCAP_APPLICATION |
Una estructura JSON que contiene metadatos de la app. |
VCAP_SERVICES |
Una estructura JSON que especifica servicios vinculados. |
Las credenciales de servicio de los servicios vinculados se inyectan en las apps a través de la variable de entorno VCAP_SERVICES
. La variable es un objeto JSON válido con la siguiente estructura.
VCAPServices
Un objeto JSON en el que las claves son etiquetas de servicio y los valores son un arreglo de VCAPService
. El arreglo representa cada servicio vinculado con esa etiqueta.
Los servicios proporcionados por el usuario se colocan en la etiqueta user-provided
.
Ejemplo
{
"mysql": [...],
"postgresql": [...],
"user-provided": [...]
}
VCAPService
Este tipo representa una sola instancia de servicio vinculado.
Ejemplo
{
"binding_name": string,
"instance_name": string,
"name": string,
"label": string,
"tags": string[],
"plan": string,
"credentials": object
}
Campos
Campo | Tipo | Descripción |
---|---|---|
binding_name |
string |
El nombre que el usuario asignó a la instancia de servicio. |
instance_name |
string |
El nombre que el usuario asignó a la instancia de servicio. |
name |
string |
El valor binding_name , si existe; de lo contrario, el instance_name . |
label |
string |
El nombre de la oferta de servicios. |
tags |
string[] |
Un array de strings que puede usar una app para identificar una instancia de servicio. |
plan |
string[] |
El plan de servicio seleccionado cuando se creó la instancia de servicio. |
credentials |
object |
Las credenciales específicas del servicio necesarias para acceder a la instancia de servicio. |
VCAP_APPLICATION
La variable de entorno VCAP_APPLICATION
es un objeto JSON que contiene metadatos sobre la app.
Ejemplo
{
"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"]
}
Campos
Campo | Tipo | Descripción |
---|---|---|
application_id |
string |
El GUID que identifica a la app. |
application_name |
string |
El nombre que se le asignó a la app cuando se envió. |
application_uris |
string[] |
Los URI asignados a la app. |
limits |
object |
Los límites permitidos para el espacio en disco y la memoria de la app. Los límites de espacio en disco y memoria se proporcionan cuando se implementa la app, ya sea en la línea de comandos o en el manifiesto de la app. Los límites de disco y memoria se representan como números enteros, con una unidad de MB supuesta. |
name |
string |
idéntico a application_name . |
process_id |
string |
El UID que identifica el proceso. Solo está presente en la ejecución de contenedores de aplicaciones. |
process_type |
string |
El tipo de proceso. Solo está presente en la ejecución de contenedores de aplicaciones. |
space_name |
string |
El nombre legible del espacio en el que se implementa la app. |
uris |
string[] |
idéntico a application_uris . |
Campos faltantes
Actualmente, algunos campos de VCAP_APPLICATION
que están en Cloud Foundry no son compatibles con Kf.
Además de los campos específicos de CF y los obsoletos (cf_api
, host
, users
), los campos que no son compatibles con Kf son los siguientes:
application_version
(idéntico aversion
)organization_id
organization_name
space_id
start
(idéntico astarted_at
)started_at_timestamp
(idéntico astate_timestamp
)