Configuración del entorno y secretos
Configuración según los doce factores, variables de entorno y secretos de Docker
Configuración del entorno y secretos es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.
Configuración de aplicaciones de 12 factores
La metodología de aplicaciones de 12 factores recomienda almacenar la configuración en variables de entorno, no en el código ni en archivos de configuración. Esto hace que la aplicación sea portable entre desarrollo, staging y producción sin cambios en el código.
os.Getenv
Lea las variables de entorno con os.Getenv (devuelve "" si no están definidas) o con os.LookupEnv (devuelve el valor y un booleano que indica si está presente):
port := os.Getenv("PORT")
if port == "" { port = "8080" }
dsn, ok := os.LookupEnv("DATABASE_URL")
if !ok { log.Fatal("DATABASE_URL not set") }Carga de archivos .env
Utilice github.com/joho/godotenv para cargar archivos .env durante el desarrollo. En producción, inyecte las variables de entorno mediante la plataforma (Docker, Kubernetes o la nube).
godotenv.Load() // loads .env if present; ignores error in prodConfiguración estructurada con envconfig
github.com/kelseyhightower/envconfig asigna variables de entorno a campos de estructuras, con conversión de tipos y validación:
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)Gestión de secretos
No almacene nunca secretos (contraseñas, claves de API o certificados TLS) en variables de entorno en producción: aparecen en los listados de procesos y en los registros. Utilice un gestor de secretos: AWS Secrets Manager, HashiCorp Vault o Kubernetes Secrets montados como archivos.
Lectura de secretos desde archivos
Monte los secretos como archivos y léalos al iniciar la aplicación:
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)))Secretos de Kubernetes
En Kubernetes, monte los valores de Secret como variables de entorno o como archivos en un volumen. Se prefieren los montajes como archivos, ya que pueden rotarse sin reiniciar el pod.
Feature flags
Almacene los nombres de las feature flags en variables de entorno para activar o desactivar funciones de forma sencilla. Para reglas complejas de feature flags (despliegues porcentuales o segmentación), utilice un servicio específico de feature flags.
Validación de la configuración al iniciar
Valide toda la configuración necesaria al iniciar la aplicación y falle rápidamente si falta algún valor o si alguno no es válido. Es mejor que la aplicación se detenga de inmediato que falle con la primera solicitud.
if cfg.DBUrl == "" { log.Fatal("DB_URL required") }Configuración inmutable
Trate la configuración como inmutable después del inicio. Si necesita actualizarla en tiempo real, utilice un servicio de feature flags o un almacén de configuración con un mecanismo de supervisión, no recargue variables de entorno en caliente.
Configuración en las pruebas
Utilice t.Setenv para establecer variables de entorno durante una prueba. Esto es seguro para pruebas paralelas en Go 1.17 y versiones posteriores.
t.Setenv("PORT", "9090")
// test code here...Comprobación rápida
¿Por qué no deben almacenarse secretos en variables de entorno en producción?
Resumen: configuración del entorno y secretos
Puntos clave:
- Almacene la configuración en variables de entorno; utilice godotenv para los archivos .env del desarrollo local
- Utilice envconfig para rellenar estructuras tipadas con valores predeterminados
- Monte los secretos como archivos; utilice Vault o Secrets Manager en producción
- Valide toda la configuración al iniciar la aplicación; falle rápidamente si falta algún valor
Preguntas frecuentes
¿La lección «Configuración del entorno y secretos» es gratis?
Sí — el texto completo de «Configuración del entorno y secretos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Configuración del entorno y secretos»?
Configuración según los doce factores, variables de entorno y secretos de Docker Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Go Academy?
No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.
¿Cuánto tiempo toma la lección «Configuración del entorno y secretos»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Go Academy?
Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Compilaciones Docker de varias etapas para Go
- Configuración del entorno y secretos
- Docker Compose para desarrollo local
- Comprobaciones de estado y ajustes para producción