Comment utiliser la commande docker swarm update pour modifier les paramètres du swarm

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo, vous apprendrez à gérer et modifier les paramètres d'un Docker Swarm. Vous commencerez par initialiser un Docker Swarm sur votre machine, en la transformant en gestionnaire de swarm.

Après l'initialisation, vous explorerez comment afficher la configuration actuelle de votre swarm à l'aide de la commande docker swarm inspect. Cela vous permettra de voir les paramètres par défaut. Le labo vous guidera ensuite dans la mise à jour des paramètres clés du swarm, en particulier la période d'expiration des certificats des nœuds et la limite de conservation de l'historique des tâches, à l'aide de la commande docker swarm update. Enfin, vous vérifierez que vos modifications ont été appliquées avec succès en inspectant à nouveau les paramètres du 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{{"Comment utiliser la commande docker swarm update pour modifier les paramètres du swarm"}} docker/system -.-> lab-555246{{"Comment utiliser la commande docker swarm update pour modifier les paramètres du swarm"}} end

Initialiser un Docker Swarm

Dans cette étape, vous apprendrez à initialiser un Docker Swarm. Un Docker Swarm est un groupe de machines exécutant Docker qui sont réunies en un cluster. Après avoir rejoint un swarm, vous pouvez continuer à exécuter les commandes Docker avec lesquelles vous êtes familiarisé, et le swarm les distribue sur le cluster.

Pour initialiser un swarm, vous utilisez la commande docker swarm init. Cette commande transforme la machine actuelle en gestionnaire de swarm.

Ouvrez le terminal et exécutez la commande suivante pour initialiser le Docker Swarm :

docker swarm init

Vous devriez voir une sortie similaire à celle-ci, indiquant que le swarm a été initialisé et fournissant une commande pour rejoindre d'autres nœuds à ce 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.

Cette commande transforme la machine actuelle en gestionnaire de swarm. Dans un scénario réel, vous auriez généralement plusieurs gestionnaires pour une haute disponibilité, mais pour ce labo, un seul gestionnaire suffit.

Afficher les paramètres actuels du swarm

Dans cette étape, vous apprendrez à afficher les paramètres actuels de votre Docker Swarm. Cela est utile pour comprendre la configuration actuelle et pour vérifier les modifications après avoir mis à jour les paramètres.

Pour afficher les paramètres du swarm, vous utilisez la commande docker swarm inspect. Cette commande fournit des informations détaillées sur le swarm, y compris son identifiant, sa date de création et divers paramètres de configuration.

Ouvrez le terminal et exécutez la commande suivante pour inspecter le Docker Swarm :

docker swarm inspect

La sortie sera un objet JSON contenant la configuration du swarm. Recherchez la section Spec, qui contient les paramètres configurables. Faites attention aux champs Orchestration et Dispatcher, car ceux-ci contiennent des paramètres liés à l'historique des tâches et aux certificats des nœuds.

Par exemple, vous pourriez voir une sortie similaire à celle-ci (les valeurs exactes varieront) :

[
  {
    "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
  }
]

Dans la section Spec, vous pouvez trouver TaskHistoryRetentionLimit sous Orchestration et NodeCertExpiry sous CAConfig. Ce sont les paramètres que nous allons modifier dans les étapes suivantes.

Mettre à jour la période de validité des certificats de nœud

Dans cette étape, vous apprendrez à mettre à jour la période de validité des certificats de nœud dans votre Docker Swarm. Les certificats de nœud sont utilisés pour une communication sécurisée entre les nœuds du swarm. Par défaut, ces certificats expirent après 3 mois. Vous pouvez ajuster cette période en fonction de vos politiques de sécurité et de vos besoins opérationnels.

Pour mettre à jour la période de validité des certificats de nœud, vous utilisez la commande docker swarm update avec le paramètre --cert-expiry. La valeur de --cert-expiry est une chaîne de caractères représentant une durée, par exemple, 24h pour 24 heures, 720h pour 30 jours (720 heures), ou 0 pour désactiver l'expiration (non recommandé en production).

Mettons à jour la période de validité des certificats de nœud à 30 jours (720 heures). Ouvrez le terminal et exécutez la commande suivante :

docker swarm update --cert-expiry 720h

Vous devriez voir une sortie confirmant la mise à jour :

Swarm updated.

Cette commande met à jour la configuration du swarm pour définir la nouvelle période de validité des certificats. Les nouveaux certificats de nœud émis après cette mise à jour auront la nouvelle durée de validité. Les certificats existants expireront toujours en fonction de leur date d'émission originale et de l'ancien paramètre de validité, à moins que vous n'effectuiez une rotation forcée des certificats.

Mettre à jour la limite de conservation de l'historique des tâches

Dans cette étape, vous apprendrez à mettre à jour la limite de conservation de l'historique des tâches dans votre Docker Swarm. La limite de conservation de l'historique des tâches détermine combien de tâches terminées ou échouées sont conservées dans l'historique du swarm. Conserver un historique des tâches peut être utile pour le débogage et la surveillance, mais conserver trop de tâches peut consommer des ressources excessives.

Pour mettre à jour la limite de conservation de l'historique des tâches, vous utilisez la commande docker swarm update avec le paramètre --task-history-limit. La valeur de --task-history-limit est un entier représentant le nombre de tâches à conserver.

Mettons à jour la limite de conservation de l'historique des tâches à 10. Ouvrez le terminal et exécutez la commande suivante :

docker swarm update --task-history-limit 10

Vous devriez voir une sortie confirmant la mise à jour :

Swarm updated.

Cette commande met à jour la configuration du swarm pour conserver l'historique des 10 dernières tâches terminées ou échouées.

Vérifier les paramètres mis à jour du swarm

Dans cette étape finale, vous vérifierez que les paramètres du swarm que vous avez mis à jour dans les étapes précédentes ont été appliqués avec succès. Vous utiliserez à nouveau la commande docker swarm inspect et vérifierez les valeurs de NodeCertExpiry et TaskHistoryRetentionLimit.

Ouvrez le terminal et exécutez la commande suivante pour inspecter le Docker Swarm :

docker swarm inspect

Examinez la sortie JSON. Recherchez la section Spec, puis vérifiez les valeurs de NodeCertExpiry sous CAConfig et TaskHistoryRetentionLimit sous Orchestration.

Vous devriez voir que NodeCertExpiry est maintenant défini sur 2592000000000000 (ce qui représente 30 jours en nanosecondes) et que TaskHistoryRetentionLimit est défini sur 10.

Par exemple, les parties pertinentes de la sortie devraient ressembler à ceci :

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

En inspectant la configuration du swarm, vous pouvez confirmer que vos mises à jour ont été effectuées avec succès.

Résumé

Dans ce laboratoire (lab), vous avez appris à initialiser un Docker Swarm en utilisant la commande docker swarm init, transformant ainsi la machine actuelle en un gestionnaire de swarm (swarm manager). Vous avez ensuite exploré comment afficher les paramètres actuels du swarm en utilisant la commande docker swarm inspect, qui fournit une sortie JSON détaillée de la configuration du swarm, y compris la section Spec avec les paramètres configurables.

Après l'initialisation et l'inspection, vous avez pratiqué la mise à jour de paramètres spécifiques du swarm. Vous avez appris à modifier la période d'expiration du certificat du nœud (node certificate expiry period) et la limite de conservation de l'historique des tâches (task history retention limit) en utilisant la commande docker swarm update. Enfin, vous avez vérifié que ces modifications ont été appliquées avec succès en utilisant à nouveau la commande docker swarm inspect et en examinant la configuration mise à jour dans la sortie.