Slide 1

Slide 1 text

Oracle MySQL Operator for Kubernetes Cloud Native Database Meetup #3 Yutaka Ichikawa Solutions Architect Oracle Corporation Japan Jan 14, 2022

Slide 2

Slide 2 text

2 Copyright © 2022, Oracle and/or its affiliates Profile Name • Yutaka Ichikawa/市川 豊 Belong • Solutions Architect Role • Principal Cloud Solution Engineer SNS • Twitter/GitHub/Qiita:cyberblack28 Blog • https://cyberblack28.hatenablog.com/ Materials • https://speakerdeck.com/cyberblack28/ Community • CloudNative Days Tokyo #cndt #o11y2022 Certified • Certified Kubernetes Administrator • Certified Kubernetes Application Developer • Certified Kubernetes Security Specialist • Kubernetes and Cloud Native Associate Publications New 3/11 開催 絶賛CFP受付中!!(1/25締切)

Slide 3

Slide 3 text

Kubernetes Operator • What’s Kubernetes Operator ? • Kubernetesについて • Operatorについて Oracle MySQL Operator for K8s • Summary • Feature • MySQL InnoDB Cluster • Container-based application & MySQL • Oracle MySQL Operator on K8s • Other MySQL Operator Oracle MySQL Operator for K8s DEMO • WordPress + Oracle MySQL Operator (Scale Out) on K8s • Self-healing(Failover) • まとめ • 参考資料 3 Copyright © 2022, Oracle and/or its affiliates Agenda

Slide 4

Slide 4 text

Copyright © 2022, Oracle and/or its affiliates 4 Kubernetes Operator What’s Kubernetes Operator ?

Slide 5

Slide 5 text

5 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? • コンテナのスケジューリング • ローリングアップデート • オートスケーリング • 死活監視 • 頻繁なアプリケーションのデプロイを可能にするシステム 基盤 • 無停止によるリリース、高可用なシステム基盤 • 負荷に応じた伸縮自在なシステム基盤 実現 主な役割 複数のコンテナを自動管理するプラットフォーム、コンテナオーケストレーション • コンテナの自動修復 • サービスディスカバリ • ロードバランシング

Slide 6

Slide 6 text

6 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? $ kubectl apply -f sample-nginx.yaml マニフェストファイル YAML 宣言的オペレーション Kubernetesクラスタ上に配備する要素をマニフェストファイルに定義してクラスタへ登録、 その定義をあるべき理想の状態として維持する。 Kubernetesクラスタ sample-nginx.yaml

Slide 7

Slide 7 text

7 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? マニフェストファイル YAML Controllerがあるべき理想の状態へ収束 Controller内のReconciliation loop(調整ループ)と呼ばれる、あるべき理想の状 態へ収束させるループ処理を実行。 Kubernetesクラスタ 登録 Controller 監視 コンテナ管理 (作成・削除) Reconciliation loop

Slide 8

Slide 8 text

8 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Reconciliation loop Observe Act Analyze 現在の状態を確認 あるべき理想の状態と現在の状態 との差分を分析 分析した差分に対する処理を実行

Slide 9

Slide 9 text

9 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Observe Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 指定された 「replicas: 3」 のPod数を維持すること

Slide 10

Slide 10 text

10 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Observe Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 (例)起動しているPodが2個の場合 Observe 理想:3 現状:2

Slide 11

Slide 11 text

11 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Observe Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 (例)起動しているPodが2個の場合 Analyze 理想状態と比較して、Podが1個足りない

Slide 12

Slide 12 text

12 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Observe Act Analyze Controller あるべき理想の状態 Kubernetesクラスタの状態 Act 「image: nginx:1.21.0」のPodを作成 (例)起動しているPodが2個の場合

Slide 13

Slide 13 text

13 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Kubernetesについて What’s Kubernetes Operator ? Kubernetesには、たくさんのControllerがあり、この仕組みを利用して処理の自動化を実現 Deployment Controller, Ingress Controller, Node Controller etc. 1つの分散処理システムとして成立

