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

エンプラもOpenshiftでプラットフォームを作りたい

sachiwo
December 10, 2020

 エンプラもOpenshiftでプラットフォームを作りたい

エンタープライズでOpenShiftを導入するだけでも大変な辛みがありますが、様々なしがらみを乗り越えて構築できたとしてもそれで終わりではありません。大部分はコストの観点で、アプリケーション毎にOpenShiftを構築する、ということはエンタープライズではナンセンスで『共通基盤』としてプラットフォーム構築構想を立てるのが一般的でしょう。本セッションではエンタープライズが夢見るプラットフォーム構想を実現する為に、現場とステークホルダー間で起こりがちな認識のズレはなんなのか、どのようなことに気をつけてで進めていけば良いのかをご紹介します。

sachiwo

December 10, 2020
Tweet

Other Decks in Technology

Transcript

  1. ⾃⼰紹介 Satoshi Doi @satoshi55d Application Architect Red Hat Certified Specialist

    IBM Japan, Cloud Application Services, Modernization Strategy 転職組 2019年2⽉からIBM 私 (怖くない⽅のIBM) 怖いIBMさん達 ❤ OpenShift IBM製品で唯⼀好きなのがLiberty 最近意外とできる⼦なんだと気がついた
  2. ____________ ヾミ || || || || || || || ,l,,l,,l

    川〃⼺| V~~‘’-⼭┴‘’‘’“”~ ヾニニ⼺| 作る・・・・・・︕ / ⼆ー―‘’⼆ ヾニニ┤ 作るが・・・ <'-.,  ̄ ̄ _,,,..--、 〉ニニ| 今回 まだ その時と場所の /"''-ニ,-l l`__ニ--'''""` /ニ⼆| 指定まではしていない | ===、! `=====、l =lべ=| . | `ー゚-'/ `ー-゚―' l.=lへ|~| そのことを |`ー-/ `ー―― H<,〉|=| どうかエンプラのお客様も | / 、 l|__ノー| 思い出していただきたい . | /`ー ~ ′ \ .|ヾ.ニ|ヽ |l 下王l王l王l王lヲ| | ヾ_,| \ つまり・・・・ . | ≡ | `l \__ 我々がその気になれば !、 _,,..-‘′ /l | ~’‘’ プラットフォームの完成は -''" ̄| `iー-..,,,_,,,,,....--'''" / | | 10年後 20年後ということも -―| |\ / | | 可能だろう・・・・・・・・・・ということ・・・・︕ | | \ / | | エンプラあるあるプラットフォーム構想 ⽬指す姿の『共通認識』ができないままではいつまで経っても完成しない
  3. ステークホルダーの定義 それぞれの⽴場、それぞれのフェーズでステークホルダーは様々 本セッションでのステークホルダーとは n 社内: プロジェクトマネージャ、チームリーダ、 他チーム(基盤チーム、アプリチーム) 営業、コンサル n 顧客:

    担当者、エグゼクティブ といった、K8s / OpenShift導⼊に関わる重要な意思決定や設計を⾏うキーマンを指します。 各⾃のステークホルダーを思い浮かべながらお聞きください。
  4. ⼤部分のステークホルダーが思うKubernetes/OpenShift ! " # $ % & 違 ( )

    * + , - . / 0 1 2 3 ! 違 2 & 0 ‼ これまでは に をデプロイしてた Applicationサーバ WAR これからは に をデプロイする︕ OpenShift コンテナ
  5. 「基盤」コストに⽬がいくのもわかるけど… LB Web + Application Server DB Server アプリ利⽤者 ああ、なるほど。

    いつもの構成をOpenShiftに集約 できるんだね。 基盤コスト圧縮できてこれは良いね。 「基盤」の集約という⼀⾒わかりやすそうなメリットだけを⾒てしまう いつもの構成 (よくあるWeb・AP・DBの3層構成) そこをメインの価値にするともったいないのでは… そもそもTCOで⾒てちゃんとペイ出来るか⾒積もった︖
  6. これだからエンプラは…。そう思って諦めてませんか︖ DXへ導くビジネスプラン あるべき組織・⽂化の醸成 K8sの真の価値とは︖ ︖︖︖︖ トップダウン ボトムアップ 『あなたにKubernetesは必要ですか︖』 『多分あなたにKubernetesは必要ない』 『Kubernetes

    の導⼊時に考えるべきこと』 確かに、彼らのマインドセットを変えるの は⼀朝⼀⼣では難しい。 しかしながらそれを認めた上で、現場で できることはないのか︖ 彼らのマインドセットが醸成された未来を ⾒据えて無駄にならないプラットフォーム を作ることはできないのか︖ ぐうの⾳も出ないほど正しい。 それ相応のビジネスプランがあり、そのためのあるべき 組織や⽂化を醸成、それでこそK8s/OpenShiftの 真価が発揮できる。 現場じゃどうしようもないよ…。 ボトムアップでできることだってあるはず
  7. まずちゃんと『設計』しませんか︖ 「設計」としてアウトプットするものも変えていかなければならない 現場としても既存の設計「しか」しておらず、K8sというプロダクトの暗黙の定義に頼っているところがあるのではないか︖ 「設計」としてステークホルダに説明するなら彼らの⼟壌で等しく会話ができるはずではないか︖ そして、例え彼らに「今は」理解されなくても、理解された時に作り直ししなくても良いように「準備」できるのではないか︖ n これまでやってきた設計内容 ・アプリ設計 ・インフラ設計 ・ミドルウェア設計

    ・⾮機能設計 ・運⽤設計 ・環境定義書 etc. 設計書の名前やフォーマットはなんでも良いが、その中で 以下のような設計項⽬をプラットフォーム設計としてきちんと含めているか︖ 1. プラットフォームとして⽬指す姿を定義する 2. 責任境界を明確にする 3. 共有と分離設計を⾏う 4. ⽣産性と管理性のバランスを取る そういった観点で、設計項⽬という名のボトムアップでステークホルダーとすり合わせていくべき項⽬をいくつかご紹介します。
  8. Master * 3 OS: RHCOS CPU: 8 core Memory: 64

    GB Infra * 3 OS: RHCOS CPU: 4 core Memory: 64 GB Worker * 3 OS: RHCOS CPU: 8 core Memory: 64 GB Internal LB External LB プラットフォームとして⽬指す姿を定義する n 「基盤」としてのVIEW n 「プラットフォーム」としてのVIEW 必ず作る、とても⼤事な設計資料だけど、これだけでは⾜りないのでは︖ Ø 基盤をどのように利⽤者に使ってもらうか︖の定義がされていない。 運⽤・監視設計 可⽤性設計 バックアップリカバリ etc. サーバ構成 ネットワーク構成 ストレージ構成 ミドルウェア構成 プラットフォームとして⽬指す姿やコンセプトを定義する。 Ø 如何に「管理する」か、ではなく如何に「運営する」か。 システムA App App App App インフラリソース (CPU、メモリ、ネットワーク、ストレージ、etc.) サービス機能・共有知 (アプリランタイム、標準設計) システムB App App App App システムX App App App App システムY App App App App 利⽤側 提供側 利⽤ & Feed Back 提供 提供 利⽤者 クラスタ管理者・インフラ管理者 機能整備・標準化担当者 連携 表裏⼀体
  9. 共有と分離設計を⾏う マルチテナント設計は必須。最初から意識して設計する プラットフォームの共有には必要な機能を使って適切に分離しないと実質不可能 直近プラットフォームに載せるアプリが⼀つだとしてもやっておかないと後から別なアプリが載る時の影響が⼤きくなる l Quota インフラリソースの適切な割り当て。リソース不⾜の影響を分離。 Namespace A Quota

    Limit Range Limit Range Namespace B Quota Limit Range Limit Range l 変更プロセスはとても⼤事だけど成熟度に合わせて柔軟に Network Policy, Quotaの利⽤者からの変更依頼発⽣時の変更 プロセスは導⼊先の組織・⽂化の成熟度に合わせて柔軟に。 ただし、変更に数週間、数ヶ⽉かかります、みたいな変更プロセスに なると全てが台無しなので上記のデフォルト設定も含めてしっかりと すり合わせる。 (頑張りどころだけど、流⽯にこの辺は組織や⽂化からは逃げられないか…) l Network Policy 適切なネットワークセキュリティ設計による分離。 DB A DB B Deny Deny allow allow allow allow Network Policy Namespace A Namespace B Network Policy Open Policy Agent Project Template l Namespaceのデフォルト設定 左の分離設定は都度設定していては管理者の負荷が⾼まるし 初期設定ガバガバはまずい。デフォルト値⼤事。 OpenShiftだとNamespace作成時に作られるデフォルトリソースを設定しておける Open Policy Agentをこの辺の管理に使っても良いかもしれない
  10. OpenShiftで考えてくれているマルチテナント機能 OpenShiftでは最初からマルチテナントを志向して⽤意してくれている機能があるので必要に応じて使う。 特にありがたいのが、「ログ基盤」と「監視基盤」 共有と分離設計を⾏う l ログ基盤 Elasticsearch & SearchGuard マルチテナントなEFKスタックが⽤意されている。

    Elasticsearch Namespace A ログデータ Namespace B ログデータ allow allow deny Namespace A 利⽤者 Namespace B 利⽤者 Namespace毎にログ保有期間も調整できるので適宜設計する。 クラスタ管理者しか⾒れないけど利⽤者もみたいログがあるか︖なども検討。 l 監視基盤 User Workload Monitoring 利⽤者が使うPrometheus管理Operatorが4.6で遂にGA︕ それぞれのCustomResourceをapplyすることでPrometheusに設定してくれる。 • Service/PodMonitor Prometheus Targetの設定 • PrometheusRule Prometheus Ruleの設定 CustomResorceを経由して⼀つのPrometheusを共有する仕組み。 (Alertmanagerは適宜全体設計しないとダメか。) User Workload Monitoring Namespace A Prometheus Rule Service/Pod Monitor Namespace B Prometheus Rule Service/Pod Monitor Watch
  11. OpenShiftはプラットフォームを構成する⼀つの要素にすぎない 「OpenShift」のマルチテナント設計に注⼒しがちだが、OpenShiftを取り巻く周辺要素も忘れてはならない。 共有と分離設計を⾏う Gitlab Container Registry 資産管理 NFS DB 永続化

    バッチ管理 運⽤管理 運⽤ LB ネットワーク OpenShiftクラスタ l 資産管理 マルチテナントなプロダクトの選定と管理体系の設計 l ネットワーク 特定アプリにターゲットしてLBの性能やネットワーク帯域を⾒ 積もると死ぬ。意外とこの辺ボトルネックになりやすい。 l 永続化 クラスタの外にDB置くなら共有か独⽴かの選択。 PVは⼤体NFSなのでここも共有か独⽴かの選択。 l 運⽤ 結構マルチテナント設計で⾒逃しがちな要素。 運⽤⽅法次第では利⽤者間で分離設計が必要になる。 バッチの実⾏もJP1等のスケジューラを使うケースがエンプラ では多く、利⽤者間での分離設計が必要となる。
  12. ⽣産性と管理性のバランスを取る 利⽤者の利便性・⽣産性とエンタープライズとしてのガバナンスを考える どのようにアプリケーションを実装・公開してもらいたいかの「想い」とエンプラとしての担保すべきガバナンスのバランスを設計する n Catalog(ランタイム標準設計) 管理コンソールから好きなランタイムを選んでコードを ビルドしたりアプリ公開したり出来る。 n OperatorHub(クラスタ機能設計) プラットフォームとして必要なクラスタ機能を選択、インストール

    (有効にする)することができる。 利⽤者にどのランタイムをどのように使ってもらうか︖を設計する。 やろうと思えば利⽤するランタイムのパラメータだけでなくコードの ビルド⽅法、アプリ公開⽅法まで標準化してここに公開することが できる。(Helm ChartやS2Iを実装・公開) 利⽤者に提供するプラットフォーム機能を選別する。 Operatorは沢⼭のものが公開されているが、無邪気に⾊々 使わせるわけにもいかない。しっかりと⾒極めて取捨選択し、 利⽤者に公開する。
  13. 利⽤者の選択と柔軟性を継続的に維持してくために 作りっぱなしにしていてはすぐに陳腐化して使われなくなるプラットフォームと化す。 利⽤側 提供側 技術や⽂化の成熟度 プラットフォームとして利⽤者に何を提供するかを決めるのは難しい l やりすぎない適切な標準化 利⽤者を過度に縛る標準は柔軟性を奪い市場競争⼒を 低下させるが、⾃由すぎてもガバナンスは効かない。

    l 成熟度的に分相応な機能の選択 OpenShiftの機能や様々なOperatorを⾊々と使いたく なるが、成熟度的に分不相応なものを選択してもコスト だけかかり全く効果がないこともある。 最初に決めたら変えてはいけないものではない。 成熟度を⾒ながら利⽤側からFeed Backを受けて継続的 に⾒直しをかけるという定常運⽤項⽬として「運⽤設計」を すれば良いのではないか︖ ⽣産性と管理性のバランスを取る