Cómo usar el comando docker swarm update para modificar la configuración del swarm

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo gestionar y modificar la configuración de un Docker Swarm. Comenzarás inicializando un Docker Swarm en tu máquina, convirtiéndola en un gestor (manager) del swarm.

Después de la inicialización, explorarás cómo ver la configuración actual de tu swarm utilizando el comando docker swarm inspect. Esto te permitirá ver la configuración predeterminada. Luego, el laboratorio te guiará en la actualización de los parámetros clave del swarm, específicamente el período de vencimiento del certificado del nodo y el límite de retención del historial de tareas, utilizando el comando docker swarm update. Finalmente, verificarás que tus cambios se hayan aplicado correctamente inspeccionando nuevamente la configuración del swarm.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/SystemManagementGroup -.-> docker/system("Manage Docker") subgraph Lab Skills docker/inspect -.-> lab-555246{{"Cómo usar el comando docker swarm update para modificar la configuración del swarm"}} docker/system -.-> lab-555246{{"Cómo usar el comando docker swarm update para modificar la configuración del swarm"}} end

Inicializar un Docker Swarm

En este paso, aprenderás cómo inicializar un Docker Swarm. Un Docker Swarm es un grupo de máquinas que ejecutan Docker y que se unen en un clúster. Después de unirte a un swarm, puedes seguir ejecutando los comandos de Docker con los que estás familiarizado y el swarm los distribuye en el clúster.

Para inicializar un swarm, se utiliza el comando docker swarm init. Este comando convierte la máquina actual en un gestor (manager) del swarm.

Abre la terminal y ejecuta el siguiente comando para inicializar el Docker Swarm:

docker swarm init

Deberías ver una salida similar a esta, lo que indica que el swarm se ha inicializado y proporciona un comando para unir otros nodos a este swarm:

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 192.168.99.100:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

Este comando convierte la máquina actual en un gestor (manager) del swarm. En un escenario del mundo real, normalmente tendrías múltiples gestores (managers) para alta disponibilidad, pero para este laboratorio, un gestor (manager) es suficiente.

Ver la configuración actual del swarm

En este paso, aprenderás cómo ver la configuración actual de tu Docker Swarm. Esto es útil para entender la configuración actual y para verificar los cambios después de actualizar la configuración.

Para ver la configuración del swarm, se utiliza el comando docker swarm inspect. Este comando proporciona información detallada sobre el swarm, incluyendo su ID, fecha de creación y diversas configuraciones.

Abre la terminal y ejecuta el siguiente comando para inspeccionar el Docker Swarm:

docker swarm inspect

La salida será un objeto JSON que contiene la configuración del swarm. Busca la sección Spec, que contiene las configuraciones ajustables. Presta atención a los campos Orchestration y Dispatcher, ya que estos contienen configuraciones relacionadas con el historial de tareas y los certificados de los nodos.

Por ejemplo, podrías ver una salida similar a esta (los valores exactos variarán):

[
  {
    "ID": "xxxxxxxxxxxx",
    "Version": {
      "Index": 10
    },
    "CreatedAt": "2023-10-27T10:00:00.000000000Z",
    "UpdatedAt": "2023-10-27T10:00:00.000000000Z",
    "Spec": {
      "Orchestration": {
        "TaskHistoryRetentionLimit": 5
      },
      "Raft": {
        "SnapshotInterval": 10000,
        "KeepOldSnapshots": 0,
        "LogEntriesForSlowFollowers": 500,
        "ElectionTick": 3,
        "HeartbeatTick": 1
      },
      "Dispatcher": {
        "HeartbeatPeriod": 5000000000
      },
      "CAConfig": {
        "NodeCertExpiry": 7776000000000000,
        "ExternalCAs": null,
        "SigningCACert": "...",
        "SigningCAKey": "...",
        "ForceRotate": 0
      },
      "TaskDefaults": {
        "LogDriver": null
      }
    },
    "TLSInfo": {
      "TrustRoot": "...",
      "CertIssuerSubject": "CN=swarm-ca",
      "CertIssuerPublicKey": "..."
    },
    "RootRotationInProgress": false
  }
]

En la sección Spec, puedes encontrar TaskHistoryRetentionLimit bajo Orchestration y NodeCertExpiry bajo CAConfig. Estas son las configuraciones que modificaremos en los siguientes pasos.