Slide 14

Slide 14 text

14 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Operatorについて What’s Kubernetes Operator ? 実現したい運用ロジックをコード化して、自動処理させることができる 運用のコード化 Controllerは、Custom Controllerとして自作することもできる

Slide 15

Slide 15 text

15 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Operatorについて What’s Kubernetes Operator ? Shell Perl crond etc. Linuxシステムで、Shell ScriptやPerlなどとcrond を連携して運用を自動化 Kubernetesでは、Custom Controllerと Custom Resourceと組み合わせて、作成及び 利用するOperatorで運用を自動化 Controller (Custom Controller) Custom Resource Operator 運用のコード化

Slide 16

Slide 16 text

16 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Operatorについて What’s Kubernetes Operator ? Custom Resource • ユーザが独自に定義するリソース • Custom Resource Definition(CRD)を利用して定義する • Kubernetes APIを拡張して実装する • Kubernetes APIを利用して、オブジェクトを管理 Custom Controller • ユーザが独自に作成するコントローラー • Custom Resourceの実体となるオブジェクトの状態をあるべき理想の姿に維持

Slide 17

Slide 17 text

17 Copyright © 2022, Oracle and/or its affiliates Kubernetes Operator Operatorについて What’s Kubernetes Operator ? OperatorHub.io(https://operatorhub.io/) • Kubernetes Operatorのパブリックレジストリ • オープンソースコミュニティ、ソフトウェアベンダー、クラウドベンダーなど OperatorHubに協力 • OperatorHubにマッチするOperatorがある場合、自作せずに利用可能 • 192 items/132 provider(2021年7月時点)

Slide 18

Slide 18 text

Copyright © 2022, Oracle and/or its affiliates 18 Oracle MySQL Operator for K8s Oracle MySQL Operator MySQL InnoDB Cluster

Slide 19

Slide 19 text

19 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s MySQLの高可用性構成を実現するInnoDB ClusterをKubernetes上に構築、管理を容易化するオペレター Summary • オラクルのオープンソースプロジェクト(https://github.com/mysql/mysql-operator) • 2018年にリリース。一時期開発が中断、2021年5月末にプレビューリリース • Preview State ⇒ DO NOT USE IN PRODUCTION. OPERATOR CAPABILITY LEVELS https://operatorframework.io/operator-capabilities/ バックアップや動的リカバリなどストレージ領域を含めたアプリケーションライフサイクルをサポート

Slide 20

Slide 20 text

20 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s Feature • MySQL Server/Routerの自動 デプロイと管理 • セルフヒーリング • バックアップ • MySQL Server/Routerのス ケールアウト/イン • ローリングアップデート(最小限 ダウンタイム)

Slide 21

Slide 21 text

21 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s MySQL InnoDB Cluster グループレプリケーション、MySQL Router、MySQL Shell の3つの技術要素を組み合わせて実現す るMySQLサーバの高可用性構成 MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell P S S グループレプリケーション • 複数のMySQLサーバのデータをトランザク ション整合性を担保して複製可能 • プライマリへの自動昇格機能も実装 • 複数のMySQL接続、 MySQL/MySQLXプ ロトコルに対応 • バックエンドの構成変 更や障害発生を検出 して接続の切り替えを 自動的に実行 mysqlshクライアント、コマンドを利用して InnoDB Clusterの構成や設定管理が可能 P = Primary, S=Secondary

Slide 22

Slide 22 text

22 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s MySQL InnoDB Cluster Secondary Secondary Primary Primary Primary Praimary シングルプライマリ型 マルチプライマリ型 参照処理のみを分散 更新処理を分散 Oracle MySQL Operator for K8sでは、現時点(2022年1月)ではシングルプライマリのみ対応

Slide 23

Slide 23 text

23 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s MySQL InnoDB Cluster MySQL InnoDB Clusterの高可用性がシングルプライマリ型でどのように機能するか? S S P MySQL Router App S S P MySQL Router App R/W R/O S P MySQL Router App P R/O R/O R/W S MySQL Router App P R/O R/W S Group Replication Group Replication Group Replication Group Replication

Slide 24

Slide 24 text

24 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s MySQL InnoDB Cluster Virtual Machine Virtual Machine Virtual Machine On-premise On-premise On-premise Virtual Machine Virtual Machine Virtual Machine OKE Block Volume Block Volume Block Volume On-premise Virtual Machine Container InnoDB Clusterは、ハードウェア調達、MySQLインストール(台数分)、グループレプリケーション設定やセットアップな ど構築、バックアップ・リストア、スケールなど、運用に時間を要する。 オンプレミス(物理)に比べると仮想マシン、コンテナの方が時間的には改善傾向にある

Slide 25

Slide 25 text

25 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s Container-based application & MySQL Oracle MySQL Operatorは、現時点(2022年1月)プレビュー版のため本番利用は厳しいので、OCIにおける 「MySQL Database Service」というMySQLのマネージドサービスとの利用を推奨 Use MySQL Kubernetes Operator to automate Use MySQL Database Service - Fully Managed Service - HeatWave Query Acceleration - Peace of Mind Architecture https://www.oracle.com/jp/mysql/

Slide 26

Slide 26 text

26 Copyright © 2022, Oracle and/or its affiliates Oracle Announces MySQL Autopilot for MySQL HeatWave Service MySQL Autopilotは、9つの新しい機械学習を利用した自動化機能を提供し、 MySQL HeatWave Serviceのパフォーマンスとスケーラビリティをさらに向上 https://www.oracle.com/uk/news/announcement/mysql-autopilot-for-heatwave-2021-08-10/ Press Release

Slide 27

Slide 27 text

27 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s Oracle MySQL Operator on K8s Virtual Machine Virtual Machine Virtual Machine OKE Block Volume PVC PV Block Volume PVC PV Block Volume PVC PV MySQL Operator Agent Pod Service MySQL Router Pod Operator Agent : MySQL InnoDB Clusterメンバーを 制御するサイドカーコンテナ MySQL Shellから制御可能 MySQL : mysqldが稼働するコンテナ MySQL Router : アプリケーションがMySQL Routerを経 由してMySQLに接続 App MySQL Operator Pod App Service MySQL Operator : InnoDB Clusterの制御管理、 MySQL Shell(mysqlsh)の実行可能 type: LoadBalancer Request $ kubectl Custom Controller CRD apiVersion: mysql.oracle.com/v2alpha1 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds instances: 3 router: instances: 1 マニフェストの instances数を変更 することで、その数の Pod, PVC, PV, Block Volumeを自 動作成 sample-cluster.yaml manifest 0 1 2 StatfulSetの仕組みを利用 • 決められた順番でPodの起動や削除を実行 • Pod名が変わらない • PVCから固定の永続ストレージをマウント

Slide 28

Slide 28 text

28 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s 2021/7/27 「最新!MySQL Operator for Kubernetes」ウェビナーフィードバック • MySQL InnoDB ReplicaSet は未対応 MySQL InnoDB Clusterのグループレプリケーションに対する、 MySQL InnoDB ReplicaSetは、非同期レプリケーション。 グループ レプリケーション 非同期 レプリケーション • MySQL OperatorからMySQL Shellでのスケールは可能ではあるが、Kubernetesのマニフェストで対 応することを推奨 MySQL Shellでは、MySQL管理、Kubernetesクラスタに関係するものはマニフェストで管理することを推奨。

Slide 29

Slide 29 text

Copyright © 2022, Oracle and/or its affiliates 32 Oracle MySQL Operator for K8s DEMO Scale WordPress + Oracle MySQL Operator (Scale Out/In) for K8s Self-healing(Failover)/Backup

Slide 30

Slide 30 text

33 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Demo環境概要図 WordPress + Oracle MySQL Operator (Scale Out/In) on K8s NFS PVC PV PVC PV Service Service Service Cloud Shell MySQL Operator Namespace: mysql-operator Namespace: default PVC PV PVC PV PVC PV Block Volume Pod Pod Pod Pod Pod Pod mycluster wordpress-service nsf-service Port: 6446 MySQL Router Pod Block Volume Block Volume Block Volume mycluster-router Primary Secondary Secondary mycluster-0 mycluster-1 mycluster-2 Group Replication WordPress Podを 10にスケールさせます。 MySQL Routerを2、MySQL Serverインスタン スを5にスケールさせます。その後、元の値に戻します。

Slide 31

Slide 31 text

34 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Scale Out WordPress + Oracle MySQL Operator (Scale Out/In) on K8s apiVersion: mysql.oracle.com/v2alpha1 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds instances: 3 version: "8.0.25" router: instances: 1 version: "8.0.25" apiVersion: mysql.oracle.com/v2alpha1 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds instances: 5 version: “8.0.25” router: instances: 2 version: "8.0.25" MySQL Podの数(PVC,PV,BlockVolume含む) MySQL Routerの数 マニフェストを書き換えて、kubectl applyすると自動スケールアウト。PVC、PV、Block Volumeも同時に作成。

Slide 32

Slide 32 text

35 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Scale In WordPress + Oracle MySQL Operator (Scale Out/In) on K8s apiVersion: mysql.oracle.com/v2alpha1 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds instances: 3 version: "8.0.25" router: instances: 1 version: "8.0.25" apiVersion: mysql.oracle.com/v2alpha1 kind: InnoDBCluster metadata: name: mycluster spec: secretName: mypwds instances: 5 version: “8.0.25” router: instances: 2 version: "8.0.25" MySQLとMySQL RouterのPod数は、マニフェストの数となる。2022年1月時点、PVC、PV、Block Volumeは自 動では削除されず、手動での削除。Reclaim PolicyがDeleteのため、手動でPVCを削除することで、PV、Block Volumeも同時に削除される。

Slide 33

Slide 33 text

38 Copyright © 2022, Oracle and/or its affiliates Movie Demo

Slide 34

Slide 34 text

39 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Demo環境概要図 Self-healing(Failover) Cloud Shell MySQL Operator Namespace: mysql-operator Namespace: mysql-cluster PVC PV PVC PV PVC PV Pod Pod Pod Pod MySQL Router Pod Block Volume Block Volume Block Volume mysql-router Primary Secondary Secondary mysql-0 mysql-1 mysql-2 Group Replication mysql-0を手動deleteして疑似障害を起こして、動作を確 認します。 Object Storage PVC PV Backup Job Backup Job OCI hostPath: path: /tmp/backupdir

Slide 35

Slide 35 text

40 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Self-healing(Failover) Self-healing(Failover) Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router mysql> create database test; mysql> create table test.test (i int primary key); mysql> insert into test.test values (1), (2), (3); Cloud Shell ① DB/Table Create ② Group Replication Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router Cloud Shell $ kubectl delete pod mysql-0 ③ Delete mysql-0 ⑤ Group Replication mysql> insert into test.test values (4), (5), (6); ④ Insert values into table of mysql-1

Slide 36

Slide 36 text

41 Copyright © 2022, Oracle and/or its affiliates Oracle MySQL Operator for K8s DEMO Pod Pod Pod mysql-0 mysql-1 mysql-2 MySQL Router mysql> select * from test.test; Cloud Shell ⑦ Check table of mysql-0 ⑥ Group Replication Self-healing(Failover) Self-healing(Failover)

Slide 37

Slide 37 text

43 Copyright © 2022, Oracle and/or its affiliates Movie Demo

Slide 38

Slide 38 text

44 Copyright © 2022, Oracle and/or its affiliates 1.MySQLの高可用性構成を実現するInnoDB ClusterをKubernetes上に構築、管理を容易化するオペレター 2.オラクルのオープンソースプロジェクトであり、OPERATOR CAPABILITY LEVELS III (2022年1月時点) • MySQL Server/Routerの自動デプロイと管理 • セルフヒーリング(フェールオーバー) • バックアップ 3.主な機能 まとめ 4.MySQL InnoDB ReplicaSet は未対応 5.MySQL Shellでは、MySQL管理、Kubernetesに関係するものはマニフェストで管理することを推奨。 • MySQL Server/Routerのスケールアウト/イン • ローリングアップデート(最小限ダウンタイム)

Slide 39

Slide 39 text

45 Copyright © 2022, Oracle and/or its affiliates 参考資料 MySQL Operator for Kubernetes https://github.com/mysql/mysql-operator 『データベース管理システム「MySQL」の新クライアント MySQL Shellを使おう』 梶山 隆輔 (著) Introduction to MySQL Operator for Kubernetes https://www.youtube.com/watch?v=Qb1R1Dl0-tA Kubernetes x MySQL ! OperatorでMySQLを動かしてみよう https://speakerdeck.com/cotoc/oracle-mysql-operator-jian-zheng-sitemita SpeakerDeck YouTube GitHub Book

Slide 40

Slide 40 text

46 Copyright © 2022, Oracle and/or its affiliates 公開資料 Oracle MySQL Operator for Kubernetes プレビューリリース版解説 https://www.youtube.com/watch?v=V9lcaTqN2ko&list=PL8x2FJpi0g-vCJu519r2f8Ge4EIqmKYMk Oracle MySQL Operator for Kubernetes https://speakerdeck.com/oracle4engineer/mysql-technology-cafe-number-13-oracle-mysql-operator-for- kubernetes-purebiyuririsuban-jie-shuo MySQL Technology Cafe 13 https://github.com/oracle-japan/mysql-technology-cafe-13 Oracle MySQL Operator for Kubernetes & WordPress https://qiita.com/cyberblack28/items/cdf744ece15311714b6c Oracle MySQL Opreator for Kubernetes & Self-healing(Failover) https://qiita.com/cyberblack28/items/553c99a3195b7998a2dc Qiit GitHub SpeakerDeck YouTube

Slide 41

Slide 41 text

47 Copyright © 2022, Oracle and/or its affiliates Oracle Database Operator for Kubernetes Oracle Database World https://www.oracle.com/database/database-world/on-demand/#sessions

Slide 42

Slide 42 text

48 Copyright © 2022, Oracle and/or its affiliates Oracle Database Operator for Kubernetes Oracle DB Operator Kubernetes Cluster kubectl Controller Controller Controller Containerized Oracle DBs Autonomous DBs On-Premises DBs Supported Database Configurations • Containerized Database in Kubernetes • Databases in Oracle Cloud • Databases on-premises Lifecycle Operations • Provision / Bind / Start / Stop / Terminate • Backup / Restore • Scaling • Patching, Upgrade • Monitoring, Logging, Metrics

Slide 43

Slide 43 text

49 Copyright © 2022, Oracle and/or its affiliates Oracle Database Operator for Kubernetes https://github.com/oracle/oracle-database-operator

Slide 44

Slide 44 text

50 Copyright © 2022, Oracle and/or its affiliates https://ochacafe.connpass.com/event/232810/ OCHaCafe5 #1 Kubernetes Operator 超入門 2022年1月19日(水) 19:00~21:00

Slide 45

Slide 45 text

51 Copyright © 2022, Oracle and/or its affiliates #ochacafe ではLTを絶賛募集中です!! # テーマ キーワード 1 Kubernetes Operator 超入門 Kubernetes Operator, SDK, etc. 2 Kebernetesで並列分散処理 Apache Spark, Spark Operator, etc. 3 Kubernetes のセキュリティ RBAC, NetworkPolicy, SecurityContext, etc. 4 挑戦 Typescript Typescript, JavaScript, React, Vue, etc. 5 実験!カオスエンジニアリング Chaos Engineering, Chaos Mesh, etc. 6 OMLOps を始めよう! Jupyter Enterprise Gateway, Kubeflow, etc.

Slide 46

Slide 46 text

Thank you 52 Copyright © 2022, Oracle and/or its affiliates

Slide 47

Slide 47 text

No content