Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Verrazzanoで実現するKubernetesマルチクラスタ運用とコンテナアプリケーション...

 Verrazzanoで実現するKubernetesマルチクラスタ運用とコンテナアプリケーションのライフサイクル管理

Cloud Native Days Tokyo2020(2020/9/8~2020/9/9)でご紹介したOracleがオープンソースで開発しているVerrazzanoというサービスのご紹介です!

以下で公開しておりますのでご興味がある方はぜひお試しください!
Web:https://verrazzano.io/
GitHub:https://github.com/verrazzano/verrazzano

oracle4engineer

September 09, 2020
Tweet

More Decks by oracle4engineer

Other Decks in Technology

Transcript

  1. • 仁井⽥ 拓也 • ⽇本オラクル株式会社 テクノロジー・クラウド・エンジニアリング本部 • 前職は某SIer • Oracle歴︓1年5ヶ⽉

    • Cloud Native歴︓1年ちょっと • Kubernetesもここ1年で触り始めました • CKA取得 • ジブリ⼤好き ⾃⼰紹介 Copyright © 2020, Oracle and/or its affiliates. 4 @takuya_0301
  2. シングルクラスター運⽤での課題 • 障害が発⽣した場合に影響範囲が⼤きくなってしまう可能性 • セキュリティの境界線が曖昧になってしまう可能性 • ベンダーロックインが発⽣する可能性 マルチクラスタの採⽤によるメリット • クラスタを分離することで、耐障害性の向上やディザスタリカバリへの対応が可能

    • クラスタで隔離することで、セキュリティに関する境界線が明確化 • 複数のKubernetesサービスを利⽤することでベンダーロックインを回避 マルチKubernetesクラスタ運⽤でのメリット Copyright © 2020, Oracle and/or its affiliates. 6
  3. コントロールプレーン/ノードのメンテナンス • クラスタの作成/削除 • Master NodeとWorker Nodeの更新 セキュリティ • クラスタのアクセスに対する制御

    • クラスタを跨いだアクセスに対する制御 オペレーション • クラスタ内/クラスタ間のネットワーク制御 • クラスタ毎のメトリクス監視やアラーム通知 マルチKubernetesクラスタ運⽤で実施すべきこと Copyright © 2020, Oracle and/or its affiliates. 7
  4. コントロールプレーン/ノードのメンテナンス • クラスタの作成/削除 • Master NodeとWorker Nodeの更新 =>それぞれのプラットフォームに応じた個別操作が必要 セキュリティ •

    クラスタのアクセスに対する制御 • クラスタを跨いだアクセスに対する制御 =>設定ミスが発⽣する可能性 オペレーション • クラスタ内/クラスタ間のネットワーク制御 • クラスタ毎のモニタリングやアラーム通知 =>クラスタ毎に設定/構築が必要 マルチKubernetesクラスタ運⽤の課題 Copyright © 2020, Oracle and/or its affiliates. 8 A社クラウド オンプレミス環境 O社クラウド A社クラウド オンプレミス環境 O社クラウド 開発者 管理者
  5. デプロイスタックの共通化 • 各デプロイ先でのObservability(Metrics/Logging/ Tracing)環境の構築と運⽤ • 各コンテナアプリケーション間のネットワーク通信の制御 セキュリティ • 各コンテナに付与する権限の制御 オペレーション

    • どのクラスタにどのコンテナアプリケーションをデプロイすべき かの制御 • CI/CDパイプラインの構築と運⽤ マルチKubernetesクラスタのコンテナアプリケーション運⽤で実施すべきこと Copyright © 2020, Oracle and/or its affiliates. 9 シェルスクリプト コマンド レポジトリ デプロイ デプロイ デプロイ
  6. デプロイスタックの共通化 • 各デプロイ先でのObservability (Metrics/Logging/ Tracing)環境の構築と運⽤ • 各コンテナアプリケーション間のネットワーク通信の制御 =>スタックの選定と各コンテナ毎に定義することが必要 セキュリティ •

    各コンテナに付与する権限の制御 =>各コンテナ毎に個別に定義が必要 オペレーション • どのクラスタにどのコンテナアプリケーションをデプロイすべきかの 制御 • CI/CDパイプラインの構築と運⽤ =>トポロジーの適切な設計/把握とパイプラインの構築が必要 マルチKubernetesクラスタでのコンテナアプリケーション運⽤の課題 Copyright © 2020, Oracle and/or its affiliates. 10 シェルスクリプト コマンド シェルスクリプト コマンド レポジトリ コンテナA コンテナB コンテナC コンテナD コンテナE コンテナF
  7. クラスタ管理の側⾯から • 全てのクラウド/オンプレミス環境上のKubernetesクラス タを管理するための統⼀されたプラットフォーム • マルチクラスターに対して認証、RBACでのアクセス制御 を⼀元的に管理 • 複雑なクラスタ内/外のネットワーク制御の管理 •

    統合された監視プラットフォームによる運⽤ コンテナアプリケーション管理の側⾯から • サービスメッシュ、Observabilityで共通したスタックを⼀ 元的にカスタマイズ可能な形で適⽤ • 複雑なマイクロサービスアプリケーション間の連携 • コンテナに対する⼀元的なセキュリティポリシーの適⽤ • コンテナアプリケーションのトポロジーの把握と効率的な CI/CDパイプラインの構築 複数のKubernetesクラスタを管理していくために Copyright © 2020, Oracle and/or its affiliates. 11 マルチクラスタ管理とコンテナアプリケーションライフサイクル の両⽅が実現可能なプラットフォームが必要
  8. Curated • プラットフォームを構築するために 統合するすべてのコンポーネントを Oracleが厳選して提供 • 選択したプロダクトとそのバー ジョンを全て機能することをテ ストした上で提供 Multi

    Cloud • マネージド(クラウド)およびセル フマネージド(プライベート/オンプ レミス)のKubernetesクラスタをサ ポート • ベンダーロックインの回避 Application Lifecycle Management • ⼤規模アプリケーションを管理可 能 • アプリケーションに対するオペ レーション、デプロイメント戦略、 監視スタックを構成 Verrazzano Container Platformが持つ6つのコンセプト(1) Copyright © 2020, Oracle and/or its affiliates. 13 Public Cloud Private Cloud On-premise オペレー ション Observ ability セキュリティ デプロイメ ント戦略 CI/CD
  9. Metrics Logging Tracing Observability • Prometheus/Grafana/Elasticsea rch/Kibana/Jaeger/Zipkinなどの 最も広く使⽤されているオープン ソースツールを利⽤した Observabilityの実現

    • 各種ダッシュボードを即時に 利⽤可能 Strong Security • CalicoやPod Securityを利⽤した ポリシーの適⽤ • サービスメッシュ間の通信暗号化 • アプリケーション認証、シングルサイ ンオンの実現 Isolation • 管理者は複数のユーザーグループ 間でリソースを安全に共有可能 • ユーザは必要に応じてプロジェ クトに割り当てられ、ユーザが 操作可能なスコープを制限 Verrazzano Container Platformが持つ6つのコンセプト(2) Copyright © 2020, Oracle and/or its affiliates. 14
  10. Cloud Nativeを実現する多くのOSSソリューションから厳選して組み合わせたオープンソースの統合プラットフォーム • ⾮常に多くのOSSソリューションを組み合わせて⼀つのシステム体系として実現・維持していくことは、エンドユーザーにとっ て⼤きな負担になることが多い • Oracleが統合プラットフォームとして提供 Verrazzanoで実現する“Curated” Copyright ©

    2020, Oracle and/or its affiliates. 15 ログ監視︓ELK Stack/Fluentd サービスメッシュ︓ Istio control plane マルチクラスタ管理︓Rancher Console モニタリング︓Prometheus/Grafana CI/CD︓GitOps ログ情報 Rancher Agent Verrazzano Operator アプリケーション Istio データプレーン Pod deploy
  11. Verrazzanoを利⽤して全てのKubernetesクラスタ環境への包括的な管理を実現 • 各ベンダーが提供するマネージドKubernetesサービスやオンプレミス環境に展開するKubernetesクラスタもVerrazzano 上で管理可能 • 各Kubernetesクラスタについて同⼀のポリシーを適⽤して構築/運⽤が可能 Verrazzanoで実現する“Multi Cloud” Copyright ©

    2020, Oracle and/or its affiliates. 16 マルチクラスタ管理 Verrazzano インフラ運⽤管理 Rancher/Istio モニタリング・ログ収集 Prometheus Grafana Fluentd EFK Stack Jaeger CI/CDインフラ Gitlab Jenkins SSO/アクセス管理 Keycloak Oracle Cloud Private Cloud 3rd Party Cloud Kubernetes Kubernetes Kubernetes
  12. Service Mesh VerrazzanoModelを利⽤したアプリケーション定義 • モデルを更新することでアプリケーションへのパッチ適⽤ や更新を実施 VerrazzanoBindingでのデプロイ環境との紐付け • Bindingを更新することで各環境のアプリケーション構 成を⾃在に構成

    CI/CDパイプライン構築/運⽤の提供 • GitLabやJenkinsを利⽤したコンテナアプリケーションネ イティブなGitOpsの構築と管理を実現 Observabilityの提供 • 効率的な監視やロギングの実現 Securityの提供 • 強固なセキュリティの実現 Verrazzanoで実現する“Application Lifecycle Management” Copyright © 2020, Oracle and/or its affiliates. 17 Application1 Application2 Placement Cluster-1 Name: app1 Cluster-2 Name: app2 app1 cluster-1 VerrazzanoModel VerrazzanoBinding アプリケーション定義とデプロイ環境のバインドを実施 GitOpsパイプライン app2 cluster-2 mTLS
  13. Yaml形式(manifest)で複数のアプリケーション定義 • ”VerrazzanoModel”と呼ばれるカスタムリソースを利⽤ • 後述する”VerrazzanoBinding”というカスタムリソースを 利⽤し、定義したアプリケーションを各デプロイ先に対し て紐付け • Oracleが提供する各プロダクトはコンポーネントとして 事前定義済みであり、細やかな設定が利⽤可能

    • WebLogic • Coherence • Helidon VerrazzanoModelを利⽤した複数のアプリケーション定義 Copyright © 2020, Oracle and/or its affiliates. 18 Application 1 Web Application1: - name: webapp1 image: webapp1 ! ! ! VerrazzanoModel Helidon Application Helidon Application: - name: helidonapp image: helidonapp ! ! !
  14. Yaml形式(manifest)でアプリケーションのデプロイ先を定義 • “VerrazzanoBinding”というカスタムリソースを利⽤ • 事前に定義したVerrazzanoModelの各アプリケーションをデプロイ先に紐付け VerrazzanoBindingを利⽤したアプリケーションとデプロイ環境の紐付け Copyright © 2020, Oracle

    and/or its affiliates. 19 Web Application: - name: Application1 image: webapp1 - ingress: - name: Ingress1 - database: - target: mysql VerrazzanoModel VerrazzanoBinding Placement managed-cluster-1 Namespace: spaceA Components: Name: Application1 Database Bindings name: mysql url:jdbc:mysql://..... Ingress Bindings Name: Ingress1 Public Cloud/On-Premises Space A Application1 managed-cluster-1 Ingress1 MySQL
  15. コンテナアプリケーションネイティブなパイプラインの提供 • GitLab/Jenkinsを⽤いたGitOpsの構築 • BYOでのパイプライン構築も可能 WebLogicアプリケーションとの⾼い親和性 • WebLogic Image Tool、WebLogic

    Deploy Toolingや WebLogic Kubernetes operatorを利⽤したアプリケー ションのデプロイ ⾼度なデプロイ戦略の実現 • Blue/GreenデプロイメントやA/Bテストのような⾼度な デプロイ戦略を効率的に実現可能 Verrazzanoで実現するCI/CD Copyright © 2020, Oracle and/or its affiliates. 20 CI/CDパイプライン On-premises Public Cloud 40% 60%
  16. コンテナ Observabilityスタックの提供 • デプロイするすべてのアプリケーションに適⽤ • メトリクス • WebLogic/Coherence/Helidonアプリケーションにつ いては⾃動でPrometheusフォーマットにエクスポート •

    ロギング • WebLogic/Coherence/Helidonアプリケーションのロ ギングを⾃動で設定(Fluentdを利⽤) • その他のアプリケーションは標準出⼒へのベストプラク ティス構成を適⽤可能 • 分散トレーシング • OpenTracing/Jaegerによるトレーシング • Istio/Envoyによるネットワーク監視の提供 • 適⽤するスタックについてはユーザが構築可能 Verrazzanoで実現する“Observability” Copyright © 2020, Oracle and/or its affiliates. 21 開発者 コンテナ 適⽤するスタックを設定
  17. 各種プラットフォームへのSSOを提供 • 各ダッシュボードへのシングルサインオンを提供 • LDAPやActive Directoryも利⽤可能 • RBACとの連携やアプリケーションエンドポイントへの アクセス制御も実現可能 マルチクラスタRBACの提供

    • クラスタを跨ぐRBAC制御を実装可能 • Istioを利⽤し、サービス間のセキュア(mTLS)な通信を 即時に提供 • 証明書の⾃動管理を実現 Verrazzanoで実現する“Strong Security”と“Isolation” Copyright © 2020, Oracle and/or its affiliates. 22 Public Cloud On-premises mTLS ユーザA ユーザB 管理者 モニタリング・ダッシュボード SSO SSO/RBAC
  18. Verrazzano Enterprise Container Platform • Verrazzano Container Platformに加えてエンタープラ イズ向けに機能拡張と豊富なサポートを提供予定 •

    クラスタ間の⾃動フェイルオーバー機能 • 機械学習/AIによる⾃動スケーリング • GraalVM EEやnative imageとの統合 • サービスメッシュ設定に関するバックアップ/リストア 機能の提供 • オンプレミスのOracle Databaseとの統合 • OpenShiftとの統合 Verrazzano Enterprise Container Platform Copyright © 2020, Oracle and/or its affiliates. 23
  19. Verrazzano Container Platform • コミュニティサポートの提供 • Oracle Cloud Infrastructure上の各サービスとの統合 •

    OCI IAM • OCI KMS(Key Management Service) • OCI APIGateway • Knativeサポート • VSCodeプラグインの提供 Verrazzano Enterprise Container Platform • 24/7のサポート • WebLogicやCoherence、GraalVMなどのOracleが提 供するプロダクトとのさらなる統合 今後のロードマップ Copyright © 2020, Oracle and/or its affiliates. 24 Key Management API/Service ID & Access Management
  20. デモシナリオ • Verrazzanoを構築した環境へサンプルアプリケーション (Bob‘s Books)をデプロイ • ⼀般書店であるフロントエンドのウェブストア 「Robert’s Books」(Helidon/Coherence) •

    児童書専⾨店のフロントエンドWebストア 「Bobby's Books」 (WebLogic/Helidon/Coherence) • バックエンドの「注⽂処理」アプリケーション (WebLogic/MySQL) • VerrazzanoModelやVerrazzanoBindingの中⾝を軽く 確認 • デプロイ後に⾃動的にObservability環境 (Prometheus/Grafana/EFK Stack)が構築されるので、 UIを確認 Verrazzanoデモ概要 Copyright © 2020, Oracle and/or its affiliates. 26
  21. Verrazzanoデモ概要図 Copyright © 2020, Oracle and/or its affiliates. 27 Oracle

    Container Engine for Kubernetes Istio IngressGateway Ingress Controller verrazzano-system bobs robert bobby namespace /bobbys-front-end / /bobs-bookstore-order-manager
  22. 30 Copyright © 2020, Oracle and/or its affiliates Blockchain GIG

    Big Data JAM Session データ ・サイエンティストな⽅々に 向けてビッグデータや機械学習に関 する技術情報をお届け Oracle Code Night Online Oracle Cloud Hangout Café 毎回クラウド・ネイティブな テーマを取り上げて がっつり掘り下げる会 通称おちゃかふぇ Blockchain GIG エンタープライズ領域でのブ ロックチェーン活⽤にフォーカ スを当て、多彩なゲストも参加 MySQL Technology Café 初⼼者からディープなエンジニ アまで、MySQLフリークな⽅々 と最新情報や活⽤事例を紹介 Oracle Database Technology Night オラクルの精鋭の技術者陣が、 「明⽇から現場ですぐに使える テクニック」をお伝え 様々なテーマでウェビナー開催中! 各種Meetupの詳細・お申込みは で♪
  23. 31 Copyright © 2020, Oracle and/or its affiliates 各イベント情報はconnpassにて公開中! oracle-code-tokyo-dev.connpass.com

    oracle.com/goto/jp-code-night 過去開催 Code Night Onlineは Oracle Video Hubにて公開中! Oracle Code Night Online
  24. Oracle Cloud Hangout Café 3 Oracle Cloud Hangout Cafeは、 クラウドネイティブ時代の開発者を対象に巷で話題の

    オープン・スタンダードなテクノロジーをテーマに取り上げ、 短時間でガッツリ学んでお持ち帰りいただく テクニカルな 勉強会シリーズ。 知識習得やスキル向上の場として是⾮ご活⽤ください︕ https://ochacafe.connpass.com/ OCHa Cafe3 #3 は9⽉30⽇ 開催︕