スマートスタイル TECH BLOG

データベース&クラウド技術情報

Oracle Service Operator for Kubernatesを使用したMySQL Database Serviceの利用

Oracle Service Operator for Kubernatesを使用したMySQL Database Serviceの利用

先日、Oracle Service Operator for Kubernates(OSOK)のリリースが発表されました。
OSOKは、OCIが提供するデータベースサービス(Autonomous Database/MySQL Database Service)、ストリーミングサービスのためのKubernates Operator及びSDKとなります。

Github OSOK page

現時点でサポートされているサービスは以下になります。

  • Autonomous Database (specifically Autonomous Transaction Processing, Autonomous Data Warehouse), which provides automated patching, upgrades, and tuning. Autonomous Database can perform all routine database maintenance tasks while the system is running, without human intervention.
  • MySQL Database, which provides a fully managed database service for developing and deploying secure cloud native applications using the popular MySQL open source database.
  • Streaming, which provides a fully managed, scalable, and durable solution for ingesting and consuming high-volume data streams in real-time

今回は、このOSOKを使用してMySQL Database ServiceをKubernatesのリソースとして動作させてみたいと思います。

Adding OCI Service Operator for Kubernetes to Clusters

OSOKの準備

OSOKを動作させるためには、以下を準備する必要があります。

  1. Oracle Cloud Infrastructureの利用準備
  2. Oracle Container Engine for Kubernetes(OKE)の作成
  3. 操作端末上へのkubectlのインストールと準備
  4. Operator SDKのインストール
  5. Operator Lifecycle Managerのインストール
  6. Oracle Service Operator for Kubernates に必要なクラウドリソースの作成
  7. Oracle Service Operator for Kubernates のインストール
  8. OKE上でのOCIサービスの作成

今回は、1~3については事前に対応済みとして、以降の作業から説明します。
1~3の準備につきましては、以下のマニュアルをご確認ください。

https://docs.oracle.com/ja-jp/iaas/Content/GSG/Concepts/baremetalintro.htm
https://docs.oracle.com/ja-jp/iaas/Content/ContEng/Concepts/contengprerequisites.htm

Operator SDKのインストール

OSOKは、Kubernates上でOCIサービスを管理するためのOperatorです。
Operator Lifecycle Managerで管理できるようパッケージングされており、Operator SDKを使用して簡単にOKE上にデプロイできます。

Installationに従い、準備を進めていきます。

まずは、作業端末にoperator-sdkをダウンロードします。
今回は、WSL2(Ubuntu)で作業を行いました。

operator-sdkコマンドの実行準備ができたら、OLMをOKEにインストールします。

Oracle Service Operator for Kubernates に必要なクラウドリソースの作成

OSOKでは、OperatorからOCIサービスを管理するためにAPIコールを実行します。
そのため、OKEのワーカノードからリソースの管理のためのAPIコールを許可する必要があります。

まずはOKE用のDynamic Groupを作成してください。

Dynamic Groupには以下のポリシが必要です。

また、OSOKが利用するOCIユーザ/グループの作成も必要となります。
作成後に表示されるユーザ、グループのOCIDはOSOKのSecretに利用するため記憶しておいてください。

作成したユーザのAPI Keyを準備します。

Oracle Service Operator for Kubernates のインストール

デフォルトのNamespaceでも問題ありませんが、ここでは検証に利用するNamespaceを作成します。

OSOKが利用するためのSecretsを作成します。

Operator Bundle ImageをPullし、operator-sdk でインストールします。

インストールが完了すると、OSOKの各リソースが作成されている事が確認できます。

OKE上でのMySQL Database Serviceの作成

OSOKを使用して作成できるリソースは個別にドキュメントが用意されています。

ここではMySQL Database Service(MDS)を作成したいと思います。

まずは、MDSに利用する管理ユーザ名、パスワードのSecretを作成します。

Secretsに指定する文字列はbase64でハッシュされている必要があります。

以下の内容で、secret.yamlを作成しました。

次にMySQL Database System用のマニフェストを作成します。
マニフェストに指定可能なパラメータは以下を参照してください。

https://github.com/oracle/oci-service-operator/blob/main/docs/mysql.md#mysql-dbsystem-specification-parameters

configration.idshapeNameは以下で確認できます。

今回は、以下のように mds.yaml を作成しました。

これまでに作成したマニフェストを実行します。

しばらくすると、MDSが作成されている事が確認できます。

接続テスト用のPodをデプロイします。

MDSの接続情報はSecretとして格納されていますので、以下のように確認します。

確認したIP/PORT、及び設定した接続情報でアクセスできることを確認します。

問題なくアクセスできる事が確認できました!

なお、内部FQDNでももちろんアクセス可能ですが、弊社検証時にはFQDNが有効であってもSecretに表示されませんでした。

実運用では、Serviceリソースを定義することで接続先の切り替えが容易になります。

Kubernatesのサービスからもアクセス可能なことが確認できました。

まとめ

OSOKを利用した、OCIのデータベースサービスとKubernatesの統合について見ていきました。

前準備が少々ありますが、とても簡単にリソースを登録することができました。

Kubernatesにおけるデータベースのようなステートフルなアプリケーションの運用は悩みのタネですが、MDSやADBのようなマネージドサービスを利用することで、安心してアプリケーションの開発に注力できるのではないでしょうか。

現時点では、MDSに関してはHeatwaveの有効化や、バックアップの設定といった項目は無いようですが、今後さらに機能が拡張されていく事を期待したいと思います。

Kubernatesを導入されている方は、ぜひご検討ください。

Return Top