Configuração de ambiente e secrets
Configuração de doze fatores, variáveis de ambiente e secrets do Docker
Configuração de ambiente e secrets é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Configuração de aplicativos de 12 fatores
A metodologia de aplicativos de 12 fatores recomenda armazenar a configuração em variáveis de ambiente, não no código nem em arquivos de configuração. Isso torna o aplicativo portátil entre desenvolvimento, homologação e produção, sem alterações no código.
os.Getenv
Leia as variáveis de ambiente com os.Getenv (retorna "" se não estiver definida) ou os.LookupEnv (retorna o valor e um booleano que indica a presença):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Carregando arquivos .env
Use github.com/joho/godotenv para carregar arquivos .env durante o desenvolvimento. Em produção, injete as variáveis de ambiente pela plataforma (Docker, Kubernetes ou a nuvem).
godotenv.Load() // loads .env if present; ignores error in prodConfiguração estruturada com envconfig
github.com/kelseyhightower/envconfig mapeia variáveis de ambiente para campos de estruturas, fazendo conversão de tipos e validação:
type Config struct {
Port int `envconfig:"PORT" default:"8080"`
DBUrl string `envconfig:"DB_URL" required:"true"`
LogLevel string `envconfig:"LOG_LEVEL" default:"info"`
}
var cfg Config
envconfig.MustProcess("", &cfg)Gerenciamento de segredos
Nunca armazene segredos (senhas, chaves de API, certificados TLS) em variáveis de ambiente em produção — eles aparecem nas listagens de processos e nos registros. Use um gerenciador de segredos: AWS Secrets Manager, HashiCorp Vault ou segredos do Kubernetes montados como arquivos.
Lendo segredos de arquivos
Monte os segredos como arquivos e leia-os na inicialização:
secret, err := os.ReadFile("/run/secrets/db_password")
if err != nil { log.Fatal(err) }
dsn := fmt.Sprintf("postgres://user:%s@host/db", strings.TrimSpace(string(secret)))Segredos do Kubernetes
No Kubernetes, monte os valores de segredos como variáveis de ambiente ou como arquivos em um volume. As montagens de arquivos são preferíveis, pois podem ser alternadas sem reiniciar o pod.
Sinalizadores de funcionalidades
Armazene os nomes dos sinalizadores de funcionalidades em variáveis de ambiente para alternâncias simples de ativação e desativação. Para regras complexas de sinalização (lançamentos para uma porcentagem de usuários, direcionamento), use um serviço dedicado de sinalização de funcionalidades.
Validação da configuração na inicialização
Valide toda a configuração obrigatória na inicialização e falhe rapidamente se algo estiver ausente ou inválido. É melhor falhar imediatamente do que falhar na primeira solicitação.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Configuração imutável
Trate a configuração como imutável após a inicialização. Se precisar de atualizações dinâmicas da configuração, use um serviço de sinalização de funcionalidades ou um repositório de configuração com um mecanismo de observação, não o recarregamento automático de variáveis de ambiente.
Configuração em testes
Use t.Setenv para definir variáveis de ambiente durante a duração de um teste. Isso é seguro para testes paralelos no Go 1.17+.
t.Setenv("PORT", "9090")
// test code here...Verificação rápida
Por que os segredos não devem ser armazenados em variáveis de ambiente em produção?
Recapitulação: configuração de ambiente e segredos
Pontos principais:
- Armazene a configuração em variáveis de ambiente; use godotenv para arquivos .env no desenvolvimento local
- Use envconfig para preencher estruturas tipadas com valores padrão
- Monte os segredos como arquivos; use o Vault ou o Secrets Manager em produção
- Valide toda a configuração na inicialização; falhe rapidamente se algo estiver ausente
Perguntas Frequentes
A aula “Configuração de ambiente e secrets” é grátis?
Sim — o texto completo de “Configuração de ambiente e secrets” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Configuração de ambiente e secrets”?
Configuração de doze fatores, variáveis de ambiente e secrets do Docker Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Configuração de ambiente e secrets”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Builds Docker em várias etapas para Go
- Configuração de ambiente e secrets
- Docker Compose para desenvolvimento local
- Verificações de saúde e ajustes para produção