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://:8080/

必要に応じて 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 があると ラクチン。