Slide 1

Slide 1 text

GoogleとOracle:この二人は友達になれました ~GKEでOraOperatorを動かそう~ 株式会社スリーシェイク 中楯 直希

Slide 2

Slide 2 text

\du 2 株式会社スリーシェイク Sreake事業部 業務内容 - DBRE兼SRE見習い - 全人類にデータベースを好きになってもらうために 活動しています - 自称データ雑用係 - DBAでもDBREでもデータエンジニアでも 興味あること - DBをKubernetesにのせること - SREっぽいこと - データベース関連ならなんでも Jagu’e’rにはデータベース分科会がないので、場違いじゃない範囲で いろんな分科会にお邪魔しています。 中楯 直希 @nnaka2992 @nnaka2992.bsky.social

Slide 3

Slide 3 text

SREを主軸にクラウドネイティブ化/エンジニアリング内製化を支援 SRE/DevOps SecOps BizOps HR ・SRE総合支援からセキュリティ対 策を全方位支援 ・Geminiを用いた生成AIの活用支援 ・ワンストップで脆弱性診断を行う セキュリティ対策SaaS ・クラウド型ETL/データパイプ ラインSaaSの決定版 ・あらゆるSaaSをノーコードで連携 ・ハイスキルフリーランスエンジニ ア紹介エージェント IT内製化 / 高度化 クラウドネイティブ化 モダナイゼーション ITアジリティ向上

Slide 4

Slide 4 text

Sreakeサービスの概要 SREの考え方を軸にした全方位型のご支援 クラウドネイティブインフラ・セキュリティ支援 クラウドネイティブアプリケーション開発支援 GenAI基盤構築支援 ・コンテナ化、コンテナ運用ご支援  (Kubernetesに強み) ・CI/CD環境構築支援 ・クラウドセキュリティ設計・運用支援 ・Observability設計・運用支援 データモダナイゼーション支援 ・コンテナ化対応などクラウドネイティブ対応に関す るアプリケーション開発のご支援 ・アプリケーションモダナイゼーション支援 ・バックエンド開発支援(Go, Python, TypeScript) ・フロントエンド開発支援(Vue, React) ・BigQuery/Dataplex データ基盤構築支援 ・BI(Looker)構築をフルスタックで支援 ・Snowflakeメインのデータ基盤構築支援 ・DBRE支援(Spanner/AlloyDB) ・NewSQL(TiDB, YugabyteDB)支援 ・VertexAIシリーズ構築運用内製化支援 ・外部SaaS連携支援 ・Gemini API導入支援 ・AI CCoE立ち上げ支援 ・SRE LLMの提供 ● 高度な技術力と幅広い領域の経験を持つエンジニアが多数在籍しており、伴走型でお客様に最適なクラウドネイティブ対応の ご支援を行います。 ● インフラ・アプリケーション・セキュリティなど含め全方位型で対応可能です。 SREの考え方を元に運用まで見据えたご支援を行います。

Slide 5

Slide 5 text

個人的Google Cloudの注目リリース 5 突然ですが2024年Google Cloudの 注目リリースを発表します

Slide 6

Slide 6 text

個人的Google Cloudの注目リリース 6 3位: Gemini in Databases

Slide 7

Slide 7 text

個人的Google Cloudの注目リリース 7 2位: 全てのDBでベクトル検索サポート

Slide 8

Slide 8 text

個人的Google Cloudの注目リリース 8 1位: Oracleとのパートナーシップ 意味深な余白

Slide 9

Slide 9 text

個人的Google Cloudの注目リリース 9 ところでOracle DBはk8s用の オペレーターがあります 意味深な余白

Slide 10

Slide 10 text

個人的Google Cloudの注目リリース 10 ところでOracle DBはk8s用の オペレーターがあります 意味深な余白

Slide 11

Slide 11 text

個人的Google Cloudの注目リリース 11 ところでOracle DBはk8s用の オペレーターがあります 意味深な余白 GKEにOracle DatabaseのOperator をのせられるようになった!!!

