Slide 1

Slide 1 text

© 2019 IBM Corporation 1 © 2020 IBM Corporation 1 1 コンテナの価値を享受するために ~OpenShiftを活⽤するためのポイントや体験談について~

Slide 2

Slide 2 text

© 2019 IBM Corporation 2 © 2020 IBM Corporation 2 2 はじめに ü 個⼈利⽤の範囲を超えて、本資料の複製、転載、転⽤、引⽤等の⼆次利⽤は禁⽌させていただきます。 ü 本資料は講師が慎重に著述・編集しています。ただし、本資料の記述内容に関わる構築・運⽤結果にま つわるあらゆる損害・障害につきましては、責任を負いませんのであらかじめご了承ください。 ü 本資料における全ての掲載内容は、あくまで私⾃⾝の⾒解であり、必ずしも私の所属団体・企業における ⽴場、戦略、意⾒を代表するものではありません。

Slide 3

Slide 3 text

© 2019 IBM Corporation 3 © 2020 IBM Corporation 3 3 講師紹介 Yoichiro Suzuki(鈴⽊ 洋⼀朗) 所属︓ キンドリルジャパン合同会社 ※本資料における全ての掲載内容は、あくまで私⾃⾝の⾒解であり、必ずしも私の所属団体・企業における⽴ 場、戦略、意⾒を代表するものではありません。 経歴︓ マルチテナント型クラウドサービスの運⽤を経て、様々な業界におけるクラウド・コンテ ナの設計・構築・運⽤・技術⽀援を担当。サービス開発やコンサル⽀援にも従事。 共著︓ 『OpenShift徹底活⽤ガイド』 シーアンドアール研究所出版 認定資格︓ twitter︓ @yoichiro_2 SPECIALIST IN OPENSHIFT ADMINISTRATION SPECIALIST IN OPENSHIFT APPLICATION DEVELOPER

Slide 4

Slide 4 text

© 2019 IBM Corporation 4 © 2020 IBM Corporation 4 4 コンテナ共創センター勉強会 #1 振り返り • コンテナのオーケストレー ション • コンテナ管理の⾃動化 • 開発⽣産性向上 • 可搬性の向上 • 資源の効率化 • サーバー仮想統合 頻繁なアプリ開発・リリースを 実現するのに限界が 膨⼤に膨れ上がる コンテナの管理に限界が https://speakerdeck.com/satokota/kontenafalsejia-zhi-toha コンテナ共創センター勉強会 #1 「コンテナの価値とは」より再掲

Slide 5

Slide 5 text

© 2019 IBM Corporation 5 © 2020 IBM Corporation 5 5 • コンテナのオーケストレー ション • コンテナ管理の⾃動化 Kubernetesスキルを持つ⼈材を確保するにはハードルが⾼い ü 不具合発⽣時は⾃⾝で問題レポートを調査 ü 未修正の不具合は、⾃⾝で修正コードを適⽤(もしくは誰かが修正するのを待つ) ü Kubernetesから開発機能や運⽤機能までを⾃⾝で組み合わせてバージョン管理 • 修正プログラムの享受や問い合わせが可能 • コンテナを開発・運⽤する上で必要な機能の提供 • 各企業の製品・サービスとの連携 • テスト済みの機能が出荷 OSSの壁を越える Kubernetesのディストリビューション製品が誕⽣

Slide 6

Slide 6 text

© 2019 IBM Corporation 6 © 2020 IBM Corporation 6 6 ミドルウエア 物理/仮想環境 OS アプリケーション サーバ環境 ミドルウエア コンテナ コンテナ基盤 コンテナ環境 アプリチーム インフラチーム アプリケーション 物理/仮想環境 OS OSモジュール ü ベースイメージの⽤意は︖ ü コンテナのビルドは︖ ü CI/CDパイプラインは︖ ü CI/CDの設定やビルド・テストスクリプトを作成するのは誰︖ ü アプリ⽤のマニフェストファイル作成は誰がどうやって︖ ü コンテナ基盤の権限を管理は︖ ü 外部とのネットワーク接続管理は︖ ü コンテナ基盤の可⽤性の管理は︖ ü コンテナ基盤とコンテナのログはどうやって︖既存環境との連携は︖ ü コンテナ基盤のセキュリティ設定は︖ ・ ・ ・ ディストリビューション製品でも 考えないといけないことはそれなりにある

