Slide 1

Slide 1 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesで実現する 運用自動化の新しいアプローチとは 日本オラクル株式会社 ソリューション・エンジニアリング統括 セールスコンサルタント May 17, 2019 茂 こと @cotoc88 #codetokyo19B2 B-2-2

Slide 2

Slide 2 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 本日のキーワード: Kubernetes Operator Kubernetesを拡張し、システムの運用自動化を実現するソフトウェア 2

Slide 3

Slide 3 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | システムに求められること イントロダクション 3

Slide 4

Slide 4 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | システムに求められること • ビジネスにもとめられる進化のスピードと品質 ✓サービスの早期リリース ✓市場の動向/反応を早期フィードバックして対応 ✓サービス停止による機会損失をなくす • システムは変化するビジネス要件に短い時間で 対応(リリース)できることが求められるように ✓アプリの変更をすぐに本番環境に適用 ✓変化を許容できるシステムを構築 ✓停止時間の短縮と運用作業の効率化 4 社内業務の効率化から新ビジネスの創造へ

Slide 5

Slide 5 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | システム開発のライフサイクル 5 ビジネスのスピードに合わせて、頻繁にライフサイクルを回す 要件・計画 開発 運用・保守

Slide 6

Slide 6 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | システム開発フェーズで求められること 6 アプリ開発 ・リリースサイクルの短縮 ・アプリ品質の向上 CI/CD - テスト、ビルドの自動化 - プロビジョニングの自動化 基盤構築 ・環境構築時間の短縮 ・構築した基盤の品質向上 Infrastructure as code - 自動化 - イミュータブル 求められること 実現方法

Slide 7

Slide 7 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | システム運用・保守フェーズで求められること 7 運用 ・性能と可用性の維持 ・運用品質のキープ 運用タスクの自動化 - 稼働中の構成変更・維持 保守 ・リリースリスクの低減 Blue Greenデプロイメント カナリアリリース 求められること 実現方法

Slide 8

Slide 8 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | コンテナ/コンテナ・オーケストレーター • コンテナ – アプリケーションの実行環境をコンテナとしてパッケージ化 – アプリケーションが安定して稼働する環境を、高速かつ簡単に構築できる ✓環境構築に必要な情報をコードとして管理できるので、いつでも同じ環境ができる(イミュータブル) ✓自動化されたリリースサイクルの構築、実践が可能(CI/CD) • コンテナ・オーケストレーター – 大量のコンテナの管理を自動化し、停止時間の短縮や運用作業の効率化が可能 ✓クラスターに配備する要素を全てコードによって定義(イミュータブル) ✓スケーリング、自動復旧など、構成変更、維持を自動化(運用自動化) 8 より効率的な実現が可能に

Slide 9

Slide 9 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes コンテナ・オーケストレーター 9

Slide 10

Slide 10 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesとは • コンテナ・オーケストレーターとは複数コンテナを自動管理するプラットフォーム 大量のコンテナを管理・運用を自動化するコンテナ・オーケストレーター 10 –リソースの抽象化 自動分散配置 –手動/自動でスケーリング –複数コンテナをまとめて制御 –障害時のコンテナ再立ち上げ –クラスター内/外のネットワーク アクセスの管理

Slide 11

Slide 11 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesの宣言的オペレーション • クラスターに配備する要素を全てmanifestファイル(=コード)によって定義 – 環境構成の変更内容をバージョン管理し、追跡可能にする – 運用オペレーションはコードの変更によって実施し、作業を簡素化する – 複数Kubernetesクラスターでの相互運用を実現する 11 Kubernetesクラスター manifestファイル ✓ アプリ x 3 ✓ データストア x 2 ✓ ネットワークはアプリ→ データストアを許可 ✓ …etc Kubernetesに適用 アプリケーション が動作するコンテナ データストア が動作するコンテナ

Slide 12

Slide 12 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesの操作 • Kubernetesの操作はkubectlコマンドラインツールを使用 • kubectlはAPI Server経由でetcdの操作を行う – etcd:Kubernetesのデータが保存される高信頼性データベース – API Server:etcdへの読み込み、書き込みを行うAPIサーバ ー 12 Kubernetesクラスター >_ kubectl(コマンドラインツール) etcd API Server Pod Container

