Ambiente de execução do app

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 de ambiente são injetadas no aplicativo no tempo 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:

  1. Space (definido pelos administradores)
  2. Aplicativo (definido pelos desenvolvedores)
  3. 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, isso é 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ço 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 aplicativo. 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 do Space legível por humanos 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 Kf.

Além dos campos específicos do CF e descontinuados (cf_api, host, users), os campos incompatíveis com Kf são:

  • application_version (idêntico a version)
  • organization_id
  • organization_name
  • space_id
  • start (idêntico a started_at)
  • started_at_timestamp (idêntico a state_timestamp)