CONTAINER APPS · GUÍA DEL PANEL
Migre un proyecto Docker multiservicio, de principio a fin desde el panel
Este es el complemento apuntar-y-hacer-clic de la guía de línea de comandos cdnctl. Toma el mismo proyecto multiservicio estilo docker-compose (servicios web/API, workers en segundo plano, una base de datos, una caché y un bus de mensajes) y lo ejecuta en la plataforma de contenedores gestionados de CDN.com.tr — completamente desde el panel de gestión. Cada paso a continuación tiene un equivalente en línea de comandos; use el que prefiera.
¿Ya tiene un docker-compose.yml? La pestaña de contenedores puede importarlo en un solo paso — abra Import from Docker Compose, revise el plan de vista previa y confirme. Consulte la guía de importación de Docker Compose o la referencia de compose de cdnctl. Los pasos manuales de abajo siguen siendo válidos para lo que la importación de compose no cubra.
1 · Conceptos
- Cuenta = proyecto. Una cuenta puede contener muchas container apps; su paquete determina cuántas apps puede ejecutar.
- App = una imagen de contenedor (un servicio). Cada app tiene un puerto, un health check, recursos, variables de entorno y secrets, y puede escalar a N réplicas.
- Los complementos gestionados (managed addons) son backends con estado —
postgres(PostgreSQL/TimescaleDB),mysql,redisynats(JetStream) — que usted conecta a una app. La conexión (incluida la contraseña generada) se inyecta directamente en esa app; la contraseña nunca se vuelve a mostrar. - Service discovery. Las apps de su cuenta comparten una red privada y se comunican entre sí por nombre de app, exactamente igual que un servicio de docker-compose —
http://<nombre-app>:<puerto>. Llame a una apphot-data-storeen el puerto8082yhttp://hot-data-store:8082se resuelve automáticamente. - Exposición pública. Cualquier app puede publicarse en un subdominio de CDN.com.tr o en su propio dominio. Cada servicio expuesto obtiene su propio hostname; los workers y las bases de datos permanecen privados.
2 · Abra la pestaña Container Apps
Inicie sesión, abra CDN Accounts, haga clic en el icono de ajustes de la cuenta que quiere gestionar, y luego elija la pestaña Platforms. En la parte superior verá los tipos de plataforma — seleccione Container Apps (y pulse Activate la primera vez).
La pantalla de Container Apps se abre en una vista general (número de apps, add-ons, egress de edge) con Create App y Usage Details, seguida de la lista Your apps. Cada app es una fila que muestra su estado, con una acción Create Test Copy (preprod) y un enlace Manage →. Haga clic en Manage para abrir la página de detalle de esa app, donde conecta todo para el servicio.
3 · Cree y conecte un servicio
Haga clic en Create App y complete el formulario — una app por servicio:
- App name — también es el hostname dentro de la red que usan las demás apps (manténgalo igual al nombre del servicio en su compose).
- Image + Tag — compile cada servicio para
linux/amd64y súbalo a un registro que la plataforma pueda usar para hacer pull. - Port, Replicas, Plan y Healthcheck path — deje el puerto en blanco para un worker en segundo plano que no escucha.
- Registry credential — elija una credencial guardada para imágenes privadas, o agregue una directamente en la fila Private registry credential (el token se almacena cifrado y nunca se vuelve a mostrar).
- Env values (un
KEY=valuepor línea) y Secrets — los secrets se almacenan como Kubernetes secrets cifrados y no se muestran después de guardar.
Marque Managed Redis, Managed DB u Object Storage en el formulario para vincularlos al crear la app, o agréguelos después desde la página de detalle de la app (paso 4).
4 · Agregue bases de datos, caché y bus de mensajes gestionados
Abra la app (Manage →), luego su pestaña Add-ons, y use las acciones para habilitar Redis, una database (PostgreSQL/MySQL) o NATS. El addon se aprovisiona para esa app y su conexión se inyecta automáticamente:
# auto-injected into the app the addon is enabled on:
DATABASE_HOST, DATABASE_PORT, DATABASE_NAME, DATABASE_USER # env
DATABASE_PASSWORD, DATABASE_URL # secrets (full postgres:// URL)
REDIS_URL # redis://<redis-host>:6379/0
NATS_URL # nats://<nats-host>:4222
Compartir un backend entre apps. Los backends sin contraseña — NATS, y Redis tal como está configurado aquí — también pueden alcanzarse desde sus otras apps: configure NATS_URL/REDIS_URL como env en cada consumidor usando el host del addon. Una base de datos SQL protegida con contraseña solo se inyecta en la app que la posee (la contraseña nunca se muestra), así que no intente reutilizarla desde una segunda app — deje que una app sea la dueña de la base de datos y que las demás la llamen a ella, o ejecute su propia imagen de base de datos con una contraseña que usted defina.
5 · Despliegue, verifique el estado y los logs
Guardar una app pone en cola un deploy. El distintivo de estado pasa a running — tanto en la lista Your apps como en la página de detalle de la app — cuando el contenedor está saludable. En la página de detalle use los botones de acción para ver el status / runtime, los logs y la activity, y el menú Operations (barra superior) para seguir cada deploy hasta su finalización. Despliegue primero el servicio que inicializa el esquema de su base de datos si sus apps ejecutan migraciones al arrancar.
El contador running / replicas de la vista general y el encabezado de Your apps reflejan el estado en vivo — una app pasa a running ahí en cuanto su pod está listo.
6 · Exponga servicios públicamente
En la página de detalle de la app, haga clic en Expose on cdn.com.tr para generar el subdominio inmutable propio de la app <uid>.cdn.com.tr (el HTTPS se gestiona por usted). La ruta de la app entonces muestra la dirección en vivo. Exponga tantos servicios como necesite — una cuenta, muchos hostnames públicos. Para usar su propio dominio en su lugar, agréguelo mediante DNS Management y apúntelo a la app.
Exponga solo los servicios que deban ser públicos. Los workers en segundo plano y las bases de datos permanecen privados. Agregue autenticación a cualquier servicio HTTP que publique.
7 · Observabilidad (un solo panel de control)
Ejecute su stack de monitoreo como apps normales: un recolector de métricas que hace scrape de sus servicios (compilado con su configuración de scrape incorporada, mantenido interno) y un dashboard que expone públicamente. Cree ambos como cualquier otra app (paso 3), conecte el dashboard al recolector por su nombre de app (http://<nombre-recolector>:<puerto>), y luego Expose solo el dashboard. Este consulta al recolector a través de la red privada y es accesible en su subdominio cdn.com.tr.
8 · Edite, escale, reinicie y elimine
Abra una app (Manage →); su página de detalle contiene estas acciones:
- Edit () — cambie imagen/tag, puerto, réplicas, health check, env y secrets, y luego redespliegue.
- Restart y scale — ponga las réplicas en
0para detener un servicio y de vuelta en1+para iniciarlo. - Delete () — elimina la app y su subdominio público. Deshabilitar un addon de datos conserva su volumen por defecto; eliminar los datos requiere una confirmación explícita.
¿Prefiere la terminal? Cada acción aquí corresponde uno a uno con un comando de cdnctl.