Slide 7

Slide 7 text

© 2019 IBM Corporation 7 © 2020 IBM Corporation 7 7 コンテナの価値を教授するために何を考え実装しないといけないのか、 OpenShiftを例に私の経験からいくつか紹介します。 ※ OpenShiftについては、コンテナ共創センター勉強会 #5で解説された「OpenShiftって何ができるの︖Kubernetesとの違いをわかりやすく解説︕」をご参照ください。 クラスタの構築 クラスタの設定 コンテナのビルド コンテナのデプロイ コンテナの運⽤ 本⽇のテーマ 本⽇メインでお話しする範囲

Slide 8

Slide 8 text

© 2019 IBM Corporation 8 © 2020 IBM Corporation 8 8 本⽇の内容 Ø 物理構成を意識したクラスタ設定 Ø マルチテナント Ø ビルドとデプロイの役割分担

Slide 9

Slide 9 text

© 2019 IBM Corporation 9 © 2020 IBM Corporation 9 9 本⽇の内容 Ø 物理構成を意識したクラスタ設定 Ø マルチテナント Ø ビルドとデプロイの役割分担

Slide 10

Slide 10 text

© 2019 IBM Corporation 10 © 2020 IBM Corporation 10 10 コンテナの価値を享受するために その① コンテナ環境 どんなにアプリ開発のスピードが向上しても、 信頼性が低ければ、ユーザが満⾜するようなサービスは提供できない。 コンテナの価値を享受するためには、 コンテナ環境の信頼性向上も不可⽋。 コンテナ コンテナ コンテナ

Slide 11

Slide 11 text

© 2019 IBM Corporation 11 © 2020 IBM Corporation 11 11 OCP(OpenShift Container Platform)の物理構成例 ※ あくまでも構成例です。インストール⽅法や設計によって構成は異なります。 マスター ノード マスター ノード マスター ノード ワーカー ノード ワーカー ノード ロード バランサ DNS DHCP ロード バランサ ロード バランサ クラスタを構築したら物理環境は考えなくていいわけではない。 OpenShiftの物理構成全体を意識した設定をすることで、 より信頼性⾼いのコンテナ環境を実現できる。

Slide 12

Slide 12 text

© 2019 IBM Corporation 12 © 2020 IBM Corporation 12 12 例)OCPの基本的な通信 マスター ノード マスター ノード マスター ノード ワーカー ノード ワーカー ノード ロード バランサ DNS DHCP ロード バランサ ロード バランサ コンテナアプリへの通信 (http, https) マスターAPIへの通信 (oc cli等) OpenShift Web UIやアプリ管理画⾯への通信 (https) マスターとワーカー間の通信 (6443, 22等) エンドユーザ 管理者・開発者 管理者・開発者

Slide 13

Slide 13 text

© 2019 IBM Corporation 13 © 2020 IBM Corporation 13 13 例)物理構成を意識したインバウンド通信 マスター ノード マスター ノード マスター ノード ワーカー ノード ワーカー ノード ロード バランサ DNS DHCP ロード バランサ ロード バランサ コンテナアプリへの通信 (http, https) マスターAPIへの通信 (oc cli等) マスターとワーカー間の通信 (6443, 22等) 外部ネットワーク 管理ネットワーク 管理ネットワーク 内部 DNS アクセス経路やセキュリティの観点で ネットワークを制御したいこともある OpenShift Web UIやアプリ管理画⾯への通信 (https) エンドユーザ 管理者・開発者 管理者・開発者

Slide 14

Slide 14 text

© 2019 IBM Corporation 14 © 2020 IBM Corporation 14 14 インターネット 例)OCP上で設定する例 OCP route https://aaa.com Public router pod Web Application pod route https://pbbb.priv.com Container Management pod route https://paaa.priv.com Private router pod RouteあるいはProject単位で、 どのRouterを利⽤するか制御できる エンドユーザ 開発者・管理者 他拠点 専⽤線 https://aaa.com https://paaa.priv.com

Slide 15

Slide 15 text

