KubernetesでHA構成のRedisを実現する k8s-redis-ha

High Availability(HA)構成のRedisをKubernetes上で動かせるようにするDockerイメージ k8s-redis-ha を作りました。

Kubernetesでは、状態を持たないマイクロサービスを扱うのは以前から非常に簡単だったのですが、データベースのように状態を持っておりかつクラウドネイティブではないマイクロサービスを扱おうとすると、なかなか面倒な状態が続いてきました。1年ほど前に開発されたHA構成のRedisを実現するイメージに公式サンプルがありますが、7つの kubectl コマンドを順番に入力しないとHA構成を展開できず、やっぱり面倒です(;一_一)

しかし、2016年12月にリリースされた1.5でStatefulSetsという機能が追加され、状態を持つマイクロサービスもそこそこ扱いやすくなりました。このStatefulSetsや1.4で追加されたInit Containerといった新しい機能を使って、HA構成を実現するモダンなイメージとしてk8s-redis-haを作りました。

k8s-redis-haでは、HA構成の作成は kubectl コマンド一つで実行できます。また、Redisイメージに依存していないので、Redisの最新版がリリースされたらk8s-redis-haの更新を待つことなくすぐに使うことができます。そのほか、 kubectl scale --replicas=5 のようにして動的にスケールアップ/ダウンしても正しく動作し続けます。

みなさん、ぜひ使ってみて感想をお聞かせください (๑❛ᴗ❛๑)