Entorno de ejecución de apps

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
User 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:

  1. Espacio (establecido por los administradores)
  2. App (configurada por los desarrolladores)
  3. Sistema (definido por Kf)

Kf proporciona las siguientes variables de entorno del entorno de ejecución:

Variable Motivo
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 a version)
  • organization_id
  • organization_name
  • space_id
  • start (idéntico a started_at)
  • started_at_timestamp (idéntico a state_timestamp)