Slide 12

Slide 12 text

今日はなすこと 12 今日はなすこと ✅ Oracle Database Operator for Kubernetesの紹介 ✅ GKE上での動作デモ

Slide 13

Slide 13 text

今日はなすこと 13 今日はなすこと ✅ Oracle Database Operator for Kubernetesの紹介 ✅ GKE上での動作デモ 今日はなさないこと ❌ Oracle Databaseのライセンス体型

Slide 14

Slide 14 text

OraOperatorの紹介 14 Oracle Database Operator for Kubernetes¹とは ● Oracleが中心となって開発している「Oracle DatabaseをKubernetse Nativeにする」オペレーター 1. https://github.com/oracle/oracle-database-operator

Slide 15

Slide 15 text

OraOperatorの紹介 15 Oracle Database Operator for Kubernetes¹とは ● Oracleが中心となって開発している「Oracle DatabaseをKubernetse Nativeにする」オペレーター ● 大きく分けて3種類の機能を提供している 1. https://github.com/oracle/oracle-database-operator

Slide 16

Slide 16 text

OraOperatorの紹介 16 Oracle Database Operator for Kubernetes¹とは ● Oracleが中心となって開発している「Oracle DatabaseをKubernetse Nativeにする」オペレーター ● 大きく分けて3種類の機能を提供している ○ OCI²にリソースを展開する機能 ○ Kubernetes上にOracle Databaseをデプロイする機能 ○ Kubernetes上のOracle Database運用を楽にする機能 1. https://github.com/oracle/oracle-database-operator 2. Oracle Cloud Infrastructureの略

Slide 17

Slide 17 text

OraOperatorの紹介 17 Oracle Database Operator for Kubernetes¹とは ● Oracleが中心となって開発している「Oracle DatabaseをKubernetse Nativeにする」オペレーター ● 大きく分けて3種類の機能を提供している ○ OCI²にリソースを展開する機能 ○ Kubernetes上にOracle Databaseをデプロイする機能 ○ Kubernetes上のOracle Database運用を楽にする機能 1. https://github.com/oracle/oracle-database-operator 2. Oracle Cloud Infrastructureの略

Slide 18

Slide 18 text

OraOperatorの紹介 18 Oracle Database Operator for Kubernetes¹とは ● Oracleが中心となって開発している「Oracle DatabaseをKubernetse Nativeにする」オペレーター ● 大きく分けて3種類の機能を提供している ○ OCI²にリソースを展開する機能 ○ Kubernetes上にOracle Databaseをデプロイする機能 ○ Kubernetes上のOracle Database運用を楽にする機能 今日はOracle DatabaseをGKEにデプロイする部分をデモします 1. https://github.com/oracle/oracle-database-operator 2. Oracle Cloud Infrastructureの略

Slide 19

Slide 19 text

OraOperatorデモ: 環境セットアップ 19 GKEをプロビジョニングしたTerraformコード # ./module/network/main.tf resource "google_compute_network" "main" { name = "${var.project_name}-network" auto_create_subnetworks = false routing_mode = "GLOBAL" mtu = 1460 } resource "google_compute_subnetwork" "main" { name = "${var.project_name}-subnetwork" network = google_compute_network.main.id region = var.region ip_cidr_range = var.subnetwork.primary_ip_cidr secondary_ip_range { range_name = "${var.project_name}-range-pods" ip_cidr_range = var.subnetwork.secondary_ip_pods_cidr } secondary_ip_range { range_name = "${var.project_name}-range-services" ip_cidr_range = var.subnetwork.secondary_ip_services_cidr } } # ./main.tf module "network" { source = "./modules/network" project_name = var.project_id region = var.region subnetwork = { primary_ip_cidr = var.subnetwork.primary_ip_cidr secondary_ip_pods_cidr = cidrsubnet(var.subnetwork.secondary_ip_cidr, 4, 0) secondary_ip_services_cidr = cidrsubnet(var.subnetwork.secondary_ip_cidr, 4, 1) } } # ./main.tf module "gke" { source = "terraform-google-modules/kubernetes-engine/google" version = "31.1.0" project_id = var.project_id name = "${var.project_id}-cluster" regional = false region = var.region zones = ["${var.region}-a", "${var.region}-b", "${var.region}-c"] network = module.network.network_name subnetwork = module.network.subnetwork_name # ip_range_pods with /20 CIDR block ## witch is 4096 addresses and 16 nodes in max. ip_range_pods = module.network.subnetwork_secondary_ip_cidr_pods_range_name # ip_range_services with /20 CIDR block ## witch is 4096 services. ip_range_services = module.network.subnetwork_secondary_ip_cidr_services_range_name create_service_account = true enable_binary_authorization = false deletion_protection = false stateful_ha = true node_pools = [ { name = "default-pool" machine_type = "e2-standard-8" min_count = 0 max_count = 1 disk_size_gb = 20 disk_type = "pd-standard" local_ssd_count = 0 preemptible = true initial_node_count = 1 } ] remove_default_node_pool = true }

