Os manifestos do app servem para que os desenvolvedores registrem o ambiente de execução do aplicativo de maneira declarativa. Eles permitem que os aplicativos sejam implantados de forma consistente e reproduzível.
Format
Os manifestos são arquivos YAML no diretório raiz do aplicativo. Eles precisam ser chamados de manifest.yml
ou manifest.yaml
.
Os manifestos do app do Kf têm um único elemento de nível superior: applications
.
O elemento applications
contém uma ou mais entradas de aplicativo.
Campos do aplicativo
Os campos a seguir são válidos para objetos applications
:
Campo | Tipo | Descrição |
---|---|---|
name |
string |
O nome do aplicativo. O nome do aplicativo precisa conter caracteres alfanuméricos minúsculos e traços. Não é possível começar com um traço. |
path |
string |
O caminho para a origem do aplicativo. O padrão é o diretório do manifesto. |
buildpacks |
string[] |
Uma lista de pacotes de versão para aplicar ao aplicativo. |
stack |
string |
Imagem base a ser usada para aplicativos criados com um pacote de versão. |
docker |
object |
Um objeto Docker. Consulte a seção Campos do Docker para mais informações. |
env |
map |
Os pares de chave-valor a serem usados como variáveis de ambiente do aplicativo e da versão. |
services |
string[] |
Uma lista de nomes de instâncias de serviço para vincular automaticamente ao aplicativo. |
disk_quota |
quantity |
A quantidade de disco que o aplicativo precisa receber. O padrão é 1GiB. |
memory |
quantity |
A quantidade de RAM para fornecer o aplicativo. O padrão é 1 GiB. |
cpu † |
quantity |
A quantidade de CPU para fornecer o aplicativo. O padrão é 0,1 (1/10 de CPU). |
instances |
int |
O número de instâncias do aplicativo a serem executadas. O padrão é 1. |
routes |
object |
Uma lista de rotas que o aplicativo precisa detectar. Consulte a seção Campos de rota para saber mais. |
no-route |
boolean |
Se definido como verdadeiro, o aplicativo não será roteável. |
random-route |
boolean |
Se definido como verdadeiro, o aplicativo receberá uma rota aleatória. |
timeout |
int |
O número de segundos para aguardar a integridade do aplicativo. |
health-check-type |
string |
O tipo de verificação de integridade a usar port , process , none ou http . Padrão: port |
health-check-http-endpoint |
string |
O endpoint a ser segmentado como parte da verificação de integridade. Válido apenas se health-check-type for http . |
command |
string |
O comando que inicia o aplicativo. Se fornecido, será passado para o ponto de entrada do contêiner. |
entrypoint † |
string |
Substitui o ponto de entrada do contêiner do aplicativo. |
args † |
string[] |
Substitui os argumentos do contêiner do aplicativo. |
ports † |
object |
Uma lista de portas a serem expostas no contêiner. Se fornecida, a primeira entrada nesta lista será usada como a porta padrão. |
† Exclusivo para Kf
Campos do Docker
Os campos a seguir são válidos para objetos application.docker
:
Campo | Tipo | Descrição |
---|---|---|
image |
string |
A imagem do Docker a ser usada. |
Campos de rota
Os campos a seguir são válidos para objetos application.routes
:
Campo | Tipo | Descrição |
---|---|---|
route |
string |
Uma rota para o aplicativo, incluindo nome do host, domínio e caminho. |
appPort |
int |
(Opcional) Uma porta personalizada no aplicativo para onde a rota enviará tráfego. |
Campos de porta
Os campos a seguir são válidos para objetos application.ports
:
Campo | Tipo | Descrição |
---|---|---|
port |
int |
A porta a ser exposta no contêiner do aplicativo. |
protocol |
string |
O protocolo da porta a ser exposta. Precisa ser tcp , http ou http2 . Padrão: tcp |
Exemplos
Aplicativo mínimo
Esse é um manifesto básico que criará um aplicativo detectando automaticamente o pacote de versão com base na fonte enviada e implantará uma instância dele.
---
applications:
- name: my-minimal-application
Aplicativo simples
Este é um manifesto completo para um aplicativo 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
Aplicativo Docker
O Kf implanta contêineres do Docker, bem como o aplicativo implantado pelo manifesto. Esses aplicativos do Docker PRECISAM detectar 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
Aplicativo com várias portas
Este aplicativo tem várias portas para expor um Admin Console, um site 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ção de integridade
O Kf é compatível com três tipos diferentes de verificação de integridade:
port
(padrão)http
process
(ounone
)
port
e http
definem uma sondagem de prontidão e atividade do Kubernetes que garante ao aplicativo estar pronto antes de enviar tráfego para ele.
A verificação de integridade port
garante que a porta encontrada em $PORT
seja detectada. Em segundo plano, o Kf usa uma sondagem TCP.
A verificação de integridade http
usará o valor configurado em health-check-http-endpoint
para verificar a integridade do aplicativo. Em segundo plano, o Kf usa uma sondagem HTTP.
Uma verificação de integridade process
só verifica se o processo em execução no contêiner está ativo. Ela NÃO define uma sondagem de prontidão ou ativação do Kubernetes.
Diferenças conhecidas
Veja a seguir as diferenças conhecidas entre os manifestos Kf e FC:
- O Kf não é compatível com campos de manifesto de CF obsoletos. Isso inclui todos os campos no nível raiz do manifesto (exceto aplicativos) e campos de roteamento.
- O Kf não é compatível com os seguintes campos de manifesto v2:
docker.username
- O Kf não é compatível com a detecção automática de portas para contêineres do Docker.