I manifest delle app consentono agli sviluppatori di registrare l'ambiente di esecuzione della propria app in modo dichiarativo. Consentono di eseguire il deployment delle app in modo coerente e riproducibile.
Formato
I manifest sono file YAML nella directory principale dell'app. Devono essere denominati manifest.yml
o manifest.yaml
.
I manifest delle app Kf possono avere un solo elemento di primo livello: applications
.
L'elemento applications
può contenere una o più voci di applicazione.
Campi di applicazione
I seguenti campi sono validi per gli oggetti in applications
:
Campo | Tipo | Descrizione |
---|---|---|
name |
string |
Il nome dell'applicazione. Il nome dell'app deve essere composto da caratteri alfanumerici minuscoli e trattini. Non deve iniziare con un trattino. |
path |
string |
Il percorso dell'origine dell'app. Il valore predefinito è la directory del file manifest. |
buildpacks |
string[] |
Un elenco di buildpack da applicare all'app. |
stack |
string |
Immagine di base da utilizzare per le app create con un buildpack. |
docker |
object |
Un oggetto Docker. Per ulteriori informazioni, consulta la sezione Campi Docker. |
env |
map |
Coppie chiave/valore da utilizzare come variabili di ambiente per l'app e la compilazione. |
services |
string[] |
Un elenco di nomi di istanze di servizio da associare automaticamente all'app. |
disk_quota |
quantity |
La quantità di spazio su disco che l'applicazione deve ottenere. Il valore predefinito è 1 GiB. |
memory |
quantity |
La quantità di RAM da fornire all'app. Il valore predefinito è 1 GB. |
cpu † |
quantity |
La quantità di CPU da fornire all'applicazione. Il valore predefinito è 0,1 (1/10 di una CPU). |
instances |
int |
Il numero di istanze dell'app da eseguire. Il valore predefinito è 1. |
routes |
object |
Un elenco di percorsi su cui l'app deve ascoltare. Per saperne di più, consulta la sezione Campi percorso. |
no-route |
boolean |
Se impostato su true, l'applicazione non sarà instradabile. |
random-route |
boolean |
Se è impostato su true, all'app verrà assegnato un percorso casuale. |
timeout |
int |
Il numero di secondi di attesa prima che l'app diventi stabile. |
health-check-type |
string |
Il tipo di controllo di integrità da utilizzare: port , process , none o http . Valore predefinito: port |
health-check-http-endpoint |
string |
L'endpoint di destinazione nell'ambito del controllo di integrità. Valido solo se health-check-type è http . |
command |
string |
Il comando che avvia l'app. Se specificato, verrà passato all'entry point del container. |
entrypoint † |
string |
Esegue l'override dell'entrypoint del contenitore dell'app. |
args † |
string[] |
Sostituisce gli argomenti del contenitore dell'app. |
ports † |
object |
Un elenco di porte da esporre sul contenitore. Se specificato, la prima voce in questo elenco viene utilizzata come porta predefinita. |
† Unica per Kf
Campi Docker
I seguenti campi sono validi per gli oggetti application.docker
:
Campo | Tipo | Descrizione |
---|---|---|
image |
string |
L'immagine Docker da utilizzare. |
Campi Route
I seguenti campi sono validi per gli oggetti application.routes
:
Campo | Tipo | Descrizione |
---|---|---|
route |
string |
Un percorso per l'app che include nome host, dominio e percorso. |
appPort |
int |
(Facoltativo) Una porta personalizzata nell'app a cui il percorso invierà il traffico. |
Campi porta
I seguenti campi sono validi per gli oggetti application.ports
:
Campo | Tipo | Descrizione |
---|---|---|
port |
int |
La porta da esporre nel contenitore dell'app. |
protocol |
string |
Il protocollo della porta da esporre. Deve essere tcp , http o http2 . Valore predefinito: tcp |
Esempi
App minima
Si tratta di un manifest di base che creerà un'app rilevando automaticamente il buildpack in base al codice sorgente caricato e ne eseguirà il deployment di un'istanza.
---
applications:
- name: my-minimal-application
App semplice
Questo è un manifest completo per un'app Java più tradizionale.
---
applications:
- name: account-manager
# only upload src/ on push
path: src
# use the Java buildpack
buildpacks:
- java
env:
# manually configure the buildpack's Java version
BP_JAVA_VERSION: 8
ENVIRONMENT: PRODUCTION
# use less disk and memory than default
disk_quota: 512M
memory: 512M
# bump up the CPU
cpu: 0.2
instances: 3
# make the app listen on three routes
routes:
- route: accounts.mycompany.com
- route: accounts.datacenter.mycompany.internal
- route: mycompany.com/accounts
# set up a longer timeout and custom endpoint to validate
# when the app comes up
timeout: 300
health-check-type: http
health-check-http-endpoint: /healthz
# attach two services by name
services:
- customer-database
- web-cache
App Docker
Kf può eseguire il deployment di container Docker e di app di cui è stato eseguito il deployment del manifest.
Queste app Docker DEVONO ascoltare la variabile di ambiente PORT
.
---
applications:
- name: white-label-app
# use a pre-built docker image (must listen on $PORT)
docker:
image: gcr.io/my-company/white-label-app:123
env:
# add additional environment variables
ENVIRONMENT: PRODUCTION
disk_quota: 1G
memory: 1G
cpu: 2
instances: 1
routes:
- route: white-label-app.mycompany.com
App con più porte
Questa app ha più porte per esporre una console di amministrazione, un sito web e un server SMTP.
---
applications:
- name: b2b-server
ports:
- port: 8080
protocol: http
- port: 9090
protocol: http
- port: 2525
protocol: tcp
routes:
- route: b2b-admin.mycompany.com
appPort: 9090
- route: b2b.mycompany.com
# gets the default (first) port
Tipi di controllo di integrità
Kf supporta tre diversi tipi di controllo di integrità:
port
(valore predefinito)http
process
(onone
)
port
e http
hanno impostato un probe di attività e idoneità Kubernetes che garantisce che l'applicazione sia pronta prima di inviare il traffico.
Il controllo di integrità port
garantisce che la porta trovata all'indirizzo $PORT
sia in ascolto. Dietro le quinte, Kf utilizza un probe TCP.
Il controllo di integrità http
utilizzerà il valore configurato in
health-check-http-endpoint
per controllare l'integrità dell'applicazione. Al suo interno,
Kf utilizza un probe HTTP.
Un controllo di integrità process
verifica solo se il processo in esecuzione sul
container è attivo. NON imposta un probe di idoneità o di attività Kubernetes.
Differenze note
Di seguito sono riportate le differenze note tra i manifest Kf e i manifest CF:
- Kf non supporta i campi manifest di CF ritirati. Sono inclusi tutti i campi a livello di radice del manifest (diversi dalle applicazioni) e i campi di routing.
- In Kf non è supportato i seguenti campi manifest v2:
docker.username
- Kf non supporta il rilevamento automatico delle porte per i container Docker.