Actualizar el período de vencimiento de los certificados de los nodos

En este paso, aprenderás cómo actualizar el período de vencimiento de los certificados de los nodos en tu Docker Swarm. Los certificados de los nodos se utilizan para la comunicación segura entre los nodos del swarm. Por defecto, estos certificados caducan después de 3 meses. Puedes querer ajustar este período en función de tus políticas de seguridad y necesidades operativas.

Para actualizar el período de vencimiento de los certificados de los nodos, se utiliza el comando docker swarm update con la bandera --cert-expiry. El valor de --cert-expiry es una cadena de duración, por ejemplo, 24h para 24 horas, 720h para 30 días (720 horas), o 0 para deshabilitar el vencimiento (no recomendado para producción).

Actualicemos el período de vencimiento de los certificados de los nodos a 30 días (720 horas). Abre la terminal y ejecuta el siguiente comando:

docker swarm update --cert-expiry 720h

Deberías ver una salida que confirme la actualización:

Swarm updated.

Este comando actualiza la configuración del swarm para establecer el nuevo período de vencimiento de los certificados. Los nuevos certificados de los nodos emitidos después de esta actualización tendrán la nueva duración de vencimiento. Los certificados existentes seguirán caducando según su fecha de emisión original y la configuración de vencimiento anterior, a menos que fuerces una rotación de certificados.

Actualizar el límite de retención del historial de tareas

En este paso, aprenderás cómo actualizar el límite de retención del historial de tareas en tu Docker Swarm. El límite de retención del historial de tareas determina cuántas tareas completadas o fallidas se mantienen en el historial del swarm. Mantener un historial de tareas puede ser útil para la depuración y el monitoreo, pero retener demasiadas puede consumir recursos excesivos.

Para actualizar el límite de retención del historial de tareas, se utiliza el comando docker swarm update con la bandera --task-history-limit. El valor de --task-history-limit es un número entero que representa la cantidad de tareas a retener.

Actualicemos el límite de retención del historial de tareas a 10. Abre la terminal y ejecuta el siguiente comando:

docker swarm update --task-history-limit 10

Deberías ver una salida que confirme la actualización:

Swarm updated.

Este comando actualiza la configuración del swarm para retener el historial de las últimas 10 tareas completadas o fallidas.

Verificar la configuración actualizada del swarm

En este último paso, verificarás que la configuración del swarm que actualizaste en los pasos anteriores se haya aplicado correctamente. Volverás a utilizar el comando docker swarm inspect y comprobarás los valores de NodeCertExpiry y TaskHistoryRetentionLimit.

Abre la terminal y ejecuta el siguiente comando para inspeccionar el Docker Swarm:

docker swarm inspect

Examina la salida en formato JSON. Busca la sección Spec y luego comprueba los valores de NodeCertExpiry bajo CAConfig y TaskHistoryRetentionLimit bajo Orchestration.

Deberías ver que NodeCertExpiry ahora está configurado en 2592000000000000 (lo que representa 30 días en nanosegundos) y TaskHistoryRetentionLimit está configurado en 10.

Por ejemplo, las partes relevantes de la salida deberían ser así:

[
    {
        ...
        "Spec": {
            "Orchestration": {
                "TaskHistoryRetentionLimit": 10
            },
            ...
            "CAConfig": {
                "NodeCertExpiry": 2592000000000000,
                ...
            },
            ...
        },
        ...
    }
]

Al inspeccionar la configuración del swarm, puedes confirmar que tus actualizaciones se realizaron con éxito.

Resumen

En este laboratorio, aprendiste cómo inicializar un Docker Swarm utilizando el comando docker swarm init, convirtiendo la máquina actual en un administrador (manager) del swarm. Luego, exploraste cómo ver la configuración actual del swarm utilizando el comando docker swarm inspect, que proporciona una salida detallada en formato JSON de la configuración del swarm, incluyendo la sección Spec con configuraciones ajustables.

Después de la inicialización y la inspección, practicaste la actualización de configuraciones específicas del swarm. Aprendiste cómo modificar el período de expiración del certificado del nodo y el límite de retención del historial de tareas utilizando el comando docker swarm update. Finalmente, verificaste que estos cambios se aplicaron correctamente volviendo a utilizar el comando docker swarm inspect y examinando la configuración actualizada en la salida.