Slide 13

Slide 13 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes上でコンテナが動作する様子 • Kubernetesでコンテナが動作する最も基本的な構成 – Pod / Container – Deployment / Deployment Controller 13 Dc Deployment Controller etcd API Server D Deployment Pod Container >_

Slide 14

Slide 14 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes上でコンテナが動作する様子 • Pod: – 複数のコンテナを束ねる単位(下の図ではひとつのPodにひとつのコンテナ) • Container: – コンテナそのもの。アプリケーションのワークロードの実態 14 Dc Deployment Controller etcd API Server D Deployment Pod Container >_

Slide 15

Slide 15 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes上でコンテナが動作する様子 • Deployment: – Podの状態(レプリカ数、コンテナイメージなど)を定義するデータ kubectlから投入する • Deployment Controller: – Deploymentの内容に合うようにPodの状態を制御するプロセス 15 Dc Deployment Controller etcd API Server D Deployment Pod Container >_

Slide 16

Slide 16 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | KubernetesのController Observe Analyze Act 16 ControllerはReconciliation Loop(突き合わせループ)により宣言した状態を維持する アプリケーションの現在の状態を確認する アプリケーションの現在の状態と 期待する状態を比較する 状態を一致させるために 必要な処理を行う

Slide 17

Slide 17 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes上でコンテナが作成されるまでの流れ 1. Deploymentマニフェストの適用 2. Deployment が作成される 3. Deployment Controllerが検知して、Podが作成される 17 Dc Deployment Controller etcd API Server D Deployment Pod Container >_ manifest アプリ x 3 をたてたい!

Slide 18

Slide 18 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesとは • コンテナ・オーケストレーターとは複数コンテナを自動管理するプラットフォーム • ・・・・でも 大量のコンテナを管理・運用を自動化するコンテナ・オーケストレーター –リソースの抽象化 自動分散配置 –手動/自動でスケーリング –複数コンテナをまとめて制御 –障害時のコンテナ再立ち上げ –クラスター内/外のネットワーク アクセスの管理 エンタープライズシステム の運用自動化のために 機能は足りている? 18

Slide 19

Slide 19 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetesの標準機能だけでは実現できないこと • コンテナで動作するソフトウェアが状態やデータをもつような場合には手作業で 運用タスクを行う必要がある – ミドルウェアのクラスタリングを構成 – バックアップ・リストア – 異なる設定をもつPod毎の障害復旧 19 • 例:データベース – マスター・スレーブ構成のDBをスケールアウトするときにはリードレプリカとして設定した上で立ち上げなければならない – バックアップ・リストアにはデータベース固有の操作が必要 • 例:アプリケーション・サーバー – クラスターには、役割の異なるクラスターメンバーが存在(管理サーバー/管理対象サーバー) それぞれ適切なオペレーションを行う必要がある ? ? ? ?

Slide 20

Slide 20 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 本日のキーワード: Kubernetes Operator Kubernetesを拡張し、システムの運用自動化を実現するソフトウェア 20

Slide 21

Slide 21 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes Operatorとは • Kubernetes上に展開してソフトウェア固有の運用タスクを自動実行する ソフトウェアをKubernetes Operatorと呼ぶ – Operatorはサードパーティやユーザーが実装し、Podとしてクラスターに配備する – インスタンス生成/設定/管理を運用管理者に代わって行う 運用知識をソフトウェアに入れみ、運用管理者の代わりに動作 Op Operator 21 SRE

Slide 22

Slide 22 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes Operatorの仕組み Operatorは以下のコンポーネントから成り立つ • Custom Resource – ユーザーが独自に定義したリソース – Custom Resource Definition(CRD)はKubernetes APIを拡張する (APIを拡張することでCustom Resourceが取り扱える状態) • Custom Controller – ユーザーが独自に作成するコントローラー • Custom Resourceの内容をKubernetesに作成する Operatorを作成するためのSDKが提供されている(Operator Framework) 22 独自に設定した定義とコントローラーから成り立つ https://github.com/operator-framework/operator-sdk

