0Pricing
Go Academy · Lección

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 prod

Configuració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

  1. Compilaciones Docker de varias etapas para Go
  2. Configuración del entorno y secretos
  3. Docker Compose para desarrollo local
  4. Comprobaciones de estado y ajustes para producción
← Volver a Go Academy