Como usar o comando docker swarm update para modificar as configurações do swarm

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar e modificar as configurações de um Docker Swarm. Você começará inicializando um Docker Swarm em sua máquina, tornando-a um gerenciador de swarm.

Após a inicialização, você explorará como visualizar a configuração atual do seu swarm usando o comando docker swarm inspect. Isso permitirá que você veja as configurações padrão. O laboratório então o guiará através da atualização de parâmetros-chave do swarm, especificamente o período de expiração do certificado do nó e o limite de retenção do histórico de tarefas, usando o comando docker swarm update. Finalmente, você verificará se suas alterações foram aplicadas com sucesso, inspecionando as configurações do swarm novamente.

Inicializar um Docker Swarm

Nesta etapa, você aprenderá como inicializar um Docker Swarm. Um Docker Swarm é um grupo de máquinas executando Docker que são unidas em um cluster. Após ingressar em um swarm, você pode continuar a executar os comandos Docker com os quais está familiarizado, e o swarm os distribui no cluster.

Para inicializar um swarm, você usa o comando docker swarm init. Este comando transforma a máquina atual em um gerenciador de swarm.

Abra o terminal e execute o seguinte comando para inicializar o Docker Swarm:

docker swarm init

Você deve ver uma saída semelhante a esta, indicando que o swarm foi inicializado e fornecendo um comando para ingressar outros nós neste 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 torna a máquina atual um gerenciador de swarm. Em um cenário do mundo real, você normalmente teria vários gerenciadores para alta disponibilidade, mas para este laboratório, um gerenciador é suficiente.

Visualizar as configurações atuais do swarm

Nesta etapa, você aprenderá como visualizar as configurações atuais do seu Docker Swarm. Isso é útil para entender a configuração atual e para verificar as alterações após a atualização das configurações.

Para visualizar as configurações do swarm, você usa o comando docker swarm inspect. Este comando fornece informações detalhadas sobre o swarm, incluindo seu ID, data de criação e várias configurações.

Abra o terminal e execute o seguinte comando para inspecionar o Docker Swarm:

docker swarm inspect

A saída será um objeto JSON contendo a configuração do swarm. Procure a seção Spec, que contém as configurações configuráveis. Preste atenção nos campos Orchestration e Dispatcher, pois estes contêm configurações relacionadas ao histórico de tarefas e certificados de nó.

Por exemplo, você pode ver uma saída semelhante a esta (os valores exatos variarão):

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

Na seção Spec, você pode encontrar o TaskHistoryRetentionLimit em Orchestration e NodeCertExpiry em CAConfig. Estas são as configurações que modificaremos nas próximas etapas.

Atualizar o período de expiração do certificado do nó

Nesta etapa, você aprenderá como atualizar o período de expiração dos certificados de nó no seu Docker Swarm. Os certificados de nó são usados para comunicação segura entre os nós do swarm. Por padrão, esses certificados expiram após 3 meses. Você pode querer ajustar este período com base em suas políticas de segurança e necessidades operacionais.

Para atualizar o período de expiração do certificado do nó, você usa o comando docker swarm update com a flag --cert-expiry. O valor para --cert-expiry é uma string de duração, por exemplo, 24h para 24 horas, 720h para 30 dias (720 horas), ou 0 para desabilitar a expiração (não recomendado para produção).

Vamos atualizar o período de expiração do certificado do nó para 30 dias (720 horas). Abra o terminal e execute o seguinte comando:

docker swarm update --cert-expiry 720h

Você deve ver uma saída confirmando a atualização:

Swarm updated.

Este comando atualiza a configuração do swarm para definir o novo período de expiração do certificado. Novos certificados de nó emitidos após esta atualização terão a nova duração de expiração. Os certificados existentes ainda expirarão com base em sua data de emissão original e na configuração de expiração anterior, a menos que você force uma rotação de certificado.

Atualizar o limite de retenção do histórico de tarefas

Nesta etapa, você aprenderá como atualizar o limite de retenção do histórico de tarefas no seu Docker Swarm. O limite de retenção do histórico de tarefas determina quantas tarefas concluídas ou com falha são mantidas no histórico do swarm. Manter um histórico de tarefas pode ser útil para depuração e monitoramento, mas reter muitas tarefas pode consumir recursos excessivos.

Para atualizar o limite de retenção do histórico de tarefas, você usa o comando docker swarm update com a flag --task-history-limit. O valor para --task-history-limit é um inteiro que representa o número de tarefas a serem retidas.

Vamos atualizar o limite de retenção do histórico de tarefas para 10. Abra o terminal e execute o seguinte comando:

docker swarm update --task-history-limit 10

Você deve ver uma saída confirmando a atualização:

Swarm updated.

Este comando atualiza a configuração do swarm para reter o histórico das últimas 10 tarefas concluídas ou com falha.

Verificar as configurações atualizadas do swarm

Nesta etapa final, você verificará se as configurações do swarm que você atualizou nas etapas anteriores foram aplicadas com sucesso. Você usará o comando docker swarm inspect novamente e verificará os valores de NodeCertExpiry e TaskHistoryRetentionLimit.

Abra o terminal e execute o seguinte comando para inspecionar o Docker Swarm:

docker swarm inspect

Examine a saída JSON. Procure a seção Spec e, em seguida, verifique os valores de NodeCertExpiry em CAConfig e TaskHistoryRetentionLimit em Orchestration.

Você deve ver que NodeCertExpiry agora está definido como 2592000000000000 (que representa 30 dias em nanossegundos) e TaskHistoryRetentionLimit está definido como 10.

Por exemplo, as partes relevantes da saída devem ser semelhantes a esta:

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

Ao inspecionar a configuração do swarm, você pode confirmar que suas atualizações foram bem-sucedidas.

Resumo

Neste laboratório, você aprendeu como inicializar um Docker Swarm usando o comando docker swarm init, transformando a máquina atual em um gerenciador (manager) do swarm. Em seguida, você explorou como visualizar as configurações atuais do swarm usando o comando docker swarm inspect, que fornece uma saída JSON detalhada da configuração do swarm, incluindo a seção Spec com configurações configuráveis.

Após a inicialização e inspeção, você praticou a atualização de configurações específicas do swarm. Você aprendeu como modificar o período de expiração do certificado do nó e o limite de retenção do histórico de tarefas usando o comando docker swarm update. Finalmente, você verificou se essas alterações foram aplicadas com sucesso, usando novamente o comando docker swarm inspect e examinando a configuração atualizada na saída.