O ambiente de execução é o ambiente em que os aplicativos são executados.
| Aplicativos de buildpack | Aplicativos de imagens de contêiner | |
|---|---|---|
| Bibliotecas do sistema | Fornecido pela pilha | Fornecido no contêiner |
| Acesso à rede | Acesso total pelo arquivo secundário do Envoy | Acesso total pelo arquivo secundário do Envoy |
| Sistema de arquivos | Armazenamento temporário | Armazenamento temporário |
| Ambiente de execução de linguagem | Fornecido pela pilha ou pelo buildpack | Incorporado ao contêiner |
| Usuário | Especificado pela pilha | Especificado no contêiner |
| Mecanismo de isolamento | Pod do Kubernetes | Pod do Kubernetes |
| DNS | Fornecido pelo Kubernetes | Fornecido pelo Kubernetes |
Variáveis de ambiente
As variáveis são injetadas no aplicativo no ambiente de execução pelo Kubernetes. As variáveis são adicionadas com base na ordem abaixo, em que os valores posteriores substituem os anteriores com o mesmo nome:
- Space (definido pelos administradores)
- Aplicativo (definido pelos desenvolvedores)
- Sistema (definido pelo Kf)
O Kf fornece as seguintes variáveis de ambiente do sistema:
| Variável | Finalidade |
|---|---|
CF_INSTANCE_ADDR |
O IP:PORT visível para o cluster da instância do aplicativo. |
CF_INSTANCE_GUID |
O UUID da instância do aplicativo. |
INSTANCE_GUID |
Alias de CF_INSTANCE_GUID. |
CF_INSTANCE_INDEX |
O número de índice da instância do aplicativo, que será SEMPRE 0. |
INSTANCE_INDEX |
Alias de CF_INSTANCE_INDEX. |
CF_INSTANCE_IP |
O IP visível para o cluster da instância do aplicativo. |
CF_INSTANCE_INTERNAL_IP |
Alias de CF_INSTANCE_IP |
VCAP_APP_HOST |
Alias de CF_INSTANCE_IP |
CF_INSTANCE_PORT |
A porta visível para o cluster da instância do aplicativo. No Kf, é o mesmo que PORT. |
DATABASE_URL |
O primeiro URI encontrado em uma credencial VCAP_SERVICES. |
LANG |
Obrigatório pelos buildpacks para garantir uma ordem de carregamento de script consistente. |
MEMORY_LIMIT |
A quantidade máxima de memória em MB que o aplicativo pode consumir. |
PORT |
A porta em que o aplicativo precisa detectar solicitações. |
VCAP_APP_PORT |
Alias de PORT. |
VCAP_APPLICATION |
Uma estrutura JSON que contém metadados do aplicativo. |
VCAP_SERVICES |
Uma estrutura JSON que especifica serviços vinculados. |
As credenciais dos serviços vinculados são injetadas nos aplicativos pela variável de ambiente VCAP_SERVICES. A variável é um objeto JSON válido com a estrutura a seguir.
VCAPServices
Um objeto JSON em que as chaves são rótulos de serviços e os valores são uma matriz de VCAPService. A matriz representa todos os serviços vinculados
com esse rótulo.
Os serviços fornecidos pelo usuário
são colocados no rótulo user-provided.
Exemplo
{
"mysql": [...],
"postgresql": [...],
"user-provided": [...]
}
VCAPService
Esse tipo representa uma única instância de serviço vinculada.
Exemplo
{
"binding_name": string,
"instance_name": string,
"name": string,
"label": string,
"tags": string[],
"plan": string,
"credentials": object
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
binding_name |
string |
O nome atribuído à vinculação de serviço pelo usuário. |
instance_name |
string |
O nome atribuído à instância de serviço pelo usuário. |
name |
string |
O binding_name, se houver. Caso contrário, instance_name. |
label |
string |
O nome da oferta de serviço. |
tags |
string[] |
Uma matriz de strings que um aplicativo usa para identificar uma instância de serviço. |
plan |
string[] |
O plano de serviços selecionado quando a instância de serviço foi criada. |
credentials |
object |
As credenciais específicas do serviço necessárias para acessar a instância de serviço. |
VCAP_APPLICATION
A variável de ambiente VCAP_APPLICATION é um objeto JSON que contém metadados sobre o aplicativo.
Exemplo
{
"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"]
}
Campos
| Campo | Tipo | Descrição |
|---|---|---|
application_id |
string |
O GUID que identifica o aplicativo. |
application_name |
string |
O nome atribuído ao aplicativo quando ele foi enviado. |
application_uris |
string[] |
Os URIs atribuídos ao aplicativo. |
limits |
object |
Os limites do espaço em disco e da memória permitidos para o aplicativo. Os limites de memória e espaço em disco são fornecidos quando o aplicativo é implantado, seja na linha de comando, seja no manifesto do app. Os limites de disco e memória são representados como números inteiros, com uma unidade presumida de MB. |
name |
string |
Idêntico a application_name. |
process_id |
string |
O UID que identifica o processo. Presente apenas na execução de contêineres de aplicativos. |
process_type |
string |
O tipo de processo. Presente apenas na execução de contêineres de aplicativos. |
space_name |
string |
O nome legível por humanos do Space em que o aplicativo está implantado. |
uris |
string[] |
Idêntico a application_uris. |
Campos ausentes
Alguns campos em VCAP_APPLICATION que estão no Cloud Foundry atualmente não são compatíveis com o Kf.
Além dos campos específicos do CF e descontinuados (cf_api, host, users), os campos indisponíveis no Kf são:
application_version(idêntico aversion)organization_idorganization_namespace_idstart(idêntico astarted_at)started_at_timestamp(idêntico astate_timestamp)