Docker-swarmクラスタの導入とjenkins-CICDの使用
一.Docker配備
二.Docker-swarmクラスタの構築
1.管理ノードとしてノードを選択ノードをswarmクラスタに追加する(各ノードマシンで実行する) .クラスタノード情報を表示する
三.Docker-swarm内部network,nginxなどの構成
1.ミラーウェアハウスの作成ミラーウェアハウスの作成(ドメイン名証明書は省略)
2.network作成クラスタのnetwork を作成
docker network create -d overlay --subnet=10.0.1.0/24 --attachable sk-net
3.swarmクラスタ内部nginxコンテナ作成コンテナのnetworkにおけるnginxコンテナ を作成する
nginxのプロファイルを外にマウントして、いつでも変更が有効になるようにする必要があります.
四.swarmクラスタでのサービス作成使用
1.サービス作成サービス作成
swarmではserviceの概念はnginxのupstreamに似ており、複数のコンテナを構成しながら高可用性の機能を持つことができ、service nameはswarmのnetworkでホスト名/ipと理解できる.
五.Jenkinsはコンテナクラスタの更新サービスに協力する
1.サービス作成 ansibleリモートdocker master更新サービスミラー
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce
service docker start
vim /usr/lib/systemd/system/docker.service
#
--graph /data/docker --storage-driver=overlay
systemctl daemon-reload
service docker restart
二.Docker-swarmクラスタの構築
1.管理ノードとしてノードを選択
[root@jenkins-master ~]#docker swarm init --advertise-addr 192.168.0.46
docker swarm join-token worker token
[root@jenkins-master ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join \
--token SWMTKN-1-5vzw37ummd0h863jddbig798pbq3jpgoepf95g4uenodwhtc7v-543arzx838nj0pgo2yujyfko4 \
192.168.0.46:2377
[root@jenkins47~]# docker swarm join --token SWMTKN-1-5vzw37ummd0h863jddbig798pbq3jpgoepf95g4uenodwhtc7v-543arzx838nj0pgo2yujyfko4 192.168.0.46:2377
[root@jenkins-master ~]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
5s0spx5wonjgsl8k63vfybq1v zabbix.xxxx Ready Active
ttfs9upr4bmhyt9ssfxfixkwm jenkins47 Ready Active
uc40c8karvu3pq2eupllyicz8 * jenkins-master Ready Active Leader
三.Docker-swarm内部network,nginxなどの構成
1.ミラーウェアハウスの作成
docker run -d --name basic-registry --net=skong -p 5000 -v /data/registry:/var/lib/registry -v /data/web/certs:/certs registry:latest
2.network作成
docker network create -d overlay --subnet=10.0.1.0/24 --attachable sk-net
3.swarmクラスタ内部nginxコンテナ作成
docker run -d --name nginx --net=sk-net -p 80:80 -p 443:443 -v /data/web/xxxx:/data/conf -v /data/web/certs:/data/ssl basic-registry.xxxx.com/xxx/nginx
nginxのプロファイルを外にマウントして、いつでも変更が有効になるようにする必要があります.
四.swarmクラスタでのサービス作成使用
1.サービス作成
docker service create --name sk_resource --hostname sk_resource --network sk-net registry.xxxx.com/sk_runtime:master
swarmではserviceの概念はnginxのupstreamに似ており、複数のコンテナを構成しながら高可用性の機能を持つことができ、service nameはswarmのnetworkでホスト名/ipと理解できる.
server {
listen 80;
server_name dev-test.xxxx.com;
access_log /data/nginx/logs/ll.log main;
location / {
proxy_pass http://sk_resource;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_buffering on;
proxy_busy_buffers_size 64k;
proxy_max_temp_file_size 1024m;
}
}
五.Jenkinsはコンテナクラスタの更新サービスに協力する
1.サービス作成
ansible 192.168.2.10 -m shell -a 'docker service update --image registry.xxxx.com/sk_runtime:beta1.0 sk_resource'