Member-only story

DBオペレータ — Kubernetesのデータベースをプロのように管理する

gavin.zhou
10 min readNov 19, 2020

--

DB Operatorは、 Kloeckner-i社が開発した、Google Cloud SQL (GCSQL)を中心としたクラウドデータベースの管理を目的とした Kubernetes Operatorです。DB Operatorでは、Kubernetes Custom Resources (CR)を利用してGCSQLデータベースを作成することができます。データベースをKubernetesリソースとしてデプロイすることが可能になり、Kubernetes上で独自のステートフルデータベースを稼働させるという大変な作業をしなくてすむようになります。

Background

Kloeckner-iでは、各機能ブランチのオンデマンド環境を作成するなどの高度なCI/CD戦略を利用しています。これらの環境のためのKubernetesリソースマニフェストは、アプリケーションのソースリポジトリに格納されています。

しかし、データベースをポッドとして実行することは、以下の点で上手く機能していないため、利用可能性が高いとは言えないし、本番に備えているとも言えません。

• Kubernetes の永続ボリュームは簡単にサイズ変更できない。

・ポッドを別のノードに再スケジューリングした場合、永続的なストレージを切り離して再接続しなければならず、これには時間がかかることがある。

・永続ボリュームを別のノードにデタッチして再アタッチするには、ポッドを完全に終了させる必要がある。そうしないと、データベースボリュームがReadWriteOnceであるため、ポッドの作成はマルチアタッチエラーで失敗します。

・特定のゾーンでディスクが利用できないために、ポッドが保留モードになってしまうことがある。

googleapi: Error 503: ZONE_RESOURCE_POOL_EXHAUSTED - The zone ‘projects/xxx/zones/us-east1-d’ does not have enough resources available to fulfill the request.

これらの失敗を踏まえて、私たちは次のような疑問を投げかけました。

「クラウド管理されたデータベースインスタンスを使えばいいだけで、オンデマンド環境のライフサイクルで機能するようにはならないのだろうか?」

その疑問から、Kloeckner-iのDB Operatorが誕生しました。

How it works

--

--

No responses yet