Loading...

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.

Ruta rápida: importe su docker-compose.yml directamente

¿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, redis y nats (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 app hot-data-store en el puerto 8082 y http://hot-data-store:8082 se 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).

Pestañas de tipo de plataforma con Container Apps seleccionado
Las pestañas de plataforma. El punto verde marca la plataforma activa para esta cuenta.

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.

Vista general de Managed Container Apps y la lista Your apps
Tarjetas de vista general arriba; debajo, la lista Your apps — una fila por app con su distintivo de estado, una acción Create Test Copy y un enlace Manage →. Abra una app para acceder a su ruta, la acción Expose on cdn.com.tr y las secciones Add-ons / Imports / Jobs / Storage / Env.

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/amd64 y 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=value por línea) y Secrets — los secrets se almacenan como Kubernetes secrets cifrados y no se muestran después de guardar.
Formulario de creación de container app
El formulario de creación de app. Las variables de entorno son visibles en la configuración de la app; los secrets son solo de escritura. Para un servicio dueño de un addon no necesita escribir su cadena de conexión — vea el paso 4.

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:

Panel de add-ons gestionados con acciones de habilitar/deshabilitar
El panel Add-ons en la página de detalle de la app. Habilitar un addon redespliega la app con la conexión ya conectada.
# 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 0 para detener un servicio y de vuelta en 1+ 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.