Repliegue de contenedores

La mayoría de las soluciones basadas en Docker (incluidas las pilas administradas por Elasticserver ) se desarrollan continuamente, entregando nuevas versiones y arreglos de productos. Por lo tanto, se recomienda actualizar periódicamente sus plantillas a sus últimas etiquetas, es decir, lanzamientos.Dicha operación se denomina redistribución y tiene los siguientes detalles cuando se administra en la plataforma:
los datos de usuario personalizados y los archivos confidenciales del sistema se conservan durante la actualización:
contenido de los volúmenes (predeterminados y personalizados)
archivos listados en /etc/jelastic/ (configuraciones específicas de las pilas Elasticserver), que son necesarios para garantizar la operatividad del contenedor

 

Configuraciones relacionadas con AutoFS y NFS ( /etc /autofs.jelastic , /etc/ auto.master , / etc / exports )
configuraciones de firewall ( / etc / sysconfig / iptables-custom , / etc / sysconfig / iptables4-jelastic , / etc / sysconfig / iptables6-jelastic , / etc/iptables/rules.v4 )
Datos de acceso SSH ( / root/.ssh /authorized_keys , /root /.ssh /authorized_keys2 , / root/ .ssh/ id_rsa )
todas las configuraciones personalizadas previamente especificadas (como comandos de ejecución , enlaces , variables , etc.) no se verán afectadas
Si se opera con varias instancias (escaladas horizontalmente), la actualización se puede realizar en contenedores uno por uno, es decir, implícitamente sin tiempo de inactividad de esta manera, puede actualizar su contenedor basado en Docker a una nueva etiqueta (versión) sin afectar la aplicación en su interior. Con Elasticserver PaaS, la redistribución de contenedores se puede realizar con solo unos pocos clics a través de la interfaz de usuario del panel de control o fácilmente automatizada a través de API .

Nota: Cuando se trabaja con las bases de datos MySQL , MariaDB o Percona , no se admite la degradación (es decir, la reasignación a la versión inferior). En caso de que la operación sea necesaria, recomendamos crear una copia de seguridad y restaurar una base de datos después de volver a implementar (o en un contenedor separado por completo).

Para obtener información sobre cómo guardar o realizar copias de seguridad de datos personalizados durante la nueva implementación, consulte la sección correspondiente a continuación.

Actualizar contenedor a través del panel de control

La forma más sencilla y fácil de usar para volver a implementar una etiqueta de plantilla es utilizar el panel de Elasticserver. Las instrucciones a continuación lo guiarán a través de los pasos requeridos:

1. Se puede acceder al marco de diálogo de redistribución dedicado de dos maneras diferentes:

  • seleccione el botón Reimplementar contenedores  junto al nodo o capa requeridos (para actualizar todos los contenedores incluidos a la vez)

haga clic en el ícono de lápiz junto a la versión de la etiqueta de capa en el asistente de topología (al cambiar la topología del ambiente existente)

2. Como resultado, se abrirá el marco de Reimplementar contenedores , donde podrá seleccionar una nueva Etiqueta para su (s) contenedor (es).

Además, puede ajustar algunas opciones adicionales:

  • Mantenga los volúmenes de datos: si está habilitado, los datos en los volúmenes estarán protegidos contra el borrado y permanecerán disponibles después de volver a implementar
  • para contenedores a escala horizontal , puede elegir entre dos opciones de implementación:
    • Desplegar el retraso de la secuencia : vuelve a implementar todos los nodos a la vez, lo que es relativamente más rápido pero causa un breve tiempo de inactividad de su aplicación
    • Implementación secuencial con retraso : vuelve a implementar instancias una por una con un retraso específico entre operaciones. Esta opción garantiza que siempre haya un nodo en ejecución para procesar las solicitudes entrantes (es decir, sin tiempo de inactividad)

Después de configurar todas las configuraciones, haga clic en el botón Reimplementar y confirme dentro de la ventana emergente.

3. Una vez que se complete la actualización, verá la notificación correspondiente en la esquina superior derecha del tablero

Haga clic en el botón Mostrar Logs para abrir la pestaña correspondiente con información sobre el contenedor actualizado: Nodo ID , nombre: etiqueta y Duración .

Ahora sabe cómo volver a implementar un contenedor a través del panel de Jelastic.

Actualizar contenedor a través de Elasticserver API / CS /CLI

El proceso de actualización se puede automatizar utilizando Elasticserver API , Cloud Scripting y CLI (interfaz de línea de comandos).

Consejo: El ejemplo detallado sobre la redistribución de contenedores a través de CLI se proporciona en la guía vinculada.

La redistribución de contenedores se realiza con el método environment.Control.RedeployContainers , que se gestiona con los siguientes parámetros:

  • envName : nombre del entorno, donde los contenedores deben volver a implementarse
  • session :identificador desesión de usuario (o token ), utilizado para la autenticación
  • nodeGroup : identificador de la capa de entorno para actualizar (opcional)
  • nodeId : número de identificación del contenedor particular que se volverá a implementar (opcional)

