Environnement d'exécution de l'application

L'environnement d'exécution de l'application correspond à l'environnement dans lequel les applications sont exécutées.

Applications du pack de création Applications d'images de conteneurs
Bibliothèques système Fournies par la pile Fournies dans le conteneur
Accès au réseau Accès complet via le side-car Envoy Accès complet via le side-car Envoy
Système de fichiers Stockage éphémère Stockage éphémère
Environnement d'exécution du langage Fourni par la pile ou le pack de création Intégré au conteneur
Utilisateur Spécifié par la pile Spécifié dans le conteneur
Mécanisme d'isolation Pod Kubernetes Pod Kubernetes
DNS Fourni par Kubernetes Fourni par Kubernetes

Variables d'environnement

Les variables d'environnement sont injectées dans l'application au moment de l'exécution par Kubernetes. Les variables sont ajoutées dans l'ordre suivant, dans lequel les valeurs plus récentes remplacent les anciennes valeurs portant le même nom :

  1. Espace (défini par les administrateurs)
  2. Application (définie par les développeurs)
  3. Système (défini par Kf)

Kf fournit les variables d'environnement système suivantes :

Variable Usage
CF_INSTANCE_ADDR IP:PORT de l'instance d'application visible par le cluster
CF_INSTANCE_GUID UUID de l'instance d'application
INSTANCE_GUID Alias de CF_INSTANCE_GUID
CF_INSTANCE_INDEX Numéro d'index de l'instance d'application, TOUJOURS égal à 0
INSTANCE_INDEX Alias de CF_INSTANCE_INDEX
CF_INSTANCE_IP Adresse IP de l'instance d'application visible par le cluster
CF_INSTANCE_INTERNAL_IP Alias de CF_INSTANCE_IP
VCAP_APP_HOST Alias de CF_INSTANCE_IP
CF_INSTANCE_PORT Port de l'instance d'application visible par le cluster. Dans Kf, il est identique à PORT.
DATABASE_URL Premier URI trouvé dans un identifiant VCAP_SERVICES
LANG Requis par Buildpacks pour assurer l'ordre cohérent du chargement des scripts
MEMORY_LIMIT Quantité maximale de mémoire consommée par l'application, exprimée en Mo
PORT Port sur lequel l'application doit écouter les requêtes
VCAP_APP_PORT Alias de PORT
VCAP_APPLICATION Structure JSON contenant les métadonnées de l'application
VCAP_SERVICES Structure JSON spécifiant les services liés

Les identifiants des services liés sont injectés dans les applications via la variable d'environnement VCAP_SERVICES. La variable est un objet JSON valide présentant la structure suivante.

VCAPServices

Objet JSON dans lequel les clés sont des libellés de service et les valeurs correspondent à un tableau de VCAPService. Le tableau représente chaque service lié portant ce libellé. Les services fournis par l'utilisateur sont répertoriés sous le libellé user-provided.

Exemple

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

VCAPService

Ce type représente une seule instance de service lié.

Exemple

{
  "binding_name": string,
  "instance_name": string,
  "name": string,
  "label": string,
  "tags": string[],
  "plan": string,
  "credentials": object
}

Champs

Champ Type Description
binding_name string Nom attribué par l'utilisateur à la liaison de service
instance_name string Nom attribué par l'utilisateur à l'instance de service
name string Nom de la liaison (binding_name), s'il existe. Sinon, ce nom correspond à celui de l'instance (instance_name).
label string Nom de l'offre de service
tags string[] Tableau de chaînes pouvant être utilisé par une application pour identifier une instance de service
plan string[] Plan de service sélectionné lors de la création de l'instance de service
credentials object Identifiants spécifiques au service requis pour accéder à l'instance de service

VCAP_APPLICATION

La variable d'environnement VCAP_APPLICATION est un objet JSON contenant des métadonnées sur l'application.

Exemple

{
  "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"]
}

Champs

Champ Type Description
application_id string GUID identifiant l'application
application_name string Nom attribué à l'application lors de son transfert
application_uris string[] URI attribués à l'application
limits object Limites de l'espace disque et de la mémoire autorisées pour l'application. Les limites de mémoire et d'espace disque sont définies dans la ligne de commande ou dans le fichier manifeste de l'application lors de son déploiement. Les limites de disque et de mémoire sont représentées sous forme d'entiers, avec une unité supposée de Mo.
name string Identique à application_name
process_id string UID identifiant le processus. Présent uniquement dans les conteneurs de l'application en cours d'exécution.
process_type string Type de processus. Présent uniquement dans les conteneurs de l'application en cours d'exécution.
space_name string Nom lisible de l'espace dans lequel l'application est déployée.
uris string[] Identique à application_uris

Champs non renseignés

Certains champs de VCAP_APPLICATION dans Cloud Foundry ne sont actuellement pas compatibles avec Kf.

Hormis les champs spécifiques à Cloud Foundry et obsolètes (cf_api, host, users), les champs non acceptés dans Kf sont les suivants :

  • application_version (identique à version)
  • organization_id
  • organization_name
  • space_id
  • start (identique à started_at)
  • started_at_timestamp (identique à state_timestamp)