Slide 20

Slide 20 text

OraOperatorデモ: Operatorのインストール 20 GKEにオペレーターをインストールする # certmanagerをインストール > kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.14.4/cert-manager.yaml # Operatorのリポジトリをクローン > git clone https://github.com/oracle/oracle-database-operator.git # rbacをGKEにApply > kubectl apply -f oracle-database-operator/rbac/cluster-role-binding.yaml # OperatorをGKEに作成 > kubectl apply -f oracle-database-operator/oracle-database-operator.yaml # Operatorが起動していることを確認 > kubectl get pods -n oracle-database-operator-system NAME READY STATUS RESTARTS AGE oracle-database-operator-controller-manager-5b55c7b74d-4jjhz 1/1 Running 0 9m3s oracle-database-operator-controller-manager-5b55c7b74d-hxbt5 1/1 Running 0 9m3s oracle-database-operator-controller-manager-5b55c7b74d-mkwmf 1/1 Running 0 9m3s

Slide 21

Slide 21 text

OraOperatorデモ: Oracle Databaseの起動 21 Oracle Databaseを起動する # oracle のコンテナレジストリの認証情報を登録 > kubectl create secret docker-registry oracle-container-registry-secret --docker-server=container-registry.oracle.com --docker-username='' --docker-password='' --docker-email='' # SingleInstanceDatabaseリソースを作成 > kubectl apply -f ./singleinstancedatabase_free.yaml > kubectl get singleinstancedatabase sidb-sample NAME EDITION STATUS VERSION CONNECT STR TCPS CONNECT STR OEM EXPRESS URL sidb-sample Free    Healthy 23.5.0.0.0 10.0.25.54:1521/ORCL1 Unavailable https://10.0.25.54:5500/em

Slide 22

Slide 22 text

OraOperatorデモ: Operatorのインストール 22 Applyしたyamlファイルの内容 apiVersion: database.oracle.com/v1alpha1 kind: SingleInstanceDatabase metadata: name: freedb-sample namespace: default spec: sid: FREE edition: free adminPassword: secretName: db-admin-secret image: pullFrom: container-registry.oracle.com/database/free:latest prebuiltDB: true persistence: size: 50Gi storageClass: "standard-rwo" # GKEのCSIドライバー accessMode: "ReadWriteOnce" replicas: 1 # Freeエディションでは 1podのみ

Slide 23

Slide 23 text

感想 23 動かしてみての感想 ● 他のDB Operatorに比べて面倒な部分が多い ○ imageを配布するコンテナレジストリにログインが必要 ● Podの立ち上げに時間がかかる ○ Oracle Database自体がPostgreSQL/MySQLに比べると起動に時 間がかかるため ● データのレプリケーションの設定が面倒そう(未検証) ○ DataGuard(Oracle DBのレプリケーションツール)をCRDとして起動 する必要がある ○ 他DBのOperatorだとDBリソースのYamlファイルに Replication: trueなどするとレプリケーションされる。