menu 学习笔记
search self_improvement
目录

Docker Swarm 学习笔记(七): 在 Docker Swarm 集群中部署使用 config 和 secret 的服务(以 Nginx 服务为例)

huty
huty 2023年05月25日  ·  阅读 1,140

1、 准备 nginx 的 TLS 证书

  • 方式一: 直接使用 CA 的证书
  • 方式二: 使用自签名的证书

此处示例的证书名称为 site.crt,私钥名称为 site.key

2、 创建 Nginx 配置文件

vim site.conf
server {
    listen                443 ssl;
    server_name           localhost;
    ssl_certificate       /run/secrets/site.crt;
    ssl_certificate_key   /run/secrets/site.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

3、 创建 Docker 的 secret 和 config 对象

docker secret create secret的名称 secret内容(文件名)
docker config create config的名称 config内容(文件名)

示例:

docker secret create site.key site.key
docker secret create site.crt site.crt
docker config create site.conf site.conf

4、 检查 Docker 的 secret 和 config 对象

docker secret ls
docker config ls

5、 创建 Docker Swarm 服务

docker service create --name 服务名称 --secret secret名称 --config source=config名称,target=容器内文件,mode=模式(权限) 镜像名称:镜像TAG 命令

参数说明:
    --name : 服务名称
    --secret : 需要挂载至容器内部的 secret,挂载后文件在容器内部的 /run/secrets/ 目录,文件名为 secret 的名称
    --config : 需要挂载至容器内部的 config,source 指定 config 的名称、target 指定容器内部的文件、mode 指定容器内部文件的权限

示例:

docker service create --name nginx --secret site.key --secret site.crt --config source=site.conf,target=/etc/nginx/conf.d/site.conf,mode=0440 --publish published=10443,target=443 nginx:1.23.4-alpine3.17 sh -c "exec nginx -g 'daemon off;'"

6、 查看服务及及任务列表

docker service ls
docker service ps nginx

7、 访问 Nginx 服务

curl https://127.0.0.1:10443

使用自签名的证书时,需要添加 --cacert 参数指定根证书

curl --cacert root-ca.crt https://127.0.0.1:10443

8、 更新 Nginx 配置文件

vim site.conf
server {
    listen                443 ssl;
    server_name           localhost;
    ssl_certificate       /run/secrets/site.crt;
    ssl_certificate_key   /run/secrets/site.key;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }
}

9、 新增 Docker config 对象

docker config create site-v2.conf site.conf

10、 更新 Docker Swarm 服务

docker service update --config-rm site.conf --config-add source=site-v2.conf,target=/etc/nginx/conf.d/site.conf,mode=0440 nginx

11、 访问更新后的 Nginx 服务

curl https://127.0.0.1:10443

使用自签名的证书时,需要添加 --cacert 参数指定根证书

curl --cacert root-ca.crt https://127.0.0.1:10443

评论已关闭