© 2019 IBM Corporation 15 © 2020 IBM Corporation 15 15 Zone B Worker Node Zone A 例)マルチゾーン構成でのPod配置 Worker Node Zone C Worker Node OCP Deployment(replicas=3) アプリ Pod アプリ Pod アプリ Pod

Slide 16

Slide 16 text

© 2019 IBM Corporation 16 © 2020 IBM Corporation 16 16 Zone B Worker Node Zone A 例)マルチゾーン構成でのPod配置 Worker Node Zone C Worker Node OCP Deployment(replicas=3) アプリ Pod アプリ Pod アプリ Pod ゾーン障害でサービス停⽌になりかねない。 マルチゾーンのメリットを活かしきれていない。

Slide 17

Slide 17 text

© 2019 IBM Corporation 17 © 2020 IBM Corporation 17 17 Zone B Worker Node Worker Node Topology Zone C Worker Node Worker Node Topology Zone A 例)マルチゾーン構成でのPod配置︓topologySpreadConstraints Worker Node Worker Node Topology zone: a zone: a zone: b zone: b zone: c zone: c OCP Deployment (replicas=3, topologyKey=“zone”, maxskew=1) アプリ Pod アプリ Pod アプリ Pod ノードに指定したラベルの値で Topologyを作成 skewとは、トポロジー間におけるPod数の差分。 他のゾーンにデプロイされると、 Skewの値が2-0=2となってしまうため、 必ずZone Cにデプロイされる

Slide 18

Slide 18 text

© 2019 IBM Corporation 18 © 2020 IBM Corporation 18 18 本⽇の内容 Ø 物理構成を意識したクラスタ設定 Ø マルチテナント Ø ビルドとデプロイの役割分担

Slide 19

Slide 19 text

© 2019 IBM Corporation 19 © 2020 IBM Corporation 19 19 シングルテナントかマルチテナントか OpenShift Cluster OpenShift Cluster プロジェクトチームA OpenShift Cluster シングルテナント OpenShiftを利⽤する複数のユーザを クラスタ単位で分離 マルチテナント OpenShiftを利⽤する複数のユーザを 単⼀クラスタ上で論理的に分離 ü 資源コストの効率化 ü 運⽤管理負担の軽減 ü 環境の払出しが⽐較的早い ü クラスタ障害の影響を局所化 ü 他システムの影響を受けにくい プロジェクトチームB プロジェクトチームA プロジェクトチームB

Slide 20

Slide 20 text

© 2019 IBM Corporation 20 © 2020 IBM Corporation 20 20 コンテナの価値を享受するために その② マルチテナントでガバナンスを効かせ過ぎると、開発スピードの⾜枷になりかねない。 コンテナ環境をある程度統制しつつ、テナントユーザが ある程度⾃由に利⽤できる環境を提供することで、 コンテナのスピードを活かせる。 OpenShift Cluster プロジェクトチームA プロジェクトチームB マルチテナント管理者

Slide 21

Slide 21 text

© 2019 IBM Corporation 21 © 2020 IBM Corporation 21 21 インターネット OCP Project A プロジェクトチームA プロジェクトチームB Project B ネットワーク⽤ Project PV PVC Storage PVC PVC Route Route 開発機能(OCR, Web UI等) プロジェクトA プロジェクトB エンドユーザ 提供されたProjectの範囲内で、 リソースを作成してコンテナアプリをデプロイする Router Pod ネットワーク⽤ Project Router Pod マルチテナントの構成例 マルチテナント管理者 必要な周辺機能を取り揃え、 必要な権限を各プロジェクトに割り当てる PV PV 運⽤機能(EFK, Grafana等) プロジェクトA プロジェクトB

Slide 22

Slide 22 text

© 2019 IBM Corporation 22 © 2020 IBM Corporation 22 22 インターネット OpenShift Cluster Project A Project B ネットワーク⽤ Project PV PVC Storage PVC PVC Route Route 開発機能(OCR, Web UI等) プロジェクトA プロジェクトB エンドユーザ Router Pod ネットワーク⽤ Project Router Pod マルチテナントの構成概要例 マルチテナント管理者 PV PV 運⽤機能(EFK, Grafana等) プロジェクトA プロジェクトB RBAC機能を活⽤し、 利⽤するプロジェクトのみ権限を与え、 Project上で⾃由に操作させる NetworkPolicyで、 Project間の通信を ブロックする 静的/動的プロビジョニングで PVCに対してPVを割り当てる LimitRangeやQuotaで、 リソースの利⽤を制限する 周辺の開発・運⽤機能も 同様に権限を制御する必要がある (OpenShiftは基本考慮されている) プロジェクトチームA プロジェクトチームB

