Runtime di un'app

Il runtime delle app è l'ambiente in cui vengono eseguite le app.

App buildpack App di immagini container
Librerie di sistema Fornito dallo stack Fornito nel contenitore
Accesso alla rete Accesso completo tramite il sidecar Envoy Accesso completo tramite sidecar di Envoy
File system Archiviazione temporanea Spazio di archiviazione temporanea
Runtime della lingua Fornito dallo stack o dal buildpack Integrato nel contenitore
Utente Specificato dallo stack Specificato nel contenitore
Meccanismo di isolamento Pod Kubernetes Pod Kubernetes
DNS Fornito da Kubernetes Fornito da Kubernetes

Variabili di ambiente

Le variabili di ambiente vengono iniettate nell'app in fase di esecuzione da Kubernetes. Le variabili vengono aggiunte in base all'ordine seguente, in cui i valori successivi sostituiscono quelli precedenti con lo stesso nome:

  1. Spazio (impostato dagli amministratori)
  2. App (impostata dagli sviluppatori)
  3. Sistema (impostato da Kf)

Kf fornisce le seguenti variabili di ambiente di sistema:

Variabile Finalità
CF_INSTANCE_ADDR L'indirizzo IP:PORT visibile al cluster dell'istanza di app.
CF_INSTANCE_GUID L'UUID dell'istanza dell'app.
INSTANCE_GUID Alias di CF_INSTANCE_GUID.
CF_INSTANCE_INDEX Il numero di indice dell'istanza dell'app, che sarà SEMPRE 0.
INSTANCE_INDEX Alias di CF_INSTANCE_INDEX.
CF_INSTANCE_IP L'indirizzo IP visibile al cluster dell'istanza dell'app.
CF_INSTANCE_INTERNAL_IP Alias di CF_INSTANCE_IP
VCAP_APP_HOST Alias di CF_INSTANCE_IP
CF_INSTANCE_PORT La porta visibile al cluster dell'istanza dell'app. In Kf è lo stesso di PORT.
DATABASE_URL Il primo URI trovato in una credenziale VCAP_SERVICES.
LANG Obbligatorio per Buildpack per garantire un ordine di caricamento degli script coerente.
MEMORY_LIMIT La quantità massima di memoria in MB che l'app può consumare.
PORT La porta su cui l'app deve rimanere in ascolto delle richieste.
VCAP_APP_PORT Alias di PORT.
VCAP_APPLICATION Una struttura JSON contenente i metadati dell'app.
VCAP_SERVICES Una struttura JSON che specifica i servizi associati.

Le credenziali di servizio dai servizi associati vengono inserite nelle app tramite VCAP_SERVICES variabile di ambiente. La variabile è un oggetto JSON valido con la seguente struttura.

VCAPServices

Un oggetto JSON in cui le chiavi sono etichette di servizio e i valori sono un array di VCAPService. L'array rappresenta ogni servizio associato con quell'etichetta. I servizi forniti dall'utente vengono inseriti sotto l'etichetta user-provided.

Esempio

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

VCAPService

Questo tipo rappresenta una singola istanza di servizio associata.

Esempio

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

Campi

Campo Tipo Descrizione
binding_name string Il nome assegnato all'associazione del servizio dall'utente.
instance_name string Il nome assegnato all'istanza di servizio dall'utente.
name string binding_name, se esistente; altrimenti instance_name.
label string Il nome dell'offerta di servizi.
tags string[] Un array di stringhe che un'app può utilizzare per identificare un'istanza di servizio.
plan string[] Il piano di servizio selezionato al momento della creazione dell'istanza di servizio.
credentials object Le credenziali specifiche del servizio necessarie per accedere all'istanza di servizio.

VCAP_APPLICATION

La variabile di ambiente VCAP_APPLICATION è un oggetto JSON contenente i metadati dell'app.

Esempio

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

Campi

Campo Tipo Descrizione
application_id string Il GUID che identifica l'app.
application_name string Il nome assegnato all'app al momento del push.
application_uris string[] Gli URI assegnati all'app.
limits object I limiti allo spazio su disco e alla memoria consentiti all'App. I limiti di memoria e spazio su disco vengono forniti al momento del deployment dell'app, nella riga di comando o nel manifest dell'app. I limiti di disco e memoria sono rappresentati come numeri interi, con un'unità presunta in MB.
name string Identico a application_name.
process_id string L'UID che identifica il processo. Presente solo nei container di app in esecuzione.
process_type string Il tipo di processo. Presente solo nei container di app in esecuzione.
space_name string Il nome leggibile dello spazio in cui è stato eseguito il deployment dell'app.
uris string[] Identico a application_uris.

Campi mancanti

Alcuni campi in VCAP_APPLICATION che si trovano in Cloud Foundry non sono attualmente supportati in Kf.

Oltre ai campi specifici CF e obsoleti (cf_api, host, users), i campi non supportati in Kf sono:

  • application_version (identico a version)
  • organization_id
  • organization_name
  • space_id
  • start (identico a started_at)
  • started_at_timestamp (identico a state_timestamp)