Os manifestos de apps oferecem aos programadores uma forma de registar o ambiente de execução da respetiva app de forma declarativa. Permitem que as apps sejam implementadas de forma consistente e reproduzível.
Formato
Os manifestos são ficheiros YAML no diretório raiz da app. Têm de ter o nome manifest.yml
ou manifest.yaml
.
Os manifestos de apps Kf podem ter um único elemento de nível superior: applications
.
O elemento applications
pode conter uma ou mais entradas de aplicações.
Campos da candidatura
Os seguintes campos são válidos para objetos em applications
:
Campo | Tipo | Descrição |
---|---|---|
name |
string |
O nome da aplicação. O nome da app deve ser composto por carateres alfanuméricos em minúsculas e travessões. Não pode começar com um traço. |
path |
string |
O caminho para a origem da app. O valor predefinido é o diretório do manifesto. |
buildpacks |
string[] |
Uma lista de buildpacks a aplicar à app. |
stack |
string |
Imagem base a usar para apps criadas com um buildpack. |
docker |
object |
Um objeto Docker. Consulte a secção Campos do Docker para mais informações. |
env |
map |
Pares de chave/valor a usar como variáveis de ambiente para a app e a compilação. |
services |
string[] |
Uma lista de nomes de instâncias de serviços a associar automaticamente à app. |
disk_quota |
quantity |
A quantidade de disco que a aplicação deve receber. A predefinição é 1 GiB. |
memory |
quantity |
A quantidade de RAM a disponibilizar à app. O valor predefinido é 1 GiB. |
cpu † |
quantity |
A quantidade de CPU a fornecer à aplicação. A predefinição é 0,1 (1/10 de uma CPU). |
instances |
int |
O número de instâncias da app a executar. A predefinição é 1. |
routes |
object |
Uma lista de rotas nas quais a app deve ouvir. Consulte a secção Campos de trajeto para mais informações. |
no-route |
boolean |
Se estiver definida como verdadeira, a aplicação não é encaminhável. |
random-route |
boolean |
Se estiver definida como verdadeira, a app recebe um trajeto aleatório. |
timeout |
int |
O número de segundos a aguardar até que a app fique em bom estado. |
health-check-type |
string |
O tipo de verificação de estado a usar: port , process , none ou http . Predefinição: port |
health-check-http-endpoint |
string |
O ponto final a segmentar como parte da verificação de funcionamento. Só é válido se health-check-type for http . |
command |
string |
O comando que inicia a app. Se for fornecido, é transmitido ao ponto de entrada do contentor. |
entrypoint † |
string |
Substitui o ponto de entrada do contentor de apps. |
args † |
string[] |
Substitui os argumentos do contentor de apps. |
ports † |
object |
Uma lista de portas a expor no contentor. Se for fornecida, a primeira entrada nesta lista é usada como a porta predefinida. |
† Exclusivo do Kf
Campos do Docker
Os seguintes campos são válidos para objetos application.docker
:
Campo | Tipo | Descrição |
---|---|---|
image |
string |
A imagem do Docker a usar. |
Campos de trajeto
Os seguintes campos são válidos para objetos application.routes
:
Campo | Tipo | Descrição |
---|---|---|
route |
string |
Um caminho para a app, incluindo o nome do anfitrião, o domínio e o caminho. |
appPort |
int |
(Opcional) Uma porta personalizada na app para a qual a rota envia tráfego. |
Campos de portas
Os seguintes campos são válidos para objetos application.ports
:
Campo | Tipo | Descrição |
---|---|---|
port |
int |
A porta a expor no contentor da app. |
protocol |
string |
O protocolo da porta a expor. Tem de ser tcp , http ou http2 . Predefinição: tcp |
Exemplos
App minimalista
Este é um manifesto básico que cria uma app detetando automaticamente o pacote de compilação com base na origem carregada e implementa uma instância da mesma.
---
applications:
- name: my-minimal-application
App simples
Este é um manifesto completo para uma app Java mais tradicional.
---
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
O Kf pode implementar contentores Docker, bem como apps implementadas por manifesto.
Estas apps Docker TÊM de ouvir a variável de 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 com várias portas
Esta app tem várias portas para expor uma consola de administração, um Website e um servidor 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
Tipos de verificações de funcionamento
O Kf suporta três tipos de verificações de estado de funcionamento diferentes:
port
(predefinição)http
process
(ounone
)
port
e http
defina uma sondagem de prontidão e atividade do Kubernetes
que garante que a aplicação está pronta antes de lhe enviar tráfego.
A verificação de funcionamento port
garante que a porta encontrada em $PORT
está a ser
monitorizada. Nos bastidores, o Kf usa uma sonda TCP.
A verificação de funcionamento http
vai usar o valor configurado em
health-check-http-endpoint
para verificar o funcionamento da aplicação. Nos bastidores
O Kf usa uma sondagem HTTP.
Uma verificação de estado process
verifica apenas se o processo em execução no contentor está ativo. NÃO define uma sondagem de prontidão ou atividade do Kubernetes.
Diferenças conhecidas
Seguem-se as diferenças conhecidas entre os manifestos Kf e os manifestos CF:
- O Kf não suporta campos de manifesto do CF descontinuados. Isto inclui todos os campos ao nível da raiz do manifesto (exceto aplicações) e campos de encaminhamento.
- O Kf não suporta os seguintes campos do manifesto v2:
docker.username
- O Kf não suporta a deteção automática de portas para contentores Docker.