Runtime di un'app

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

App Buildpack App immagini container
Librerie di sistema Fornito dall'elenco filtri Fornito nel contenitore
Accesso alla rete Accesso completo tramite sidecar Envoy Accesso completo tramite sidecar Envoy
File system Archiviazione temporanea Archiviazione temporanea
Runtime linguaggio Fornito da Stack o Buildpack Integrato nel container
Utente Specificato dall'elenco filtri Specificato nel container
Meccanismo di isolamento Pod Kubernetes Pod Kubernetes
DNS Fornito da Kubernetes Fornito da Kubernetes

Variabili di ambiente

Le variabili di ambiente vengono inserite nell'app in fase di runtime da Kubernetes. Le variabili vengono aggiunte in base al seguente ordine, dove 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'IP:PORT visibile nel cluster dell'istanza dell'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'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 nel cluster dell'istanza dell'app. In Kf equivale a PORT.
DATABASE_URL Il primo URI trovato in una credenziale VCAP_SERVICES.
LANG Richiesto da Buildpacks per garantire un ordine di caricamento degli script coerente.
MEMORY_LIMIT La quantità massima di memoria in MB che l'app può utilizzare.
PORT La porta su cui l'app deve rimanere in ascolto per le 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 dei servizi associati vengono inserite in Google Apps tramite la variabile di ambiente VCAP_SERVICES. 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 quella 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 associato.

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; in caso contrario, instance_name.
label string Il nome dell'offerta del servizio.
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 metadati relativi all'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 quando è stato inviato tramite push.
application_uris string[] Gli URI assegnati all'app.
limits object I limiti di spazio su disco e di memoria consentiti per l'app. I limiti di memoria e di spazio su disco vengono specificati quando viene eseguito il 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à prevista di 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.

A parte i campi specifici per CF e deprecati (cf_api, host, users), i campi non supportati in Kf sono:

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