Slide 23

Slide 23 text

© 2019 IBM Corporation 23 © 2020 IBM Corporation 23 23 本⽇の内容 Ø 物理構成を意識したクラスタ設定 Ø マルチテナント Ø ビルドとデプロイの役割分担

Slide 24

Slide 24 text

© 2019 IBM Corporation 24 © 2020 IBM Corporation 24 24 Kubernetesにおけるコンテナデプロイの流れ ① Dockerfileを 作成する ② コンテナイメージを ビルドする ④ コンテナアプリを 実⾏する Dockerfile マニフェスト ファイル ③ マニフェストファイルを 作成する

Slide 25

Slide 25 text

© 2019 IBM Corporation 25 © 2020 IBM Corporation 25 25 コンテナデプロイまでの責任分界点について アプリチーム インフラ担当者 新チーム 責任分界点を明確にする ü これまでの体制を踏襲しやすい ü 両者間でコミュニケーションを密にしなければならない 責任分界点を取り除く ü ⾃律的に開発・デプロイができる ü 責任範囲が従来よりも⼤きくなりがち Dockerfile OS ミドルウェア アプリ マニフェスト ファイル Dockerfile OS ミドルウェア アプリ マニフェスト ファイル

Slide 26

Slide 26 text

© 2019 IBM Corporation 26 © 2020 IBM Corporation 26 26 コンテナの価値を享受するために その③ 責任分界はアプリ開発スピードの妨げになりかねない。 コンテナのスピードを活かすには、 コード開発からデプロイまでのフローを整備 する必要がある。 アプリチーム インフラ担当者 Dockerfile OS ミドルウェア アプリ マニフェスト ファイル

Slide 27

Slide 27 text

© 2019 IBM Corporation 27 © 2020 IBM Corporation 27 27 責任分界点を明確にするときのよくあるパターン アプリチーム インフラ担当者 アプリチーム インフラ担当者 アプリチーム インフラ担当者 CIツール ソースコード リポジトリ 1. インフラチームがビルド ü ガバナンスを効かせやすい ü ビルド時にリードタイム発⽣ 2. アプリチームがビルド ü アプリ開発者が⾃律的にビルド ü ガバナンスを効かせにくい マニフェスト ファイル アプリ ソースコード Dockerfile ビルド ⼿順書 マニフェスト ファイル デプロイ ⼿順書 3. CI/CDツールでビルド ü ガバナンスが効かせやすく、開発⼯数を削減 ü CI/CDパイプラインの構築・保守が必要 アプリ ソースコード CDツール

Slide 28

Slide 28 text

© 2019 IBM Corporation 28 © 2020 IBM Corporation 28 28 責任分界点を明確にするときのよくあるパターン アプリチーム インフラ担当者 アプリチーム インフラ担当者 アプリチーム インフラ担当者 CIツール ソースコード リポジトリ 1. インフラチームがビルド ü ガバナンスを効かせやすい ü ビルド時にリードタイム発⽣ 2. アプリチームがビルド ü アプリ開発者が⾃律的にビルド ü ガバナンスを効かせにくい マニフェスト ファイル アプリ ソースコード Dockerfile ビルド ⼿順書 マニフェスト ファイル デプロイ ⼿順書 3. CI/CDツールでビルド ü ガバナンスが効かせやすく、開発⼯数を削減 ü CI/CDパイプラインの構築・保守が必要 アプリ ソースコード CDツール

Slide 29

Slide 29 text

© 2019 IBM Corporation 29 © 2020 IBM Corporation 29 29 OpenShiftで利⽤するコンテナイメージ OS ミドルウェア アプリ OS ミドルウェア S2Iスクリプト アプリケーションイメージ S2Iビルダーイメージ 実⾏可能なイメージ ソースコードからアプリケーションイメージを ビルドするイメージ or OpenShiftの コンテナイメージ

Slide 30

Slide 30 text

