Porqué
Para poderte conectar a cualquier contenedor de tu aplicación tienes la posibilidad de conectarte directamente como si usaras "docker exec" como lo indica el artículo Guía: Cómo acceder a los contenedores ejecutándose en la infraestructura.
Esta técnica es útil para ejecutar comandos y explorar el estado de los contenedores pero lamentablemente esta técnica no permite la transferencia de archivos o el poder hacer un túnel al servidor de base de datos de la aplicación, como se puede hacer con SSH tradicional.
Contenedor especial "tailscale_ssh"
Para habilitar esta funcionalidad, todos los proyectos de Sperantus Hosting tienen un contenedor adicional: tailscale_ssh. Este contenedor ejecuta el cliente de Tailscale (la red privada de Sperantus) que expone el servicio SSH.
Todos los desarrolladores con proyecto en la infraestructura están unidos también a esta red Tailscale y con permiso de acceso root SSH a todos los contenedores tailscale_ssh de sus proyectos (pero sin shell interactivo).
Consideraciones especiales
Por este motivo cada tarea bajo staging o producción siempre tendrá el contenedor "tailscale_ssh" adicional a los contenedores de la aplicación. Por ejemplo, si tienes 2 tareas, una en producción y otra en staging y en tu proyecto corres dos contenedores: httpd y frontend en realidad habrá 3 contenedores por cada tarea de cada ambiente:
Producción
- Contenedor frontend
- Contenedor backend
- Contenedor tailscale_ssh
Staging
- Contenedor frontend
- Contenedor backend
- Contenedor tailscale_ssh
Por lo tanto, cuando te conectes via SSH al contenedor tailscale_ssh de producción no estás entrando a los contenedores frontend o backend sino únicamente al de tailscale_ssh cuyo propósito es únicamente para transferir archivos o hacer un túnel:
- Guía: Cómo transferir archivos desde/hacia los contenedores de producción o staging
- Guía: Cómo hacer un túnel al servidor de base de datos