Tempo de execução da app

O tempo de execução da app é o ambiente em que as apps são executadas.

Apps de buildpack Apps de imagens de contentores
Bibliotecas do sistema Fornecido pelo Stack Fornecido no contentor
Acesso à rede Acesso total através do sidecar do Envoy Acesso total através do sidecar do Envoy
Sistema de ficheiros Armazenamento temporário Armazenamento temporário
Tempo de execução de idioma Fornecido pela pilha ou pelo Buildpack Integrado no contentor
Utilizador Especificado pelo empilhamento Especificado no contentor
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 na app em tempo de execução pelo Kubernetes. As variáveis são adicionadas com base na seguinte ordem, em que os valores posteriores substituem os anteriores com o mesmo nome:

  1. Espaço (definido pelos administradores)
  2. App (definida pelos programadores)
  3. Sistema (definido por Kf)

O Kf fornece as seguintes variáveis de ambiente do sistema:

Variável Finalidade
CF_INSTANCE_ADDR O IP:PORT visível do cluster da instância da app.
CF_INSTANCE_GUID O UUID da instância da app.
INSTANCE_GUID Alias de CF_INSTANCE_GUID.
CF_INSTANCE_INDEX O número de índice da instância da app. Este valor é SEMPRE 0.
INSTANCE_INDEX Alias de CF_INSTANCE_INDEX.
CF_INSTANCE_IP O IP visível do cluster da instância da app.
CF_INSTANCE_INTERNAL_IP Alias de CF_INSTANCE_IP
VCAP_APP_HOST Alias de CF_INSTANCE_IP
CF_INSTANCE_PORT A porta visível do cluster da instância da app. Em Kf, isto é o mesmo que PORT.
DATABASE_URL O primeiro URI encontrado numa credencial VCAP_SERVICES.
LANG Obrigatório pelos Buildpacks para garantir uma ordem de carregamento de scripts consistente.
MEMORY_LIMIT A quantidade máxima de memória em MB que a app pode consumir.
PORT A porta na qual a app deve ouvir os pedidos.
VCAP_APP_PORT Alias de PORT.
VCAP_APPLICATION Uma estrutura JSON com metadados da app.
VCAP_SERVICES Uma estrutura JSON que especifica os serviços associados.

As credenciais de serviço dos serviços associados são injetadas nas apps através da variável de ambiente VCAP_SERVICES. A variável é um objeto JSON válido com a seguinte estrutura.

VCAPServices

Um objeto JSON em que as chaves são etiquetas de serviço e os valores são uma matriz de VCAPService. A matriz representa todos os serviços associados com essa etiqueta. Os serviços fornecidos pelo utilizador são colocados sob a etiqueta user-provided.

Exemplo

{
  "mysql": [...],
  "postgresql": [...],
  "user-provided": [...]
}

VCAPService

Este tipo representa uma única instância de serviço associada.

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 à associação de serviços pelo utilizador.
instance_name string O nome atribuído à instância do serviço pelo utilizador.
name string O binding_name, se existir; caso contrário, o instance_name.
label string O nome da oferta de serviços.
tags string[] Uma matriz de strings que uma app pode usar para identificar uma instância de serviço.
plan string[] O plano de serviço selecionado quando a instância de serviço foi criada.
credentials object As credenciais específicas do serviço necessárias para aceder à instância de serviço.

VCAP_APPLICATION

A variável de ambiente VCAP_APPLICATION é um objeto JSON que contém metadados sobre a app.

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 a app.
application_name string O nome atribuído à app quando foi enviada.
application_uris string[] Os URIs atribuídos à app.
limits object Os limites de espaço no disco e memória permitidos à app. Os limites de memória e espaço no disco são fornecidos quando a app é implementada, na linha de comandos ou no manifesto da app. Os limites de disco e memória são representados como números inteiros, com uma unidade assumida de MB.
name string Idêntico a application_name.
process_id string O UID que identifica o processo. Só está presente em contentores de apps em execução.
process_type string O tipo de processo. Só está presente em contentores de apps em execução.
space_name string O nome legível do espaço onde a app está implementada.
uris string[] Idêntico a application_uris.

Campos em falta

Alguns campos em VCAP_APPLICATION que estão no Cloud Foundry não são atualmente suportados no Kf.

Além dos campos específicos da CF e descontinuados (cf_api, host, users), os campos que não são suportados no 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)