Documentation
¶
Overview ¶
Package config carrega e valida a configuracao do processo a partir do ambiente.
Fica fora da arvore descrita na secao 36 do plano, que nao previu um pacote para isso. A alternativa seria espalhar os os.Getenv por cmd/ e infrastructure/; um ponto unico de leitura e validacao vale o desvio, e a regra 7 pede que decisoes assim sejam explicitas em vez de silenciosas.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AmbienteDasTasks ¶
AmbienteDasTasks monta o ambiente que cada passo local recebe.
A task NAO herda o ambiente do orquestrador. A razao e concreta: o processo do Brevis carrega BREVIS_DATABASE_URL com usuario e senha do Postgres, e um workflow e um comando arbitrario escrito por outra pessoa — herdar por padrao entregaria a credencial do banco a todo passo de todo pipeline.
O que a task precisa, entao, e declarado: `BREVIS_TASK_ENV=GOOGLE_PROJECT_ID,STAGE` repassa essas duas do ambiente do processo. `NOME=valor` define um literal. `*` repassa tudo MENOS as BREVIS_* — o curinga existe para quem precisa, e a excecao existe porque a configuracao do orquestrador nunca e trabalho da task.
PATH e HOME entram sempre: sem PATH nenhum comando resolve, e o erro seria um "not found" que nao explica nada. Funcao de pacote e nao metodo: `brevis run` roda sem banco e por isso sem Config — mas precisa do mesmo ambiente.
func TaskEnvDoAmbiente ¶
func TaskEnvDoAmbiente() []string
TaskEnvDoAmbiente le BREVIS_TASK_ENV para quem nao carregou a Config inteira.
Types ¶
type Config ¶
type Config struct {
Env string
HTTPAddr string
DatabaseURL string
LogLevel string
ShutdownTimeout time.Duration
// BrandFile aponta o YAML de identidade visual. Opcional: sem ele a
// interface usa a identidade padrao.
BrandFile string
// TaskEnv lista o que o processo repassa para as tasks locais. Ver
// AmbienteDasTasks — o padrao NAO herda o ambiente, e isso e deliberado.
TaskEnv []string
// SlackWebhook recebe o alerta de falha definitiva. Vazio = ninguem e
// avisado. Vem do ambiente, e nunca do YAML: quem tem a URL posta no canal
// como se fosse a plataforma.
SlackWebhook string
// Auth e a credencial de operador que fecha a interface. Ver internal/auth.
Auth auth.Credencial
// UIURL monta o link da execucao no alerta. Sem ela o alerta diz o que
// falhou, mas obriga quem le a procurar a run na mao.
UIURL string
// Pods parametriza a execucao em Kubernetes. Sao decisoes da INSTALACAO —
// com que identidade e credenciais os pods sobem —, e por isso vem do
// ambiente e nao do YAML do workflow: um pipeline nao deve poder escolher a
// service account com que roda.
Pods PodsConfig
}
Config e o estado imutavel derivado do ambiente. Tudo que o processo precisa para subir esta aqui — nada le o ambiente depois do boot.
type PodsConfig ¶
type PodsConfig struct {
// Modo: auto (usa pods quando ha cluster), on (exige) ou off (nunca).
Modo string
Namespace string
ServiceAccount string
PullSecrets []string
EnvFromSecrets []string
EnvFromConfigMaps []string
// SecretsPermitidos limita o que um `secrets:` de YAML pode citar. Vazia
// nega tudo: a instalacao decide quais segredos existem para workflows, e
// o YAML decide qual passo recebe cada um.
SecretsPermitidos []string
// CredencialPVC e CredencialPath montam o volume onde o SDK guarda a
// credencial rotacionada. Sem o PVC, nada muda.
CredencialPVC string
CredencialPath string
NodeSelector map[string]string
// Toleracoes no formato "chave=valor:efeito", separadas por virgula. O pool
// arm64 da Zarv tem taint, e sem toleracao o pod da task fica Pending para
// sempre — sem erro, so parado.
Toleracoes []Toleracao
ManterEmFalha bool
}