Entorno de ejecución de aplicaciones

El tiempo de ejecución de la aplicación es el entorno en el que se ejecutan las aplicaciones.

Aplicaciones de paquetes de compilación Aplicaciones de imagen de contenedor
Bibliotecas del sistema Proporcionado por la pila Proporcionado en el contenedor
Acceso a la red Acceso completo a través del sidecar de Envoy Acceso completo a través del sidecar de Envoy
Sistema de archivos Almacenamiento efímero Almacenamiento efímero
Entorno de ejecución de lenguaje Suministrado por la pila o el paquete de compilación Integrado 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 aplicación en el tiempo de ejecución. Las variables se añaden en el siguiente orden, donde los valores posteriores anulan los anteriores con el mismo nombre:

  1. Espacio (configurado por los administradores)
  2. Aplicación (definida por los desarrolladores)
  3. Sistema (definido por Kf)

Kf proporciona las siguientes variables de entorno del sistema:

Variable Finalidad
CF_INSTANCE_ADDR La IP:PUERTO visible del clúster de la instancia de la aplicación.
CF_INSTANCE_GUID UUID de la instancia de la aplicación.
INSTANCE_GUID Alias de CF_INSTANCE_GUID.
CF_INSTANCE_INDEX Número de índice de la instancia de la aplicación. SIEMPRE será 0.
INSTANCE_INDEX Alias de CF_INSTANCE_INDEX.
CF_INSTANCE_IP La IP visible del clúster de la instancia de App.
CF_INSTANCE_INTERNAL_IP Alias de CF_INSTANCE_IP
VCAP_APP_HOST Alias de CF_INSTANCE_IP
CF_INSTANCE_PORT Puerto visible del clúster de la instancia de la aplicación. En Kf, es lo mismo que PORT.
DATABASE_URL El primer URI encontrado en una credencial VCAP_SERVICES.
LANG Requerido por Buildpacks para asegurar un orden de carga de secuencias de comandos coherente.
MEMORY_LIMIT La cantidad máxima de memoria en MB que puede consumir la aplicación.
PORT Puerto en el que la aplicación debe escuchar las solicitudes.
VCAP_APP_PORT Alias de PORT.
VCAP_APPLICATION Una estructura JSON que contiene metadatos de la aplicación.
VCAP_SERVICES Una estructura JSON que especifica los servicios enlazados.

Las credenciales de servicio de los servicios enlazados se insertan en las aplicaciones 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 una matriz de VCAPService. La matriz representa todos los servicios enlazados con esa etiqueta. Los servicios proporcionados por el usuario se colocan bajo la etiqueta user-provided.

Ejemplo

{
  "mysql": [...],
  "postgresql": [...],
  "user-provided": [...]
}

VCAPService

Este tipo representa una sola instancia de servicio enlazada.

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 Nombre asignado a la vinculación de servicio por el usuario.
instance_name string Nombre que el usuario ha asignado a la instancia de servicio.
name string El binding_name si existe; de lo contrario, el instance_name.
label string Nombre de la oferta de servicio.
tags string[] Una matriz de cadenas que una aplicación puede usar para identificar una instancia de servicio.
plan string[] El plan de servicio seleccionado al crear la instancia de servicio.
credentials object Las credenciales específicas del servicio necesarias para acceder a la instancia del servicio.

VCAP_APPLICATION

La variable de entorno VCAP_APPLICATION es un objeto JSON que contiene metadatos sobre la aplicación.

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 GUID que identifica la aplicación.
application_name string Nombre asignado a la aplicación cuando se envió.
application_uris string[] Los URIs asignados a la aplicación.
limits object Los límites de espacio en disco y de memoria permitidos para la aplicación. Los límites de memoria y espacio en disco se proporcionan cuando se implementa la aplicación, ya sea en la línea de comandos o en el manifiesto de la aplicación. Los límites de disco y memoria se representan como números enteros, con una unidad supuesta de MB.
name string Es idéntico a application_name.
process_id string El UID que identifica el proceso. Solo está presente en los contenedores de aplicaciones en ejecución.
process_type string El tipo de proceso. Solo está presente en los contenedores de aplicaciones en ejecución.
space_name string Nombre legible del espacio en el que se ha desplegado la aplicación.
uris string[] Es idéntico a application_uris.

Faltan campos

Actualmente, algunos campos de VCAP_APPLICATION que están en Cloud Foundry no se admiten en Kf.

Además de los campos específicos de CF y los obsoletos (cf_api, host y users), estos son los campos que no se admiten en Kf:

  • 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)