Slide 23

Slide 23 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Kubernetes Operatorの一般的な動作イメージ • 1. マニフェストの適用(Custom Resource) • 2. Operatorが検知して、Kubernetesのリソースを作成する • 3. リソースのControllerが検知して、オブジェクトが作成される D Operator etcd C Custom Resource Pod Container O D API Server >_ manifest 23

Slide 24

Slide 24 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 様々なソフトウェアでKubernetes Operatorの開発が進む • Kubernetes OperatorはCoreOS社(現Red Hat社)によって2016年に 提唱された • KubeCon + CloudNativeCon North America 2018 では キーノートや様々なセッションで繰り返し登場するなど、注目度があがっている 24 • etcd • Elasticsearch • Envoy • Istio • Kafka • Redis • Memchched • MongoDB • PostgreSQL • MySQL • Tomcat • WebLogic Server • Tensorflow • Rook • Prometheus • Jaeger And more… Kubernetes Operator in the Wild(2019/5 現在 96サービス登録) https://github.com/operator-framework/awesome-operatorsから抜粋

Slide 25

Slide 25 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | OracleがGitHubで公開しているOperator 25 MySQL Operator WebLogic Server Operator https://github.com/oracle/weblogic-kubernetes-operator https://github.com/oracle/mysql-operator

Slide 26

Slide 26 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL Operator 26

Slide 27

Slide 27 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL Operator • 2018年前半にリリース • 現在(2019/05) Ver.0.3.0 アルファ版 – MySQL 8.0 対応、Enterprise Edition 対応 • 提供する運用自動化機能 – 単一コマンドでKubernetes上にMySQL InnoDB Clusterを作成/スケール/削除可能 – MySQL InnoDB Clusterの自己修復(自動障害検出、自動回復) – データのバックアップ(オンデマンド、スケジューリング)及び復元 27 Kubernetes上のMySQL InnoDB Clusterの運用を自動化 https://github.com/oracle/mysql-operator

Slide 28

Slide 28 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Clusterとは? • 特徴 – MySQLネイティブの高可用性構成を構築可能(クラスタリングソフト等は不要) – DBレイヤーのフェイルオーバーだけでなく、アプリ接続先まで自動フェイルオーバー可能 – デフォルトはシングルプライマリーモードだが、マルチプライマリーモードでの動作も可能 • シングルプライマリーモード:1台のサーバーのみが更新処理可能、残りのサーバーは読み取り専用 – プライマリノードに障害発生時は、自動的に別のインスタンスが新プライマリに昇格 • マルチプライマリーモード:全台で更新処理可能 – MySQL側でのフェイルオーバー処理が不要になる 28 エンタープライズシステムで使用されるMySQLの高可用性フレームワーク https://dev.mysql.com/doc/refman/8.0/en/mysql-innodb-cluster-userguide.html

Slide 29

Slide 29 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Clusterアーキテクチャー MySQLの高可用性機能 自動フェールオーバー & リカバリ、矛盾検知 M M M MySQL Connector Application MySQL Router MySQL Connector Application MySQL Router MySQL Shell HA Group Replication アプリケーションはMySQL Routerに接続 Group Replicationによる 高可用性グループと メタデータの管理 MySQL Shellで設定管 理が可能 +-------------------------------+ | Database | +-------------------------------+ | information_schema | | mysql | | mysql_innodb_cluster_metadata | | performance_schema | | sys | +-------------------------------+ mysql_innodb_cluster_metadata.* performance_schema.replication_group_members performance_schema.replication_group_member_stats 29

Slide 30

Slide 30 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL OperatorによるMySQL InnoDB Clusterの管理 MySQL Operator Op M M M Group Replication (Single or Multi Primary) Load Balancer etcd API Server CR Custom Resource Application (Container) MySQL Router (Container) Request MySQL (Container) >_ manifest 30

Slide 31