Nota: Debe estado ya sea grupo de nodos o NODEID parámetro para definir el objetivo de la operación. El método ignora nodeGroup si se proporcionan ambos y falla si no se especifica ninguno.

  • etiqueta : versión de imagen que se implementará
  • useExistingVolumes : configúrelo como verdadero para mantener los datos en los volúmenes montados presentes dentro de los contenedores actualizados (opcional)
  • inicio de sesión y contraseña : credenciales para acceder a una imagen desde el registro privado (opcional)
  • skipReinstall : define si la imagen debe extraerse en el sistema de archivos existente ( verdadero ) o desplegarse en una nueva instancia ( falso por defecto) (opcional)

Las siguientes construcciones se pueden utilizar para definir la actualización del contenedor dentro de sus scripts de automatización :

1. Volver a desplegar toda la capa de contenedores.

1
2
3
4
5
api: environment.control.RedeployContainers
nodeGroup: {nodeGroup}
tag: {myImage}:{newTag}

Aquí:

  • {nodeGroup} : capa de entorno (o grupo de nodos) donde se deben actualizar todos los contenedores
  • {myImage} : nombre de la imagen que se desplegará
  • {newTag} : la versión requerida de la imagen de arriba

2. Actualización de un contenedor particular.

1
2
3
4
5
api: environment.control.RedeployContainers
nodeId: {nodeId}
tag: {myImage}:{newTag}

Aquí, el valor {nodeId} debe sustituirse con el número de ID del nodo requerido (otros marcadores de posición son los mismos que para el ejemplo anterior).

Guardar datos personalizados durante la resitribución de contenedores

Cada contenedor administrado por Elasticserver se proporciona con un archivo especial redeploy.conf , donde se almacena una lista de configuraciones críticas de contenedores. La plataforma conserva automáticamente estos ajustes durante la nueva implementación del contenedor. A continuación, algunos de los archivos comunes se proporcionan en todas las pilas:

  • /etc /jelastic /redeploy.conf : la configuración de redistribución actual en sí (para almacenar la lista de archivos necesarios para guardar archivos y directorios durante cada nueva redistribución de contenedores)
  • $ {home} /. bash_profile : contiene la configuración de shell SSH predeterminada (p. ej., mensaje de introducción de shell, los archivos de configuración necesarios que deben buscarse, etc.)
  • / etc / sysconfig / iptables : mantiene las reglas de firewall predeterminadas
  • / etc / sysconfig / iptables-custom : contiene reglas de firewall personalizadas
  • / var / lib / jelastic / keys : almacena las claves privadas SSH cargadas , que son necesarias para acceder al contenedor a través de SSH y para interactuar con otros contenedores

 

  • Además, redeploy.conf para cada tipo de nodo en particular incluirá algunos archivos adicionales específicos de la pila . Si es necesario, la lista predeterminada de configuraciones conservadas se puede complementar con sus archivos y carpetas personalizados. Abra el archivo redeploy.conf y agregue una entrada con una ruta completa al elemento requerido (cada entrada debe indicarse en una línea separada).

No olvides guardar los cambios.

Creación de copia de respaldo de archivos al redistribuir imagen

Elasticserver PaaS proporciona una forma conveniente y sencilla de crear copias de seguridad para archivos de configuración durante la actualización del contenedor. Es decir, además de reemplazar la configuración especificada con su versión de la nueva etiqueta, se conservará una copia del archivo anterior a la nueva implementación.

Para crear una copia de seguridad, debe especificar una ruta al archivo necesario en redeploy.conf y agregar el prefijo « copia de seguridad: » al registro:

{path_to_file}: copia de seguridad

Nota: Esta operación está disponible solo para archivos (no directorios).

Después de la nueva implementación , la configuración del « respaldo « puede reconocer fácilmente la configuración del contenedor anterior . Se puede utilizar para una reversión instantánea en caso de incompatibilidad con las nuevas configuraciones o para el análisis de los cambios.

Por ejemplo, todos los servidores de aplicaciones PHP administrados por Elasticserver crean una copia de seguridad para la configuración / etc/ php.ini .

Después de la actualización del contenedor, verá versiones nuevas y anteriores de los archivos php.ini .

Nota: Un nuevo archivo {file_name} .backup reemplaza automáticamente la copia de seguridad anterior (es decir, el archivo con el mismo nombre existente) durante la nueva implementación .

De esta manera, puede cambiar fácilmente a la configuración utilizada anteriormente mediante la sustitución del archivo php.ini con su copia de seguridad (por ejemplo, mediante el cambio de nombre de los archivos o la copia de contenido).

Ahora, ya sabe cómo administrar versiones de plantillas (etiquetas Docker) de los contenedores dentro de Elasticserver PaaS.