keycloak を HAモードで動かす (Docker Swarm mode)
概要
前に作ったKeycloakコンテナをHAモードで動かします。 https://hub.docker.com/r/moremagic/keycloak-jdbc-ping/
ロードバランサが必要なのですが nginxとかを使うのではなく
Docker の Swarmモードを使ってみようとおもいます
環境情報
Ubuntu 18.04 Server(ip: 192.168.56.101)
# uname -a Linux mitsu 4.15.0-22-generic #24-Ubuntu SMP Wed May 16 12:15:17 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
Docker
~# docker version Client: Version: 17.12.1-ce API version: 1.35 Go version: go1.10.1 Git commit: 7390fc6 Built: Wed Apr 18 01:23:11 2018 OS/Arch: linux/amd64 Server: Engine: Version: 17.12.1-ce API version: 1.35 (minimum version 1.12) Go version: go1.10.1 Git commit: 7390fc6 Built: Wed Feb 28 17:46:05 2018 OS/Arch: linux/amd64 Experimental: false
準備
swarm mode の準備をします
~# docker swarm init --advertise-addr 192.168.56.101
network, postgres の準備をしてから keycloak service を作ります
networkを作るとき、 --driver overlay ---attachable
オプションを付けることがポイントです。
docker network create --driver overlay --attachable mynet docker run --name postgres --net mynet -e POSTGRES_DATABASE=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password -e POSTGRES_ROOT_PASSWORD=password -d postgres docker service create -p 8080:8080 -p 8443:8443 -p 9990:9990 -p 7600:7600 -p 57600:57600 -p 45700:45700 --name keycloak --network mynet -e POSTGRES_DATABASE=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password moremagic/keycloak-jdbc-ping
ここまでできたら Keycloakは立ち上がっているのですが、初期ユーザがないのでログインできません。
keycloak の初期ユーザが無いのでユーザ登録をするためのセットアップコンテナを単独で起動させます。
docker run -dP --name keycloak-setup --net mynet -e POSTGRES_DATABASE=keycloak -e POSTGRES_USER=keycloak -e POSTGRES_PASSWORD=password moremagic/keycloak-jdbc-ping
セットアップコンテナが起動したらにそのコンテナで。初期ユーザを admin/admin で作りましょう
docker exec -ti keycloak-setup /bin/bash # keycloak/bin/add-user-keycloak.sh -u admin -p admin # exit
ここまでできたら以下URLをブラウザで開いて adminでログインできるようになるはずです
http://
必要に応じて keycloak-setupコンテナは潰してください。
scale
~# docker service scale keycloak=4 keycloak scaled to 4 overall progress: 4 out of 4 tasks 1/4: running [==================================================>] 2/4: running [==================================================>] 3/4: running [==================================================>] 4/4: running [==================================================>] verify: Service converged
log
~# docker service logs -f keycloak
image のアップデート
docker service update --image moremagic/keycloak-jdbc-ping:<new-version> keycloak
感想
swarm mode があると ラクチン。