© 2019 IBM Corporation 30 © 2020 IBM Corporation 30 30 コンテナをデプロイするまでの流れ アプリケーション イメージ S2Iビルダー イメージ S2Iビルド デプロイ マニフェスト ファイル アプリ ソースコード OS ミドルウェア アプリ ビルド コンテナ OS ミドルウェア S2Iスクリプト ビルド 共通のフロー アプリケーションイメージを 直接ビルドするフロー S2Iビルダーイメージから アプリケーションイメージをビルドするフロー

Slide 31

Slide 31 text

© 2019 IBM Corporation 31 © 2020 IBM Corporation 31 31 Templateとは Service Route Deployment BuildConfig Secret ConfigMap Image Stream Template “テンプレートでは、パラメーター化や処理が可能な⼀連のオブジェクトを記述し、 OpenShift Container Platform で作成するためのオブジェクトの⼀覧を⽣成します。” 2021/09 バージョン4.8時点の 「Red Hat Customer Portal , Product documentation, OpenShift Container Platform, イメージ 第10章テンプレートの使⽤」より引⽤ アプリチームA アプリチームB アプリチームC DB_PASSWORD=aaa DB_PASSWORD=bbb DB_PASSWORD=ccc

Slide 32

Slide 32 text

© 2019 IBM Corporation 32 © 2020 IBM Corporation 32 32 OCP OpenShiftの機能を利⽤した役割分担の例 インフラ担当者 S2Iビルダーイメージ OS ミドルウェア S2Iスクリプト コンテナ レジストリ Template OCR ビルド S2I ビルド デプロイ カタログ インフラ担当者の作業 OpenShiftによる⾃動作業 アプリ開発者の作業 ソースコード リポジトリ アプリチーム ソースコード リードタイムなしでデプロイ可能 コミュニケーションにかかる負担を軽減

Slide 33

Slide 33 text

© 2019 IBM Corporation 33 © 2020 IBM Corporation 33 33 責任分界点を明確にするときのよくあるパターン アプリ開発者 インフラ担当者 アプリ開発者 インフラ担当者 アプリ開発者 インフラ担当者 CIツール ソースコード リポジトリ 1. インフラチームがビルド ü ガバナンスを効かせやすい ü ビルド時にリードタイム発⽣ 2. アプリチームがビルド ü アプリ開発者が⾃律的にビルド ü ガバナンスを効かせにくい マニフェスト ファイル アプリ ソースコード Dockerfil e ビルド ⼿順書 マニフェスト ファイル デプロイ ⼿順書 3. CI/CDツールでビルド ü ガバナンスが効かせやすく、開発⼯数を削減 ü CI/CDパイプラインの構築・保守が必要 アプリ ソースコード CDツール

Slide 34

Slide 34 text

© 2019 IBM Corporation 34 © 2020 IBM Corporation 34 34 CI/CDに有⽤なOpenShiftの機能 CI/CDツールの管理から 解放される Kubernetesを拡張して CI/CDに有⽤な機能を提供 Source to Image Build Config Image Stream Integrated Docker Registry Deployment Config Pods Replication Controller Persistent Volume Claim Persistent Volume Services Routes Software Defined Network 凡例 OpenShift Pipeline (Tekton) OpenShift GitOps (Argo CD) Jenkins Image Git Kubernetes機能 OpenShift機能 外部ツール ※ただし、CI/CDツール上でのビルド・デプロイ設定は⾏う必要がある

Slide 35

Slide 35 text

© 2019 IBM Corporation 35 © 2020 IBM Corporation 35 35 ミドルウエア コンテナ コンテナ基盤 コンテナ環境 アプリケーション 物理/仮想環境 OS OSモジュール ü 物理構成を意識したクラスタ設定で、より信頼性の⾼いコンテナ環境を実現 ü ある程度統制しつつ、ある程度⾃由に利⽤できるマルチテナントでコンテナの スピードを活かす ü S2IやCI/CDツールを活⽤し、ガバナンスの効いた迅速なデプロイを実現 今⽇の内容 ※ 上記以外にも考えることはたくさんありますが、今⽇の話が皆様のヒントになったのなら幸いです。

Slide 36

Slide 36 text

© 2019 IBM Corporation 36 © 2020 IBM Corporation 36 36 ご清聴ありがとうございました︕︕