I file manifest delle app consentono agli sviluppatori di registrare l'ambiente di esecuzione dell'app in modo dichiarativo. Consentono un deployment coerente e riproducibile delle app.
Formato
I manifest sono file YAML nella directory principale dell'app. Devo essere denominati manifest.yml
o manifest.yaml
.
I file manifest dell'app Kf possono avere un solo elemento di primo livello: applications
.
L'elemento applications
può contenere una o più voci dell'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 manifest. |
buildpacks
|
string[]
|
Un elenco di buildpack da applicare all'app. |
stack
|
string
|
Immagine di base da usare per le app create con un buildpack. |
docker
|
object
|
Un oggetto Docker. Consulta la sezione Campi Docker per ulteriori informazioni. |
env
|
map
|
Coppie chiave/valore da utilizzare come variabili di ambiente per l'app e la build. |
services
|
string[]
|
Un elenco di nomi di istanze di servizio da associare automaticamente all'app. |
disk_quota
|
quantity
|
La quantità di disco che dovrebbe ricevere l'applicazione. Il valore predefinito è 1 GiB. |
memory
|
quantity
|
La quantità di RAM per fornire l'app. Il valore predefinito è 1 GiB. |
cpu †
|
quantity
|
La quantità di CPU da utilizzare per fornire l'applicazione. Il valore predefinito è 100 m (1/10 di una CPU). |
instances
|
int
|
Il numero di istanze dell'app da eseguire. Il valore predefinito è 1. |
routes
|
object
|
Un elenco di route che l'app deve ascoltare. Per ulteriori informazioni, consulta la sezione Campi route. |
no-route
|
boolean
|
Se impostato su true, l'applicazione non sarà instradabile. |
random-route
|
boolean
|
Se il criterio viene impostato su true, all'app viene assegnata una route casuale. |
timeout
|
int
|
Il numero di secondi di attesa prima che l'app si integri. |
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 da scegliere come target
nell'ambito del controllo di integrità. Valido solo se health-check-type è http . |
command
|
string
|
Il comando che avvia l'app. Se fornito, questo viene passato al punto di ingresso del container. |
entrypoint †
|
string
|
Esegue l'override del punto di ingresso del container dell'app. |
args †
|
string[]
|
Esegue l'override degli argomenti del contenitore dell'app. |
ports †
|
object
|
Un elenco di porte da esporre nel container. Se specificata, la prima voce in questo elenco viene utilizzata come porta predefinita. |
metadata
|
object
|
Tag aggiuntivi per le applicazioni e le risorse sottostanti. |
† Unico per Kf
Campi Docker
I seguenti campi sono validi per application.docker
oggetti:
Campo | Tipo | Descrizione |
---|---|---|
image |
string |
L'immagine Docker da utilizzare. |
Campi di route
I seguenti campi sono validi per application.routes
oggetti:
Campo | Tipo | Descrizione |
---|---|---|
route |
string |
Un percorso verso l'app, inclusi nome host, dominio e percorso. |
appPort |
int |
(Facoltativo) Una porta personalizzata nell'app a cui la route invierà il traffico. |
Campi porta
I seguenti campi sono validi per application.ports
oggetti:
Campo | Tipo | Descrizione |
---|---|---|
port |
int |
La porta da esporre sul container dell'app. |
protocol |
string |
Il protocollo della porta da esporre. Deve essere tcp , http o http2 . Valore predefinito: tcp |
Campi dei metadati
I seguenti campi sono validi per application.metadata
oggetti:
Campo | Tipo | Descrizione |
---|---|---|
labels
|
string -> string map
|
le etichette da aggiungere all'app e i pod dell'applicazione sottostanti. |
annotations
|
string -> string map
|
annotazioni da aggiungere all'app e ai pod delle applicazioni sottostanti. |
Esempi
App minima
Si tratta di un manifest essenziale che crea un'app rilevando automaticamente il buildpack in base all'origine caricata ed esegue il deployment di un'istanza.
---
applications:
- name: my-minimal-application
App semplice
Si tratta di 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
# Increase default CPU from .1 to .2
cpu: 200m
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 dei container Docker e dell'app di cui è stato eseguito il manifest.
Queste app Docker DEVONO essere in ascolto sulla 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
# 2 CPUs
cpu: 2000m
instances: 1
routes:
- route: white-label-app.mycompany.com
App con più porte
Questa app dispone di 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
impostano un probe di idoneità e di attività di Kubernetes
che garantisce che l'applicazione sia pronta prima di inviarle il traffico.
Il controllo di integrità port
garantirà che la porta trovata in $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. Dietro le quinte
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 del manifest CF ritirati. Sono inclusi tutti i campi a livello della directory principale del manifest (diversi dalle applicazioni) e i campi di routing.
- Kf non supporta i seguenti campi manifest v2:
docker.username
- Kf non supporta il rilevamento automatico delle porte per i container Docker.