1、docker swarm ca 简介
Docker Swarm 是 Docker 提供的用于创建和管理容器集群的工具。它允许您将多个 Docker 主机组成一个集群,并使用 Swarm 模式部署和管理容器应用程序。
docker swarm ca 命令用于生成和管理 Swarm 集群的根证书和私钥。它的主要作用是生成证书以用于加密和认证 Swarm 集群中的通信。
注意:
该命令为集群管理命令,必须在集群管理节点上执行。要了解管理器和工人,请参阅文档中的Swarm模式部分。
该命令的示例用法请参阅下面的示例部分。
参考文档:https://docs.docker.com/engine/reference/commandline/swarm_ca/
2、docker swarm ca 语法
docker swarm ca [OPTIONS]
3、docker swarm ca 命令
运行 docker swarm ca
命令而不带任何选项,以查看当前以 PEM 格式显示的根 CA 证书。
docker swarm ca -----BEGIN CERTIFICATE----- MIIBazCCARCgAwIBAgIUJPzo67QC7g8Ebg2ansjkZ8CbmaswCgYIKoZIzj0EAwIw EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNTAzMTcxMDAwWhcNMzcwNDI4MTcx MDAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH A0IABKL6/C0sihYEb935wVPRA8MqzPLn3jzou0OJRXHsCLcVExigrMdgmLCC+Va4 +sJ+SLVO1eQbvLHH8uuDdF/QOU6jQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBSfUy5bjUnBAx/B0GkOBKp91XvxzjAKBggqhkjO PQQDAgNJADBGAiEAnbvh0puOS5R/qvy1PMHY1iksYKh2acsGLtL/jAIvO4ACIQCi lIwQqLkJ48SQqCjG1DBTSBsHmMSRT+6mE2My+Z3GKA== -----END CERTIFICATE-----
使用 --rotate
标志(可选使用 --ca-cert
,以及 --ca-ke
y 或 --external-ca
参数标志)来rotation当前的 Swarm 根 CA。
docker swarm ca --rotate desired root digest: sha256:05da740cf2577a25224c53019e2cce99bcc5ba09664ad6bb2a9425d9ebd1b53e rotated TLS certificates: [=========================> ] 1/2 nodes rotated CA certificates: [> ] 0/2 nodes
一旦rotation完成(所有进度条都已完成),当前的 CA 证书将被打印出来。
docker swarm ca --rotate desired root digest: sha256:05da740cf2577a25224c53019e2cce99bcc5ba09664ad6bb2a9425d9ebd1b53e rotated TLS certificates: [==================================================>] 2/2 nodes rotated CA certificates: [==================================================>] 2/2 nodes -----BEGIN CERTIFICATE----- MIIBazCCARCgAwIBAgIUFynG04h5Rrl4lKyA4/E65tYKg8IwCgYIKoZIzj0EAwIw EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNTE2MDAxMDAwWhcNMzcwNTExMDAx MDAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH A0IABC2DuNrIETP7C7lfiEPk39tWaaU0I2RumUP4fX4+3m+87j0DU0CsemUaaOG6 +PxHhGu2VXQ4c9pctPHgf7vWeVajQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBSEL02z6mCI3SmMDmITMr12qCRY2jAKBggqhkjO PQQDAgNJADBGAiEA263Eb52+825EeNQZM0AME+aoH1319Zp9/J5ijILW+6ACIQCg gyg5u9Iliel99l7SuMhNeLkrU7fXs+Of1nTyyM73ig== -----END CERTIFICATE-----
1)根 CA rotation(--rotate)
注意:
Mirantis Kubernetes Engine(MKE),之前称为 Docker UCP,在 Swarm 上提供了一个外部证书管理服务。如果您在 MKE 上运行 Swarm,则不应手动rotation CA 证书。如果需要rotation证书,请联系 Mirantis 支持。
当一个或多个 Swarm 管理节点遭到破坏时,推荐执行根 CA rotation,以便这些管理节点无法再连接或被集群中的其他节点信任。
另外,可以使用根 CA rotation将 Swarm CA 的控制权交给外部 CA,或者从外部 CA 中重新获得控制权。
--rotate 标志不需要任何参数来执行rotation,但您可以选择指定证书和密钥,或者指定证书和外部 CA URL,这些将被用于替代自动生成的证书/密钥对。
由于根 CA 密钥应保密,如果提供了密钥,通过 CLI 或 API 查看 Swarm 信息时将不可见。
直到所有注册节点都rotation其 TLS 证书,根 CA rotation才会完成。如果rotation在合理的时间内没有完成,请尝试运行 docker node ls --format '{{.ID}} {{.Hostname}} {{.Status}} {{.TLSStatus}}'
查看是否有节点关闭或无法rotation TLS 证书。
2)以分离模式(--detach)运行根 CA rotation
启动根 CA rotation,但不等待rotation完成或显示rotation进度。
4、命令选项
选项,简写 | 默认值 | 描述 |
--ca-cert | 用于新集群的 PEM 格式根 CA 证书的路径 | |
--ca-key | 用于新集群的 PEM 格式根 CA 密钥的路径 | |
--cert-expiry | 2160h0m0s | 节点证书的有效期(ns纳秒 |
--detach, -d | 立即退出而不等待根 CA 轮换完成 | |
--external-ca | 一个或多个证书签名端点的规格说明 | |
--quiet, -q | 禁止输出进度信息 | |
--rotate | rotation Swarm CA(如果未提供证书或密钥,则生成新的) |
5、子命令
命令 | 描述 |
docker swarm ca | 显示和轮换根CA |
docker swarm init | 初始化一个swarm |
docker swarm join | 作为节点和/或管理者加入一个swarm |
docker swarm join-token | 管理加入令牌 |
docker swarm leave | 离开swarm |
docker swarm unlock | 解锁swarm |
docker swarm unlock-key | 管理解锁密钥 |
docker swarm update | 更新swarm |