Slide 31 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1コマンドで簡単にMySQL Operatorをインストール可能 ・・ RESOURCES: ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE mysql-operator-65475db5-8292w 0/1 ContainerCreating 0 1s ==> v1/ServiceAccount NAME SECRETS AGE mysql-agent 1 2s mysql-operator 1 2s ==> v1beta1/ClusterRole NAME AGE mysql-agent 2s mysql-operator 2s ==> v1beta1/ClusterRoleBinding NAME AGE mysql-agent 1s mysql-operator 1s ==> v1beta1/CustomResourceDefinition NAME AGE mysqlbackups.mysql.oracle.com 2s mysqlbackupschedules.mysql.oracle.com 2s mysqlclusters.mysql.oracle.com 2s mysqlrestores.mysql.oracle.com 2s ==> v1beta1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE mysql-operator 1/1 1 0 1s 31 $ helm install--name mysql-operator mysql-operator

Slide 32

Slide 32 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | MySQL InnoDB Clusterの作成 32 multi-master-cluster.yaml $ kubectl apply -f multi-master-cluster.yaml cluster.mysql.oracle.com/mysql created $ kubectl get pods NAME READY STATUS RESTARTS AGE mysql-0 2/2 Running 0 119s mysql-1 2/2 Running 0 82s mysql-2 2/2 Running 0 35s kind: Cluster metadata: name: mysql spec: multiMaster: true members: 3 ※Clusterリソースを作成すると下位リースに StatefulSet、Headless service が作成される データを保持するボリューム は Kubernetes の Storage リソース(Persistent Volume等)を別途定義する Clusterリソースには Persistent Volume Claim、StorageClass または volumeClaimTemplate を定義可能 詳しい方へ の捕捉

Slide 33

Slide 33 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | WebLogic Server Operator 33

Slide 34

Slide 34 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | WebLogic Server Kubernetes Operator • 2018年5月にバージョン 1.0 をリリース – 現在最新バージョン 2.1、 2.0.1~ OpenShift 対応 • WebLogicドメインを表現するCustomer Resourceを監視し、 その記述に合うようにWebLogic Server固有の管理タスクを実行する WebLogic ServerのKubernetes上での運用を自動化するためのOperator Wo WebLogic Operator etcd API Server Do Domain WebLogic Cluster Admin Server Managed Server 34

Slide 35

Slide 35 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | • 高いサービスレベル – アプリケーションの無停止更新 – アプリケーション機能全域に渡 る冗長化とフェイルオーバー – 処理の優先順位や流量の制 御 • 充実した運用・管理機能 – 自動チューニング – 詳細なプロファイリングデータの 常時収集 – 管理ダッシュボードやツール群 を標準装備 35 • Oracle DBとの親和性 – RACとの連携による、DB障害 時の高速フェイルオーバー – DBインスタンスの稼働状況に 応じた動的負荷分散 Oracle WebLogic Server エンタプライズの要求に応える、Java EEアプリケーション・サーバー

Slide 36

Slide 36 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | • 可用性 – アプリケーションフェイルオーバーや サービス移行によるサービス継続 • 拡張性 – 新規ノードの追加による 処理能力の向上 36 • 管理性 – クラスタ・グループに対する一 括管理 WebLogic Serverクラスタ機能 クラスタリングによる可用性・拡張性・管理性の向上 WebLogic ドメイン Cluster Managed Server Managed Server Managed Server Web Server Proxy Plug-in フェイル オーバー WebLogic ドメイン Clueter Managed Server Managed Server Managed Server Web Server Proxy Plug-in ノード追加 WebLogic ドメイン Cluster Managed Server Managed Server Managed Server アプリケーション パッチ Admin Server

Slide 37

Slide 37 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | WebLogic Server Kubernetes Operatorが提供する機能 • WebLogic Server Podの障害時自動復旧 • Kubernetesの構成を考慮して高可用性構成を自動で構築 • WebLogicクラスターの自動スケーリング • Prometheus/Grafanaによるモニタリング • Elasticsearch/Kibanaを用いた、WebLogic ServerおよびOperator自身のログ分析 • Kubernetesリソース、カスタム・リソース(Domainオブジェクト)の作成を支援するスク リプトの提供 (…他多数) 37 Kubernetesの能力を活かすことで高可用性と高度な運用を実現

Slide 38

Slide 38 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 詳細なドキュメントが作成されている 38 https://oracle.github.io/weblogic-kubernetes-operator/

Slide 39

Slide 39 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 1コマンドで簡単にWebLogic Operatorをインストール可能 39 ・・・ RESOURCES: ==> v1/ClusterRole NAME AGE default-weblogic-operator-clusterrole-domain-admin 3s default-weblogic-operator-clusterrole-general 3s default-weblogic-operator-clusterrole-namespace 3s default-weblogic-operator-clusterrole-nonresource 3s default-weblogic-operator-clusterrole-operator-admin 3s ==> v1/ClusterRoleBinding ・・・(略) ==> v1/ConfigMap NAME DATA AGE weblogic-operator-cm 2 3s ==> v1/Pod(related) NAME READY STATUS RESTARTS AGE weblogic-operator-8569c6cb4f-fwwfs 1/1 Running 0 2s ==> v1/Role NAME AGE weblogic-operator-role 3s ==> v1/RoleBinding NAME AGE weblogic-operator-rolebinding 3s weblogic-operator-rolebinding-namespace 3s ==> v1/Secret NAME TYPE DATA AGE weblogic-operator-secrets Opaque 0 4s ==> v1/Service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE internal-weblogic-operator-svc ClusterIP 10.96.46.40 8082/TCP 2s ==> v1beta1/Deployment NAME READY UP-TO-DATE AVAILABLE AGE weblogic-operator 1/1 1 1 2s $ helm install weblogic-operator/weblogic-operator --name weblogic-operator

Slide 40

Slide 40 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | WebLogic Server Podの障害時自動復旧 • WebLogic OperatorはDomainカスタムリソースに定義された構成を 常に維持しようとする • 障害等でPodが減少すると、それを検知して自動再作成を行う – Operatorが障害を検知、Podをステートを持った状態で立ち上げ 40 オペレーション不要でコンテナ障害時から自動復旧 WebLogic Operator Managed Server W Admin Server WebLogic Cluster etcd API Server D Domain keep Pod x 2の状態を維持

Slide 41

Slide 41 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | メトリック収集 WebLogic Serverクラスタの自動スケーリング • Prometheusアラートアクションを使用した自動スケーリング – PrometheusがWebLogic Serverのメトリックデータ(MBean)を監視し、指定した条件を 超えた場合にスケーリングする 41 運用・管理コストの削減/可用性の向上 WebLogic Operator Managed Server W Prometheus Admin Server webhook Server Prometheus Alert manger Pa WebLogic Cluster new WebLogic Monitoring Exporter

Slide 42

Slide 42 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Demo WebLogic Serverクラスタの動的スケールアウト 42

Slide 43

Slide 43 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | CERN(欧州原子核研究機構)で検証利用されている 43

Slide 44

Slide 44 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | まとめ 44

Slide 45

Slide 45 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | まとめ • KubernetesとOperatorの併用により、アプリケーションまで含めた 運用の自動化を実現することができる – Kubernetesの登場により、大量のコンテナの管理を自動化し、停止時間の短縮や運用作 業の効率化が可能 – OperatorはKubernetesの標準機能だけでは実現できないソフトウェア固有の運用作業 (バックアップ・リストア、クラスタの作成等) を自動化するソフトウェア エンタープライズシステムを運用自動化し、 ビジネスに求められるスピード、品質を実現する 45

Slide 46

Slide 46 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 本日のキーワード: Kubernetes Operator Kubernetesを拡張し、システムの運用自動化を実現するソフトウェア 46

Slide 47

Slide 47 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | 47

Slide 48

Slide 48 text

Copyright © 2019, Oracle and/or its affiliates. All rights reserved. | Safe Harbor Statement The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, timing, and pricing of any features or functionality described for Oracle’s products may change and remains at the sole discretion of Oracle Corporation. 48

Slide 49

Slide 49 text

No content