Red Hat - Open Innovation Labsのブログ - TECH PLAY

TECH PLAY

Red Hat  - Open Innovation Labs

Red Hat - Open Innovation Labs の技術ブログ

å…š900ä»¶

Red Hat で Solution Architect ずしお Quarkus を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Quarkus.io のブログ蚘事、 Concurrent asynchronous actions with Mutiny の翻蚳蚘事です。 今週は、䞊行凊理を䞭心ずした広く普及しおいるナヌスケヌスに぀いお聞かれたした。このナヌザヌは、2぀のマむクロサヌビスを䞊行しお呌び出し、䞡方の結果が出たらそれらを結合しお凊理を続けたいず考えおいたした。基本的には以䞋のパタヌンです。 非リアクティブなアプロヌチでは、䞡方の呌び出しは呌び出し元のスレッドをブロックし、ワヌカヌスレッドプヌルを䜿甚しおいる堎合を陀き、呌び出しは同時進行ではありたせん。ワヌカヌスレッドプヌルを䜿甚しおいおも、これらのスレッドはブロックされおいる可胜性が高く、無駄にリ゜ヌスを消費しおしたいたす。 しかし、心配はありたせん。Quarkus のリアクティブず Mutiny は、このシナリオを凊理するためのすべおを持っおいたす。 2぀のサヌビスを呌びだそう 今回の蚘事では、Vert.x Web Client ずいうリアクティブな HTTP クラむアントを䜿っおみたす。ノンブロッキング I/O を掻甚しお、高いパフォヌマンスず真のノンブロッキングを実珟しおいたす。隠れたスレッドプヌルには䟝存したせん。Quarkus Rest Client を䜿うこずもできたす。しかし、今のずころワヌカヌスレッドを䜿っおいたす。 どのクラむアントを䜿うにしおも、呌び出すためにいく぀かのリモヌトサヌビスが必芁です。䜿っおみたしょう。 https://programming-quotes-api.herokuapp.com/ - プログラミングの芋積もりを取る https://api.chucknorris.io/ - Chuck Norris に぀いおの芋積もりを取る たず最初に、私たちの芋積りを取埗するために必芁なコヌドを芋おみたしょう。どちらのサヌビスも䌌たようなものではありたすが、察応の構造が少し異なりたす。結局はこれで終わりですね。 private static Uni<String> getProgrammingQuote(WebClient client) { return client.getAbs(PROGRAMMING_QUOTE) .as(BodyCodec.jsonObject()) .send() .onItem().transform(r -> r.body().getString("en") + " (" + r.body().getString("author") + ")"); } private static Uni<String> getChuckNorrisQuote(WebClient client) { return client.getAbs(CHUCK_NORRIS_QUOTE) .as(BodyCodec.jsonObject()) .send() .onItem().transform(r -> r.body().getString("value")); } これら2぀のメ゜ッドは、 WebClient を受け取りたす。そしお、サヌビスを呌び出し、JSON レスポンスを取埗し、それを抜出したす。これらは䞡方ずも Uni を返す。そう、これらは非同期なんです。その結果芋積曞は、利甚可胜な堎合には埌ほど提䟛されたす。たた、 Uni を返すずいうこずは、返された Uni を誰かがサブスクラむブした時にのみサヌビスが起動するずいうこずです。耇数回サブスクラむブしおいる堎合は、耇数回に分けお呌出をするこずになりたす。 Unis の組み合わせ 今のずころ、サヌビスを呌び出す方法は2぀ありたす。しかし、䞊の図のように同時に䞊行に呌びたいです。 Mutiny では、 Unis が生産したアむテムを組み合わせる方法を提䟛しおいたす。 Uni<Tuple2<String, String>> tuple = Uni.combine().all() .unis(getProgrammingQuote(client), getChuckNorrisQuote(client)) .asTuple(); 誰かが Uni tuple をサブスクラむブするず、サヌビスを呌び出す getProgrammingQuote(client) ず getChuckNorrisQuote(client) Unis を賌読したす。そのため、それらのリク゚ストが攟出されたす。サヌビスが䞊行しお呌び出されたす。 䞡方の返答がある堎合は、耇数の項目を運ぶシンプルな構造䜓であるタプルに結合したす。 ぀たり、私たちのサヌビスを同時に呌び出すこずは、非垞に簡単なこずです。実珟したいサヌビスや非同期アクションを衚す Unis を䜜成したす。そしお、 Uni.combine().all() を䜿甚しおそれらを結合するだけです。 タプルを䜿甚しお結果を結合するか、combinator 関数を䜿甚しお結合するかを決めるこずができたす。 すべおをたずめる // Web Client を䜜成 WebClient client = WebClient.create(vertx); // 2぀のUnisの結果をタプルに結合 Uni.combine().all() .unis(getProgrammingQuote(client), getChuckNorrisQuote(client)) .asTuple() // サブスクラむブこれが呌び出しのトリガヌずなる .subscribe().with(tuple -> { System.out.println( "Programming Quote: " + tuple.getItem1()); System.out.println( "Chuck Norris Quote: " + tuple.getItem2()); }); それだこのコヌドが実際に動䜜しおいるのを芋たい堎合は、この gist を確認しおください。JBangで盎接実行できたす。 jbang https://gist.github.com/cescoffier/1ed68bef12b798529e10350f77686e9a 楜しもう
Red Hat で Solution Architect ずしお Quarkus を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Quarkus.io のブログ蚘事、 Quarkus 1.10 released - JSON as default, Multiple reactive datasources, new Micrometer registries... の翻蚳蚘事です。 リリヌスされたばかりの Quarkus 1.10.2.Final には、倚くの改善ず新機胜が搭茉されおいたす。 デフォルトのメディアタむプが JSON になりたした CodeStarts はデフォルトのプロゞェクト生成ツヌルになりたした。 Micrometer の拡匵機胜は、かなりの郚分で改善されおいたす新しいレゞストリなど。 新しい Qute の゚ラヌペヌゞ Swagger/GraphQL/Health/OpenAPI UI ずSwagger UI の蚭定 Hibernate の ORM 蚭定の䞀郚が実行時にオヌバヌラむド可胜になりたした。 SmallRye Reactive Messaging 2.5.0 ず Mutiny 0.11.0 Reactive SQL クラむアントが耇数のデヌタ゜ヌスをサポヌト 新しい Amazon IAM 拡匵機胜 Google クラりドにデプロむするための新しいガむド い぀ものように、バグ修正や䜿い勝手の改善、ドキュメントの改善なども行われおいたす。 移行ガむド 既存のアプリケヌションの移行をお考えですかここに 1.10 の移行ガむド がありたす。 Java 11 察応の GraalVM 20.2 は、ただ掚奚の GraalVM のバヌゞョンです。 1.10.0.Final 1.10.1.Finalもはどこにあるの Caffeine 拡匵機胜のリグレッションを発芋したした。そのため 1.10.0.Final の発衚をスキップしたした。そしお、Platform BOM の問題を発芋したした。なので 1.10.2.Final をリリヌスしなければなりたせんでした。 その間にいく぀かの問題を修正するこずができたので、1.10.2.Final はより倧きなリリヌスずなりたした。 䜕が新しいの デフォルトのコンテンツタむプずしおの JSON REST リ゜ヌスを冗長にならないようにするための努力ず、最近では JSON が REST サヌビスで最も広く䜿甚されおいるコンテンツタむプであるこずを考慮しお、Quarkus では REST リ゜ヌスのデフォルトずしお JSON が䜿甚されるようになりたした。 ぀たり、JSON を䜿甚しおいる堎合は、 @Produces ず @Consumes のアノテヌションを远加する必芁がなくなりたす。 たた、コンテンツタむプネゎシ゚ヌションに頌っおいた堎合、サポヌトしおいるコンテンツタむプでこれらのアノテヌションを远加しなければいけたせん。 デフォルトのプロゞェクト生成ツヌルずしおの CodeStarts CodeStarts プロゞェクトは、長い間地道な努力を続けおきたした。朗報今はデフォルトのプロゞェクト生成ツヌルになりたした。 ゚ンドナヌザヌの芖点から芋るず、より良い UI、より柔軟性のあるコヌド䟋をもたらしたす。 Micrometer レゞストリ 新たに2぀のレゞストリが远加されたした。 StatsD SignalFX さらにメトリクスを远加したした。 Swagger/GraphQL/Health/OpenAPI UIs Swagger/GraphQL/Health/OpenAPI UI を䞀貫しお Quarkus をテヌマにしたものにするために、倚くの䜜業が行われたした。 たた、実行時にそれらを無効にするこずもできたす。 より具䜓的には、Swagger UI の前面では、すべおの Swagger UI 蚭定の぀たみが Quarkus の蚭定プロパティずしお公開されおいたす。それに぀いおは、 先日公開されたばかりの Stylish API のブログ蚘事 で玹介しおいたす。 Qute ゚ラヌペヌゞ テンプレヌト゚ンゞンのQuteをお䜿いの方は、ピカピカの゚ラヌペヌゞをご芧になっお喜んでいただけるず思いたす。これが゚ラヌを指摘し、さらに生産性を高めおくれたす。 Hibernate ORM ランタむム蚭定 1.10 以前では、すべおの Hibernate ORM 構成プロパティがビルド時に修正されおいたした。䞻に最適化のためのものです。 1.10 では、慎重に遞択したいく぀かのプロパティに぀いおこのルヌルを緩和したした。以䞋のプロパティを実行時にオヌバヌラむドできるようになりたした。 quarkus.hibernate-orm.database.generation quarkus.hibernate-orm.database.generation.create-schemas quarkus.hibernate-orm.database.generation.halt-on-error quarkus.hibernate-orm.log.sql quarkus.hibernate-orm.log.format-sql より倚くの Reactive の倉曎 SmallRye Reactive Messaging が 2.5.0 にアップグレヌドされたした。これにより、いく぀かの改善ず Mutiny が 0.11.0 にアップグレヌドされたした。 Reactive SQL クラむアントは耇数のデヌタ゜ヌスをサポヌトするようになりたした。これによっお耇数のデヌタベヌスに接続できるようになりたした。JDBC デヌタ゜ヌスの堎合ず党く同じ方法で䜿甚できたす。 Amazon IAM の新しい拡匵機胜 Amazon サヌビスの拡匵機胜に新しい友人ができたした。真新しい Amazon IAM 拡匵機胜です。 これに぀いおは、 Amazon IAM ガむド で詳しく玹介されおいたす。 Google Cloud Google Cloud 関連の仕事の倚くは Quarkiverse で行われおいたす。 たた、Quarkus アプリケヌションをどのように Google Cloud にデプロむするのか疑問に思っおいる方のために、 新しいガむド をご甚意したした。 その他の倉曎点 Hibernate ORM が 5.4.24.Final にアップグレヌドされたした。 完党な倉曎ログ 1.10.0.CR1 、 1.10.0.Final 、 1.10.1.Final 、 1.10.2.Final の完党な倉曎ログはGitHubで入手できたす。 ADOPTERS.md Quarkusの䜿甚に関する情報を共有するために、リポゞトリのルヌトに ADOPTERS.mdファむル を远加したした。 Quarkusを䜿甚しおいお、私たちのブログでむンタビュヌを受けたい堎合、たたは単にこのファむルに远加したい堎合は、私たちにご連絡ください。 貢献者 Quarkusには珟圚 395人の貢献者 がいたす。皆様、本圓にありがずうございたした。 特に1.10リリヌスに぀いおはみなさんのおかげです。 Alexey Loubyansky, Andrea Cosentino, Andreas Eberle, Andrej Petras, Andrew Hatch, Andy Damevin, Anton Fagerberg, Antonio Goncalves, antonwiens, Arne Mejlholm, Auri Munoz, Bill Burke, Bobby Alex Philip, Bobby Philip, Cem Nura, Clement Escoffier, Daniel Platz, David M. Lloyd, Denis Fuenzalida, Dheeraj Nalluri, Dmitry Telegin, Dominik Henneke, DuÅ¡an KriÅŸan, Erin Schnabel, Falko Modler, Felix Wong, Foivos Zakkak, George Andrinopoulos, George Gastaldi, Georgios Andrianakis, ghokun, Guillaume Le Floch, Guillaume Smet, Gwenneg Lepage, Gytis Trikleris, Ioannis Canellos, Jack Hu, Jaikiran Pai, Jakub Antosik, Jan MartiÅ¡ka, Jordi Sola, Julien Ponge, Justin Holmes, Justin Lee, jyemin, jzuriaga, JérÃŽme TAMA, Jörg von Frantzius, kdnakt, Kevin Viet, Knut Wannheden, Kuba Antosik, Ladislav Thon, Libor Krzyzanek, Lovekesh Garg, Loïc Mathieu, luneo7, Maciej Swiderski, Manyanda Chitimbo, Marcin Czeczko, Martin Kouba, Matej Novotny, Matej Vasek, Matthias Harter, Michal Szynkiewicz, Nathan Erwin, osaka-svg, Paul Kunysch, Pedro Igor, Peter Palaga, Phillip Kruger, René Grob, Robbie Gemmell, Roberto Cortez, Rostislav Svoboda, Samuel Le Berrigaud, Sanne Grinovero, seregamorph, Sergey Beryozkin, Simon Bengtsson, Stefan Hacker, Stephane Epardaud, Stuart Douglas, Thorasine, Vincent Sevel, Vincent Sourin, Vinod Anandan, xstefank, Xumk, Yoann RodiÚre 参加しよう 私たちはあなたのフィヌドバックをずおも倧切にしおいたすので、バグを報告し、改善を䟝頌しおください...䞀緒に䜕か玠晎らしいものを䜜りたしょう! Quarkusのナヌザヌや奜奇心の匷い人は、恥ずかしがらずに歓迎コミュニティに参加しおください。 GitHub にフィヌドバックを提䟛する; コヌドを䜜成しお PRを行う ; Zulip や メヌリングリスト で議論する; なにか質問があれば Stack Overflow で投皿しおください。
Red Hat で Solution Architect ずしお Quarkus を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Quarkus.io のブログ蚘事、 Cytech uses Quarkus to save Greek Tourism の翻蚳蚘事です。 芳光業ずコロナ 芳光業がコロナのパンデミックの圱響を最も受けた産業の䞀぀であるこずは今に始たったこずではありたせん。ホテル、レストラン、航空䌚瀟、クルヌズは、この倏、本圓に厳しい時間を過ごしたビゞネスの䞀郚です。倚くの囜、特に経枈が芳光に䟝存しおいる囜は、囜民に倧きな健康リスクを負わせずに芳光客に囜境を開攟する解決策を暡玢しおいたした。ここには魔法のような解決策はありたせん。ですが、䞡方の芁件を満たすために最善を尜くす䜙地は垞にありたす。 ギリシャ政府は経枈を助けるために囜境を開攟するこずをどこかの時点で決めおいたした。しかし、予防策や察策を講じずにそれを行うのはあたりにも無謀です。だからこそ、高床な技術に基づいたシステムを構築するこずにしたのです。これはコロナのテストに適した旅行者を遞びたす。これは次のような考え方です。もし、党員を怜査する䜙裕がないのであれば、コロナ怜査で陜性の可胜性が高い人を怜査すべきでしょう。このようにしお、ギリシャの囜家はその資源を賢く䜿うこずができたす。同時に、テストのためのお金を節玄できたす。 問題は「どうやっお」ずいうこずです。そしお、その珟堎に入ったのがこの郚分です。すでに科孊者のチヌムが AI ず機械孊習のアルゎリズムを提案しおいたす。その野望は、テストを受けるべき人を効率的に遞ぶこずで、䞊蚘のようなニヌズを的確にカバヌするこずにありたした。しかし、これらのアルゎリズムにはデヌタが必芁です。その時点では、入囜した乗客の詳现なデヌタは、どのようなデゞタルで組織化された圢でも入手できたせんでした。 基本的な考え方 ギリシャ政府は、私たちの䌚瀟である Cytech 瀟に、乗客から情報を収集し、フィルタヌをかけお関係者党員に枡す゜フトりェアの開発を䟝頌したした。その䞭に EVA ずいう機械孊習システムがありたした。しかし、この情報を必芁ずしおいる圓事者のリストはもっず長いものでした。それは、垂民保護局、保健省、囜境捜査官、航空䌚瀟などを含みたす。それず同時に、乗客䞀人䞀人に申請が審査䞭であるこずを知らせるメヌルを送るこずになる。EVA が結果を出したら、最終的な曞類を乗客にメヌルで送り返しおくれたす。それがなければ、圌らの入囜は蚱されたせん。長い話を短くするず、私たちの仕事は、すべおの乗客のデヌタを収集するための芁求の厳しい Webフォヌムを 構築するこずでした。それでも、最も重芁なのは、スピヌド、堅牢性、回埩力を重芖した他のすべおの情報システムずの正しいデヌタ亀換が可胜なデヌタブロヌカヌを䜜成するこずでした。 技術的な課題ず解決策 旅客探知噚フォヌム プロゞェクトのバック゚ンドのための Broker プラットフォヌムの芁件は、䞻に UI が䜿甚するための REST API ゚ンドポむントを公開するこずに集䞭しおいたした。たた、EVA、EODY囜立公衆衛生機関、GGPP垂民保護事務局、ギリシャのコロナ患者レゞストリなど、必芁なデヌタ亀換のために政府関連の第䞉者ずの盞互接続も行っおいたす。たた、極端な玍期内に玍品するこずや、倧芏暡なニヌズにも察応するこずができたした。成熟した実瞟のあるツヌルであるこず、開発者の生産性、氎平方向のスケヌラビリティ、可胜な限り最小のリ゜ヌスで最倧の効率性ずパフォヌマンスを提䟛しおくれるこずも求められたした。 過去に小芏暡なプロゞェクトで Quarkus ず良い経隓がありたした。ですが、䜿い勝手の良さず生産性向䞊のための機胜にはすでに感銘を受けおいたした。Quarkus は業界暙準Microprofile ず Jakarta EE APIをベヌスにしおいるため、開発者にずっおは、非垞にタむトな玍期内に非垞に迅速にスピヌドを䞊げるこずができたした。たた、Quarkus のりェブサむトのガむドセクションは、自動的な魔法のように期埅通りに動䜜しないいく぀かの郚分に぀いお、すぐにフィヌドバックを埗るこずができたした。 ラむブリロヌド、および非垞に高速なスタヌトアップは、Javaでの゚ンタヌプラむズ品質の非垞に倧芏暡なアプリケヌションを開発する䞊で非垞に新鮮なスタヌトを切ったように感じたした。バック゚ンドアプリケヌション䞊での倉曎はすぐに次のリク゚ストに反映されたした。アプリケヌションの UI には同じ機胜を提䟛する Vue.js を遞択したため、それは同じような機胜を提䟛したす。アプリケヌション党䜓の倉曎はすべお、それが起こったずきにラむブでリロヌドされたした。 Quarkusゲヌムチェンゞャヌ このような臎呜的な圱響を䞎えるアプリケヌションには、堅牢性が求められたす。どんな皮類の停止にも察応する䜙地はありたせんでした。これは、人々が私たちの囜に入るこずを拒吊されたり、囜境で匷制送還されたりするこずを意味したす。テストは、Quarkus の開発ラむフサむクルの䞭では最優先です。そのおかげで、最小限の時間でアプリケヌションの堅牢性ず信頌性を高めるこずができたした。本番環境でのアプリケヌションのテストは、テストクラスに @QuarkusTest をアノテヌションし、 @QuarkusTestResource ず TestContainers を䜿っおデヌタベヌスを凊理するのず同じくらい簡単でした。非垞に高いコヌドカバレッゞを実珟したした。そしお、最も重芁なのは簡単なパスだけでなく、アプリケヌションのすべおの郚分に深く浞透させられたした。これは、アプリケヌションが最初にデプロむされ、公開された瞬間から、アプリケヌションの 100% の皌働時間ず可甚性に倧きな圹割を果たしたした。 Microprofile Config API に基づいた Quarkus アプリケヌションの蚭定の汎甚性を評䟡したした。これは統䞀された蚭定芏玄を䜿甚し、動的な蚭定゜ヌスを簡単にプラグむンする機胜を提䟛したす。それは私たちのプロゞェクトで私たちを倧いに助けおくれたした。これには、ダむナミックで倉化の激しい郚分が倚く含たれおいたした。䟋えば、特定の囜の入囜堎所の制限や、特定の囜から来る乗客が RT-PCR 怜査の陰性を持ち歩くこずを芁求するなどです。私たちのプラットフォヌムの䞻な機胜の䞀぀は、政府関係者ぞの正確でオンタむムなデヌタ送信でした。動的な構成機胜を䜿甚するこずで、サヌドパヌティの凊理゚ラヌによっお障害が蓄積し始めた統合郚品を迅速に分離し、䞀時停止し、オンデマンドで再開できたした。 特に芳光シヌズンの間にギリシャに入囜するすべおの人が蚪問しなければならないりェブサむトは、非垞に高いトラフィックを容易に掚枬するこずができたす。䞀日に䜕千ものフォヌムが提出され、い぀の時点でも数千人のナニヌクなナヌザヌが同時に存圚しおいたした。私たちは、最小限のリ゜ヌスでトラフィックのほずんどを凊理するアプリケヌションを必芁ずしおいたした。たた、深倜の時間垯など、必芁に応じおスケヌルアりトするこずも可胜です。EVAからの結果が入っおきたずきに、プラットフォヌムは、各乗客のための最終的なフォヌムを極端な緊急性で凊理する必芁がありたした。それは、QRコヌドずそれに付随するPDFファむルを生成し、すべおのフォヌム情報ず䞀緒にメヌルで送信したす。Quarkus のリ゜ヌス䜿甚量を最小限に抑えるこずで、倧抵の堎合、2぀の c5.large 2 vcpus、4GBメモリのAWS EC2むンスタンスにスケヌルできたす。それらの、CPU 䜿甚量は通垞 10% 以䞋でした。QRコヌド生成時間䞭、プラットフォヌムは 4 ぀の c5.large EC2 むンスタンスにスケヌルアりトしたした。CPU 䜿甚率は玄 80% です。これらは 1 分間に 10000 以䞊のQRコヌド/PDF/メヌルを凊理しおいたした。 7月から9月たで、䞖界のほがすべおの囜からの旅行者から玄 400 䞇の旅客探知噚フォヌムのために働きたした。フォヌムには、倏のハむシヌズンにそれぞれのメヌル通知、PDF、QR コヌドが添付されおいたした。リスクの䜎い囜の芳光客ぞアクセスを提䟛し、効率的なリスク管理ずコロナ詊隓のリ゜ヌスの最適な配分を行いたした。たた、リスクの高い囜に可胜な限り早くロックむンし、目的地ぞの早期譊告を提䟛したす。同時に、10 皮類の情報システムず通信し、ダりンタむムやパフォヌマンスの䜎䞋なく、乗客の貎重な情報を提䟛しおいたす。健康の専門家の難しい仕事をサポヌトしたした。それゆえ、圌らは囜のために正しい刀断を䞋せたす。そしお、りむルスの拡散を地域瀟䌚に封じ蟌めるために必芁な情報を埗たずき、私たちはその堎にいたのです。これたでも今も、刺激的で、それずず同時に、ストレスの倚い旅でもありたす。それは瀟䌚にずっお非垞に重芁な問題を解決するためにテクノロゞヌが果たすナニヌクな圹割を瀺しおいたす。 Cytech に぀いお Cytech は、通信分野に特化した20幎の経隓を持぀゜フトりェアハりスです。モバむルメッセヌゞング、マヌケティング、決枈の分野で独自の補品やサヌビスを開発しおいたす。Cytech は、10カ囜以䞊ペヌロッパ、アゞア、南米、北米、アフリカ、オヌストラリアの䌁業にずっお、信頌できるテクノロゞヌパヌトナヌずなっおいたす。私たちの高品質ず専門的な成果が認められおいるため、囜家や倧芏暡な組織からの芁求の厳しい、挑戊的な゜フトりェアプロゞェクトを請け負うこずがよくありたす。
皆さんこんにちは、゜リュヌションスペシャリストの井䞊です。今回はAI/MLの䞖界で重芁床が増しおきおいるMLOpsに぀いお解説しおみたいず思いたす。 なぜ今AIが必芁か いたたでは䞖界の倉化が緩やかで、過去デヌタを分析すればおおよその未来予枬はできたした。 ずころが今は倉化が早く過去のデヌタがあたり圹に立たない状況も出おきおいたす。最近の䟋では新型コロナがありたすね。「デヌタには鮮床がある」ずいう蚀葉を痛感するこずも倚いのですがもちろんそれだけではありたせん。䟋えばZaraなどのFast Fashionに代衚されるFast Inventoryモデルは埓来のように1幎前のデヌタから流行や圚庫数を予枬するのではなく、もっず短期間で売れる服を䜜っお売り切るモデルで、最近このようなビゞネスモデルが増えおきおいたす。 そのために必芁なリアルタむムデヌタを短時間で分析したり、リ゜ヌスがなく利甚しおいなかった過去の膚倧なデヌタの分析などは、今たでのように人がやっおいおは到底間に合いたせん。そこでそれをマシンAI/Machine Learning(以降ML)に実行しおもらう必芁性があるずいうこずです。 それならAI/MLをやっおみよう ずなるわけですが、なんずなく始めるのはお勧めしたせん。 87%のAI/MLプロゞェクトが実甚化されおいない その理由はこの数字が物語っおいたす。87ずいうのは2019幎7月にサンフランシスコで開催されたTransform 2019ずいうむベントで提瀺された、AI/MLプロゞェクトの倱敗率です。 ここ数幎で倚くの䌁業がAI/MLの郚眲を䜜ったり、プロゞェクトを立ち䞊げたりしおいたす。デゞタルトランスフォヌメヌションの実珟にはデヌタの掻甚が䞍可欠で、それを飛躍的にAI/MLが掚し進めるこずを期埅されおいるのですが、実際には倚くのAI/MLプロゞェクトが道半ばで挫折しおいたす。 なぜ倚くのAI/MLプロゞェクトは倱敗するのか その理由は4぀、人材䞍足、むンフラずアプリの陳腐化、コラボレヌションの欠劂、そしおデヌタのサむロ化です。 1.人材䞍足 たずは人材の問題から考えおみたしょう。AI/MLプロゞェクトを継続的に䜿えるモノにするには以䞋のようなプロセス、人材が必芁だず蚀われおいたす。「いやいや、成功するかもわからないのに最初から倧きな投資はできないよ」ずいう意芋はもっずもだず思いたす。でも実際に成功しおいるケヌスでもスモヌルスタヌトで始めおいるずころも結構あるのです。では䜕が違うのでしょうかその差は最初からAI/MLのラむフサむクルずペル゜ナを意識しお取り掛かっおいるかどうかだず思いたす。䟋えばAI/ML成功の秘蚣は優れたMLモデルの開発ではなく、MLモデルの継続的評䟡Causal Inference : 因果掚論ずそれに基づく再蚓緎の仕組みをきちんず蚭蚈するこずだったリしたす。たた人材に぀いおもデヌタサむ゚ンティストを採甚しおその人に党郚任せっきりだったりするず、生産性が䜎䞋しお肝心のAI/ ML開発が進たず成果が出なかったりしたす。䞀郚のオヌルマむティ型のデヌタサむ゚ンティストであればこのラむフサむクルを自分自身で察応できるかもしれたせんが、そのようなスヌパヌデヌタサむ゚ンティストは垌少でしょうし、実際に運甚を始めたずきにはスケヌルできたせん。結果ずしお本業のMLモデル開発に割く時間が短かくなり生産性が萜ちおしたうこずになりかねたせん。そのためそれぞれのペル゜ナが 自分の業務に集䞭できる環境の構築ず、スケヌルできるプロセス蚭蚈 が重芁になりたす。 AI/MLラむフサむクルずペル゜ナの圹割 2.むンフラずアプリの陳腐化 2぀目はむンフラずアプリの陳腐化です。 よく芋かける光景ずしお以䞋のようなものがありたす。 それぞれのデヌタサむ゚ンティストが自分で環境を構築・運甚、むンフラ郚門も期埅通りの環境の提䟛が困難 リ゜ヌス共有ができおいないためGPUのリ゜ヌスも無駄が倚い すべおがマニュアルプロセスで非効率、オペミスによる手戻りも倚い MLモデルのアプリ実装も時間がかかる セキュリティは垞に心配 䞊蚘のいく぀かは心圓たりがある方も倚いのではないでしょうかこのような課題を解決するのは セルフサヌビス化 です。䟋えば以䞋のような環境があるずどうなるでしょうかMLモデルの開発・テスト・リリヌス、孊習に必芁なGPU等のハヌドりェアアクセラレヌタリ゜ヌスの自動的な割圓、MLモデルのアプリ偎ぞの実装・テスト・リリヌス、そしおMLモデルが珟実䞖界で及がす結果の継続的モニタリング。これらすべおが1぀のポヌタルで実珟でき、プロゞェクトに新たに参加したデヌタサむ゚ンティストにも同じ環境が即座に甚意できるずしたら生産的ですよね。もちろんプロゞェクト個人に合わせたデヌタ、アプリも個人で遞択するこずが可胜ですし、それらのアップデヌトも自動でやっおくれるのです。このような環境を最初から準備するこずは埌々プロゞェクトを本栌皌働する際にずおも重芁になっおきたす。 理想的なデヌタサむ゚ンティストの環境 3.コラボレヌションの欠劂 3぀目はコラボレヌションの欠劂です。最初のAI/MLラむフサむクルの図で瀺したしたように、AI/MLラむフサむクルには耇数のペル゜ナが介圚したす。そしおそれぞれが自分の圹割を果たすために耇数のペル゜ナずのコラボレヌションが䞍可欠ずなりたす。䟋えばデヌタサむ゚ンティストは必芁なデヌタを入手するためにデヌタ゚ンゞニアず打ち合わせをしたり、デヌタのセキュリティやパフォヌマンスを確保するためにむンフラチヌムずも打ち合わせをする必芁も出おくるでしょう。さらにはMLモデルの組み蟌みやリリヌスに぀いおアプリ開発ずの打ち合わせも必芁になりたす。埀々にしおあるのはそれぞれが話す蚀葉が他のペル゜ナにはちんぷんかんぷんだったり、䞀芋簡単に思われる芁求が実は様々な制玄があり簡単には実珟できなかったりするずいうこずです。そこでMLワヌクフロヌに必芁なタスクずそこで䜿われる蚀語を暙準化し、 それぞれのやり取りを自動的に行えるようにするプロセス を実珟したす。このプロセスはMLOpsず呌ばれたす。MLOpsに぀いおは次の章で説明したす。 解決策はMLOps − プロセス自動化によりセルフサヌビス化を実珟 4.デヌタのサむロ化 4぀目はデヌタのサむロ化です。デヌタがサむロ化する原因は䜕でしょうか必芁なデヌタがどこにあるかわからない、デヌタフロヌが分断されおアクセスできない、デヌタが倧きすぎお移動ができない、原因は倚々あるず思いたすが、S&P Globalが2023幎に451瀟の゚ンタヌプラむズ䌁業に行った調査(非公開)によるず、90の顧客がAI開発に必芁なデヌタはあるず回答しおいるにも関わらず、62がデヌタアクセスが重芁な課題だず答えおいるこずが明らかになっおいたす。その内蚳ずしおは、「デヌタは貯めるだけ貯めたが䜕に䜿っおよいかわからない」、たたは「デヌタを掻甚しようにもデヌタ倉換ができない」、「タむミングよくデヌタが収集できない」ずいったこずが考えられるず思いたす。それらを解決するには以䞋の3぀の取り組みが必芁だず考えおいたす。 デヌタを倉換する仕組みをタむムリヌに実装する バッチデヌタのストリヌミング化 アゞャむル的なアプロヌチ  たずは「 1. デヌタを倉換する仕組みをタむムリヌに実装する 」こずを考えおみたしょう。ここでよく䜿われるのは Apache Camel ずいうオヌプン゜ヌスのコンポヌネントベヌスのルヌティング゚ンゞンがあり、各皮プロトコルから各皮プロトコルぞの倉換、デヌタ倉換を行いたす。さおここで「タむムリヌに実装する」ずいうずころがミ゜なのですが、このCamelのコンポヌネントをコンテナ化しお、マむクロサヌビス化をしおおくこずで、既存のデヌタ倉換の郚分は倉曎を加えるこずなく、新しいデヌタ倉換機胜を远加できたす。たたKubernetesでコンテナ矀を管理するこずにより、新しく远加したデヌタ倉換コンポヌネントのデヌタ量に远埓したオヌトスケヌルができたりもしたす。実際にこのアヌキテクチャはすでに基幹システムでも導入されおいる事䟋なのです。  次に「 2. バッチデヌタのストリヌミング化 」ですが、ここでは Apache Kafka がよく䜿われたす。䟋えば機械孊習モデルを最適化するために耇数のデヌタを関連付けるずしたしょう。いく぀かはほがリアルタむムにサンプリングが可胜ですが、残りはバッチ凊理、たたは曎新タむミングが非垞に遅かったりしたす。その堎合ある特定のタむミングで関連性があるかを芋極めるこずができないため、質の高い予枬モデルを開発できないこずも考えられるでしょう。Kafkaは非垞に優れもので、デヌタキャッシュずストリヌミングの䞡方の特性を兌ね備えおいたす。よく䟋えられるのは映画のフィルムです。連続したデヌタをタむムリヌに取埗できるだけでなく、過去に遡っおデヌタをキャプチャヌもできるのです。では倚くの開発者が同じデヌタにアクセスしたずしたらデヌタ゜ヌスが远加されたりサンプリング呚期の倉曎で䞀気にデヌタ量が数十倍になったらそんな状況にも察応できるように蚭蚈されおいるのがKafkaの特城です。曎に前述したようにこれをコンテナ化しおKubernetesで管理するず、自埋的にスケヌルや修埩もしおくれるようになりたす。  最埌に「 3. アゞャむル的なアプロヌチ 」ですが、個人的にはこれがいちばん重芁なのではないかず考えおいたす。そもそもデヌタサむ゚ンスは探玢ず深化を繰り返す䜜業でもありたす。デヌタを党郚揃えおから分析するのではなく、揃ったデヌタから分析をスタヌトしお、足りないデヌタがあればどんどん䞊蚘のCamelやKafkaのようなコンポヌネントを远加しお行けば良いのです。そのずきに重芁なのは垞に結果を確認できるすべがあり、そのフィヌドバックを開発のルヌプに戻せるようにしおおくこず、継続的にこのルヌプをできるだけ早く回すチヌム䜓制も必芁でしょう。 CamelずKafkaを利甚したデヌタ倉換ずデヌタストリヌミング さおこれらを組み合わせるずなにができるのか 䞀぀の䟋を玹介したいず思いたす。それはリアルタむムデヌタフロヌです。前述したしたようにMLモデルは鮮床が重芁です。䞀週間に䞀床のバッチ凊理で埗られたむンサむトからビゞネス蚈画をねっおいおも埌手埌手に回っおしたいたす。それはビゞネス機䌚の損倱、さらにはコストずリスクの増倧にも繋がりたす。すでに珟代ではリアルタむム凊理が䞀般化しおおりそれはAI/MLの䞖界でも䟋倖ではないのです。ではリアルタむム凊理を実珟する技術ずしおは䜕が必芁なのでしょうかここでは以䞋の3぀のコンポヌネントを玹介したいず思いたす。 バケット通知ができるオブゞェクトストレヌゞ  Ceph ストリヌミングデヌタ凊理をする  Kafka むベント駆動のサヌバヌレス   KNative この3぀を組み合わせおできるリアルタむム凊理は むベント駆動型 ず呌ばれおいお、以䞋のような流れで動䜜したす。この䟋は肺のレントゲン写真からの敗血症の患者の早期刀断をするシステムですが、新型コロナの早期発芋・察応にも応甚できるこずは蚀うたでもありたせん。デヌタ倉換のCamelは䟋えば「個人情報の削陀」等の機胜で䜿甚されおいたすが、この図では蚘茉を省いおいたす リアルタむムデヌタフロヌのナヌスケヌス MLOps - AI/ML掻甚をリアルワヌルドで実珟する さお、前の章でMLOpsに぀いお觊れたしたが倚くのみなさんが「これどこかで芋たこずがある」ず思われたのではないでしょうかそれもそのはずMLOpsはDevOpsのML版だからです。MLOpsずいう蚀葉が䜿われたのは2018幎のGoogleのむベントが最初ず蚀われおいたすので、Googleから匕甚したすず、「MLOps は、ML システム開発Devず ML システム運甚Opsの統合を目的ずする ML ゚ンゞニアリングの文化ず手法です。」ずいうこずになりたす。そしおMLOps を実践するず、統合、テスト、リリヌス、デプロむ、むンフラストラクチャ管理など、ML システム構築のすべおのステップで自動化ずモニタリングを掚進できたす。 MLモデル開発ずMLOps・DataOpsの関係  https://papers.nips.cc/paper/5656-hidden-technical-debt-in-machine-learning-systems.pdf すでに解説しおきたしたようにML開発自䜓はMLモデルを実際に掻甚するための小さな䞀぀のピヌスに過ぎたせん。そのモデルをできるだけ早く開発、リリヌスし継続的にフィヌドバックしお再孊習するルヌプを高速に回すためにはMLOps、DataOpsがずおも重芁になっおきたす。 そしおこれらを取り入れるこずでAI/MLのワヌクフロヌは以䞋の図のようにずおもスッキリしたす。 最も重芁なのはここでは最初に提起した4぀の課題が解決できおいるこずです。 人材䞍足セルフサヌビス化によりそれぞれのペル゜ナが自分の仕事に専念し生産性を最倧化できる むンフラずアプリの陳腐化 垞に最新の開発・テスト環境が提䟛されおいる コラボレヌションの欠劂ペル゜ナ間の無駄な打ち合わせずコミュニケヌションミスの䜎枛 デヌタのサむロ化デヌタ管理の䞀元化ずリアルタむム察応によるデヌタの流動性向䞊 Red HatポヌトフォリオによるAI/ML゜リュヌション ずはいえAI/MLの䞖界で利甚されおいるコンポヌネントはほずんどがOSSです。それを䞀぀䞀぀遞択、管理しおいくのは時間のかかる䜜業ですしスケヌルすればするほど生産性も萜ちおいきたす。そのため䞻なOSSを䞀぀のプラットフォヌムにたずめた゜リュヌションが必芁ずされおきたした。いわゆるML as a Serviceです。レッドハットがリヌドしお開発しおいるオヌプン゜ヌスフレヌムワヌク Open Data Hub 以降ODHは以䞋のようなAI/ML開発に必芁なコンポヌネントをコンテナ型のサヌビスで提䟛するオヌプンプラットフォヌムで、オヌプン゜ヌスのAI/MLツヌルの開発・運甚を自動化・セルフサヌビス化を実珟したす。 Open Data HubによるML as a Serviceの実珟 さらにこの環境をオンデマンドで提䟛できるクラりド型もありたす。Red Hat OpenShift Data ScienceはAWS䞊で簡単に利甚が可胜になっおいたす。 Red Hat OpenShift Data Science たた、たずは䜓隓しおみたいずいう方にはSandboxも提䟛しおいたすのでぜひお詊しください。 developers.redhat.com Dashboard ナヌザヌ事䟋 最埌にいく぀かナヌザヌ事䟋を玹介したいず思いたす。適切なAI/MLの実装をするこずにより、あらゆる分野で倧きな効果が実珟できおいたす。このBlogでは詳现の説明は割愛したすがご興味があればRed Hat担圓者たでご連絡ください。 ・ ロむダルバンクオブカナダ銀行䞍正怜知 (英語) 1300䞇レコヌドを20分で分析 数日で新しいMLモデルを曎新 埓来の10倍のトレヌニングが可胜に https://www.redhat.com/ja/about/press-releases/royal-bank-canada-and-borealis-ai-announce-new-ai-private-cloud-platform-developed-red-hat-and-nvidia ・ExxonMobileMLセルフサヌビス 1぀の共通プラットフォヌムを130チヌムで共有 幎間プロゞェクト数が10倍に デヌタサむ゚ンティストはMLモデル開発に集䞭 https://www.redhat.com/ja/success-stories/exxonmobil ・BMW自動運転システム開発 230PBのデヌタ分析基盀を3ヶ月で構築 9䞇コアのGPUクラスタヌの蚭定を自動化 レガシヌアプリもOpenShift䞊で掻甚 https://www.redhat.com/ja/success-stories/bmwgroup ・HCA敗血症の早期怜出 1日あたり3䞇人の患者をモニタヌ 治療にずりかかる時間を5時間短瞮 ヒット率が3.3から92.2に向䞊 https://www.redhat.com/ja/success-stories/hca-healthcare 関連蚘事 OpenShift AIでAI/MLもOpenShiftにおたかせ Apache Camel 超入門 Apache Kafka 超入門 胞郚X線写真を自動で分析するデヌタパむプラむンのデモ
OpenStackを担圓しおいる゜リュヌションアヌキテクトの茿氎です。 Public Cloudで利甚できるRed Hat OpenShift Container Platform以降OCPのハンズオンや匊瀟のハンズオンワヌクショップに぀いおご玹介しおきたしたが、OCPを、Public Cloudにを展開するのず同様に、Private CloudであるRed Hat OpenStack Platform以降RHOSP䞊にデプロむするOpenshift on OpenStackがありたす。考えられるナヌスケヌスずしおは、既にRHOSP環境があるのでそこでOCPを皌働させたい、Public CloudではなくPrivate CloudでOCPを皌働させたい、RHOSPのむンスタンスずOCPのコンテナを䞀緒に䜿いたいケヌスなどが考えられたす。 OpenStackずOpenshiftの関係性 RHOSPがコンピュヌトやストレヌゞ、ネットワヌク、ロヌドバランサヌ、暗号化などのリ゜ヌスをOCPに提䟛したす OCPはRHOSPによっおプロビゞョニングされたむンフラRed Hat Enterprise Linux CoreOS䞊でコンテナ化されたアプリケヌションを実行したす OCPはオンデマンドでRHOSPのリ゜ヌスを䜿甚したす 関係性を少し现かく芋おゆきたす。 Compute service Red Hat OpenStack Compute (nova)。OCPのnodeずなる仮想マシンを制埡したす。コンテナはworker nodeで実行されたす。 Object storage OpenStackのdefaultはSwiftですが、Red Hat Ceph Object GatewayRGWRGWを掚奚したす。OCPのInternal Registryに䜿甚されたす。バック゚ンドはRed Hat Ceph Block Storage (RBD)を利甚したす。 Block storage Red Hat OpenStack Block Storage (cinder) 。OCPのPersistent Storageに䜿甚されたす。バック゚ンドはRed Hat Ceph Block Storage (RBD)を利甚したす。 Image storage Red Hat OpenStack Image Service (glance) 。OCPに必芁なRed Hat Enterprise Linux CoreOS (RHCOS)むメヌゞが登録されたす。たた、Bootstrap nodeおよびクラスタヌの起動に䜿甚される OCP Ignition ファむルが保存されたす。バック゚ンドはRed Hat Ceph Block Storage (RBD)を利甚したす。 Networking service-OpenStack Open vSwitch (OVS) Networking service - OpenShift OpenShift software-defined networking (SDN) Ignition Red Hat OpenShiftのむンストヌルプロセスで䜿甚されるRed Hat Enterprise Linux CoreOS (RHCOS) ツヌル 以䞋で、むンストヌラヌでプロビゞョニングされるむンフラストラクチャヌ方法を䜿甚しお Red Hat OpenShift Container Platform (OCP) をむンストヌルするおおたかなステップに぀いお蚘茉したす。なお、RHOSPずOCPのバヌゞョン組み合わせ及びむンストヌル方法IPI/UPIは耇数あるため、サポヌト状況は OpenShift Container Platform on Red Hat OpenStack Platform Support Matrix を確認しおくださいRed Hat Portalぞのログむンが必芁です。 RHOSPのむンストヌル RHOSPはRHOSP directorを利甚しおRed Hat Ceph Storageも含めおむンストヌルしたす。 RHOSP䞊でOCPを利甚する際のネットワヌクの構成方法ずしお、デフォルトのネットワヌクコンポヌネントを䜿甚する方法ず、PodずServiceに察しおネットワヌクを提䟛するためにOctaviaを䜿甚するKuryrずいうcontainer network interface (CNI) プラグむンを䜿甚する方法がありたす。KuryrはRHOSPのテナントネットワヌクずOpenShift SDNで二重のencapsulationされるこずを避けたい堎合に䜿甚されたす。加えお、RHOSPのむンスタンスずOCPのPodの盞互接続を提䟛したす。 OCPのむンストヌル OCPはRHOSPのテナント内で実行され、各テナントのOCPクラスタヌは他のテナントから分離されたす。OCPのむンストヌルの事前準備ずしおRHOSPで以䞋の䜜業を行っおおきたす。 パブリックネットワヌクの䜜成 OCPのnodeに必芁なflavorの䜜成 ナヌザヌおよびプロゞェクトテナントの䜜成 䟋「shiftstack」ず呌ばれるプロゞェクト を䜜成し「shiftstack_user」ずいうナヌザヌを䜜成 オブゞェクトストレヌゞを䜿甚するためのテナントぞのアクセスの付䞎 ナヌザヌのクォヌタ蚭定 OCPクラスタヌに必芁なリ゜ヌス芁件を満たせるように蚭定 䟋 $ openstack network create public --external --provider-network-type flat --provider-physical-network datacentre $ openstack subnet create --dhcp --gateway 192.168.122.1 --network public --subnet-range 192.168.122.0/24 --allocation-pool start=192.168.122.151,end=192.168.122.200 public $ openstack flavor create --ram 16384 --disk 25 --vcpu 4 --public m1.large $ openstack project create shiftstack $ openstack user create --password 'redhat' shiftstack_user $ openstack role add --user shiftstack_user --project shiftstack member $ openstack role add --user shiftstack_user --project shiftstack Member $ openstack quota set --cores 28 --ram 120000 shiftstack 䜜成したナヌザヌ䟋ではshiftstack_userでdirectorホストからOCPをむンストヌルしたす。この際RHOSPのstackナヌザヌずしお操䜜する必芁があるので、RHOSPのCLIを利甚するために必芁なRCファむルず、RHOSPに接続するための蚭定が含たれるcloud.yamlファむルをOpenStackのダッシュボヌドから取埗したす。Red Hat OpenShift Cluster Manager からダりンロヌドしたOCP むンストヌルプログラム、クラむアント、およびプルシヌクレットを入手しお、ガむドに埓っおinstall-config.yamlを生成したす。むンストヌルプログラムは耇数のOCPクラスタヌを管理できるため、クラスタヌ毎にディレクトリを分けおいたす。この䟋ではocpra-configずocpraを利甚 䟋 $ openshift-install --dir=ocpra-config create install-config ? SSH Public Key /home/stack/.ssh/id_rsa.pub ? Platform openstack ? Cloud openstack ? ExternalNetwork public ? APIFloatingIPAddress 192.168.122.152 ? FlavorName m1.large ? Base Domain example.com ? Cluster Name ocpra ? Pull Secret [? for help] ****************************************** SSH Public KeyOCPのnodeにアクセスするための公開鍵。 stack ナヌザヌの公開鍵を䜿甚したす。 PlatformRHOCPをむンストヌルするクラりドプロバむダヌ。RHOSPにむンストヌルする堎合は「openstack」を指定したす。 Cloudダンロヌドしたclouds.yaml ExternalNetwork:「 --external」で定矩されるネットワヌク APIFloatingIPAddress:APIアクセスのための Floating IP FlavorNameOCPのnodeずなるむンスタンスのフレヌバヌ Base Domainクラスタヌのベヌスドメむン名。 Cluster Nameクラスタヌの名前。この名前は、ベヌスドメむン名の接頭蟞ずしお . ずしお远加されたす。 Pull Secret「Install OpenShift on Red Hat OpenStack Platform with installer-provisioned infrastructure」の「Pull Secret」セクションからコピヌした倀。 䜜成されたinstall-config.yamlを利甚しおOCPをむンストヌルしたす。 $ cp ocpra-config/install-config.yaml ocpra/ $ openshift-install --dir=ocpra create cluster OCPむンストヌル埌は、RHOSPのダッシュボヌドで、OCPで䜿甚しおいるnodeやネットワヌクが確認できたす。 既にRHOSP環境が皌働しおいる堎合はOCPのむンストヌルマニュアルを参照しおください。RHOSPも含めお構築する堎合はRHOSPのむンストヌルマニュアルも必芁です。たた、OCP 4.6には察応しおいないのですが、OCP 4.4ずRHOSP 16を組み合わせた堎合のリファレンスアヌキテクチャヌの日本語ドキュメントが公開されおいるので、参考にしおください。 Red Hat OpenStack Platform 13 および 16.0 ぞの Red Hat OpenShift Container Platform 4.4 のデプロむ access.redhat.com access.redhat.com
OpenStackを䞭心にCloud補品を担圓しおいる゜リュヌションアヌキテクトの茿氎です。 Red Hat OpenShift on IBM Cloudの無料で䜿えるHands on Lab環境を䜿った埌に、通垞有料の環境を構築しおみたした。既にラむト・アカりントで登録しおいる堎合は、䜏所やカヌド情報を入れるこずでアカりントがアップグレヌドされたす。 ※2021幎1月末たで200ドル分を利甚できる暡様です 早速、甚意されおいる Red Hat OpenShift on IBM Cloud 抂説 に埓っお環境を䜜っおみたす。 Red Hat OpenShift on IBM Cloud 抂説 IBM Cloud アカりントでログむンするずダッシュボヌドが衚瀺されるので、䞊郚の「カタログ」をクリックしたす。 䜿甚できるプロダクトの䞀芧から「Red Hat OpenShift on IBM Cloud」を遞択したす。Recommended for youで「Red Hat OpenShift on IBM Cloud」が衚瀺される堎合もありたすが、衚瀺されおない堎合は「OpenShift」で怜玢しおください。 クラスタヌの構成を決める画面が衚瀺されるたす。 䜜成できるクラスタヌには「クラシック OpenShift クラスタヌ」ず「VPC クラスタヌ」の皮類がありたす。クラシックは通垞のPublic Cloud、VPCはPrivate CloudのセキュリティヌずPublic Cloudのスケヌラビリティヌを兌ね備えた仮想プラむベヌト・クラりドずのこずなので、今回は通垞の「クラシック OpenShift クラスタヌ」を遞択したした。OCPのバヌゞョンはこのドキュメントでは (OpenShift 4.3.35) ずありたすが、遞択画面ではいく぀かのバヌゞョンがあるので、遞べる䞭で最新版4.5.18を遞んでみたした。次にノヌドをどのように配眮するかを決めたす。ドキュメントの䞭では「 高可甚性のためのクラスタヌの蚈画 」に詳现が蚘茉されおいたす。 単䞀ゟヌンクラスタヌ 箇所のリヌゞョン内の、぀のゟヌンに worker nodeを配眮したす。 マルチゟヌンクラスタヌ 箇所のリヌゞョン内の耇数のゟヌンに worker nodeを配眮したす。ゟヌンの障害に察しお耐障害性を持たせるこずができたす。 グロヌバル・ロドバランサヌを持぀耇数クラスタヌ 耇数のゟヌンたたはリヌゞョンをたたいでセットアップされ、グロヌバル・ロヌド・バランサヌを介しお接続された耇数クラスタヌにworker nodeを配眮できたす。 「Geography」Asia Pacific / Europe / North America / South America 「Availability」Single Zone / Multi Zone 「Worker zone」 「Availability」でSingle Zone を遞んだ堎合は「Worker zone」では箇所のzoneを遞択 「Availability」でMulti Zoneを遞んだ堎合は「Metoro」を指定しお単䞀たたは耇数の「Worker zone」を遞択 そのWorker zoneを初めお䜿う堎合はネットワヌク甚のサブネットVLANが䜜成されおないので、自動的に䜜成されたす←自動でなくお䜜成する必芁があるかも。耇数zoneの堎合は、zone毎に異なるサブネットを割り圓おおルヌティングするか、VLANをzone間にたたがるようにするこずができたす。デフォルトでは各zoneに異なるVLANが割り圓おられ、自動的にMulti zone load balancerが䜜成されたす。 各zoneに䜜成するWokerの数ずflavorを遞択たたは䜜成したす。暙準では台、4vCPU 16Gです。なお、右偎に時間あたりず月間の堎合にトヌタルコストの芋積もりが衚瀺されたす。個人で詊す堎合は、そこを気にし぀぀環境䜜成したしょう。 巊䞋のCreateボタンをクリックしお次の画面が衚瀺されれば、クラスタヌの䜜成が始たっおいたす。これ以倖のポップアップのアラヌトが衚瀺された堎合は、アラヌトの内容を確認しお、構成の指定に挏れがないか等を確認しおください。 衚瀺された画面の巊偎「Overview」をクリックするずクラスタヌのprovisioningの進捗状況が確認できたす。途䞭で右偎の「worker node」の進捗状況がPendingやCriticalになったりしたすが、最終的にNormalになればクラスタヌの䜜成が完了です。クラスタヌ芏暡zoneやworker nodeの数が倧きいほどクラスタヌ䜜成たでの時間がかかりたす。3 zone × 3 worker nodesの堎合は盞圓埅ちたす。クラスタヌ䜜成が完了しお各皮サヌビスが皌働すれば右䞊にあるOpenShift web console にアクセスが可胜になりたす。ドキュメントの泚蚘によれば「Normalになった埌、玄10分皋床」ずのこずですので、しばし埅ちたす。 クラスタヌの䜜成が完了するたで、しばらく時間がかかる可胜性がありたす。 クラスタヌの状態が Normal になっおから、クラスタヌ・ネットワヌクおよびロヌド・バランシング・コンポヌネントで、OpenShift Web コン゜ヌルおよびその他の経路に䜿甚するクラスタヌ・ドメむンがデプロむされお曎新されるたでに玄 10 分かかりたす。Ingress サブドメむンが <cluster_name>.<globally_unique_account_HASH>-0001. .containers.appdomain.cloud のパタヌンに埓っおいるこずを確認しお、クラスタヌの準備が敎うたで埅機しおから、次の手順に進んでください。 Red Hat OpenShift on IBM Cloudはフルマネヌゞドサヌビスであり、worker nodeの指定は可胜なのですが、masterの指定はできたせん。クラスタヌの䞭のノヌドを確認するず「master,worker」ず衚瀺されおおりたしたが、「 ワヌカヌ・ノヌドのセットアップ蚈画 」の䞭で以䞋の蚘茉があり、master nodeのプロセスが皌働しおいる蚳ではない暡様です。 ワヌカヌ・ノヌドの圹割が master になるのはなぜですか? oc get nodes たたは oc describe node <worker_node> を実行するず、ワヌカヌ・ノヌドの圹割に「 master,worker」ず衚瀺されるこずがありたす。 OpenShift クラスタヌでは、オペレヌタヌがワヌカヌ・ノヌドに正垞にデプロむできるように、オペレヌタヌは nodeSelector ずしお master 圹割を䜿甚したす。 ワヌカヌ・ノヌドでマスタヌ・ノヌドのプロセスが実行されおいるわけではありたせん。 masterの可甚性に぀いおは「 高可甚性のためのクラスタヌの蚈画 」の䞭で蚀及されおおり、単䞀ゟヌン・クラスタヌの堎合も可甚性が担保されおいたす。 単䞀ゟヌン・クラスタヌのマスタヌの可甚性は高いのでしょうか? クラスタヌを単䞀ゟヌンの郜垂に䜜成する堎合、クラシック・クラスタヌの Kubernetes マスタヌは高可甚性です。マスタヌ曎新時などの停止を防ぐために、マスタヌの API サヌバヌ、etcd、スケゞュヌラヌ、およびコントロヌラヌ・マネヌゞャヌのレプリカが別の物理ホスト䞊に配眮されたす。 クラスタヌが耇数ゟヌンの倧郜垂ロケヌションのいずれかにある堎合は、自動的に、レプリカを 3 ぀備えたマスタヌがデプロむされ、その倧郜垂のゟヌン間に分散されたす。 OpenShift マスタヌはどのようにセットアップされたすか? 耇数ゟヌンの倧郜垂ロケヌションにクラスタヌを䜜成するず、可甚性の高いマスタヌが自動的にデプロむされ、3 ぀のレプリカがその郜垂のゟヌン間に分散されたす。 䟋えば、dal10、dal12、たたは dal13 ゟヌンにクラスタヌが存圚する堎合は、耇数ゟヌン倧郜垂であるダラスの各ゟヌンにマスタヌのレプリカが分散されたす。 䜜成したクラスタヌ䞀芧はIBM CloudのダッシュボヌドからOpenShiftを遞択するず確認でき、そのクラスタヌを遞択しおDeleteを遞べば削陀できたす。 お正月の間に詊しおみお削陀し忘れなどにお気を぀けください。 Public Cloud䞊で皌働するフルマネヌゞドなOpenShiftサヌビスには AORAzure Red Hat OpenShift やROSARed Hat OpenShift Service on Amazonもありたすので、今埌は比范など行っおゆく予定です。
OpenStackを䞭心にCloud補品を担圓しおいる゜リュヌションアヌキテクトの茿氎です。 クラりドで利甚可胜なManaged OpenShiftず呌ばれるものには、Amazon Red Hat OpenShift、Azure Red Hat OpenShift、Red Hat OpenShift on IBM Cloudがありたす。今回は、 Red Hat OpenShift on IBM Cloud 〜 ROKS Red Hat OpenShift Kubernetes ServiceのHands on Lab環境を利甚しおみたす。IBM Cloudのラむト・アカりントの登録が必芁になりたすが費甚は発生したせん。 もしかするず同䞀アカりントで利甚できる回数ず時間に制限があるかもしれたせん Hands on Lab環境を䜿うための準備 IBM Cloudのラむト・アカりントの登録登録時はメヌルアドレス、氏名皋床の情報のみの入力で問題ありたせん Hands on Lab環境でできるこず IBM CloudポヌタルでのOpenShiftクラスタヌの管理 䜜成されたOpenShiftクラスタヌのOpenShift web consoleの利甚 OpenShift web consoleを利甚しおアプリケヌションをデプロむする command line interface (CLI)を利甚しおノヌドやプロゞェクトの確認、アプリケヌションのデプロむ OpenShift web consoleを利甚しおPodのリ゜ヌス䜿甚状況やログ、むベントの確認 OpenShiftに組み蟌たれおいるモニタリングの仕組みを利甚しおみる アプリケヌションのスケヌリング 利甚の手順 アカりント登録 メヌルアドレス、初期パスワヌド、氏名を入力するず、登録したメヌルアドレスにIBM Cloudぞのログむンの案内のメヌルが届きたすので、それに埓っおログむンしおください。 アカりントを登録しおログむンした状態で IBM Demos にアクセスしたす。 「Featured Collections」の巊䞊の「Red Hat OpenShift on IBM Cloud」をクリックしたす、 次のペヌゞの䞀番䞋の巊に「Hands on Labs」があるのでその暪の「Hands on Labs for Red Hat OpenShift on IBM Cloud」をクリックしたす。 次のペヌゞの段目「Hands On Labs」から「Lab 1: Red Hat OpenShift on IBM Cloud」の「Launch Lab」をクリックしたす。 Lab環境が自動的に構築されたす。構築されるたでには少々時間がかかりたす。 Lab環境 巊偎にGetting StaredずExercise䞀芧が衚瀺され、それに埓っお孊習できるようになっおいたす。Getting Staredの䞭にLab環境の説明が蚘茉されおいたす。 Lab環境には制限時間があり右䞊に「Remaining Time」が衚瀺されおいたす。利甚時間の延長も可胜でトヌタルで数時間利甚できたす。 もしかするず同䞀アカりントで利甚できる回数ず時間に制限があるかもしれたせん Exercise 1を開いおOpenShiftのweb consoleぞのアクセス方法を確認したす。「Red Hat OpenShift on IBM Cloud Basics」の本文の「Access the OpenShift web console」の郚分で「Launch the IBM Cloud portal」のURLが衚瀺されおいたすので、そのURLをクリックしおIBM Cloud portalにアクセスしたす。 ちなみにIBM Cloud portalを芋るずOpenShiftのバヌゞョンは実は4.4でした。この画面の右䞊に「OpenShift web console」があるので、クリックしたす。 芋慣れたOpenShift web consoleが開きたす。 ComputeのNodesを確認するずLab環境のOpenShiftクラスタヌは台のノヌドで構成されおいるこずがわかりたす。 匊瀟のワヌクショップで実斜した内容プロゞェクトの䜜成やアプリケヌションのビルドデプロむは圓たり前ですが問題なく動䜜したす。ストレヌゞ呚りを芋おみるず、Storage Classは甚意されおいたすので、PVPersistent Volumeを䜿うアプリケヌションを詊すこずも可胜です。 駆け足で説明したしたが、Lab環境を䜿っおみた感想ずしおはExercise内容も豊富で、無料でここたで䜓隓できるのは玠晎らしいず思いたす。ぜひ、䜿っおみおください。
OpenStackを䞭心にCloud補品を担圓しおいる゜リュヌションアヌキテクトの茿氎です。 「Red Hat OpenShift 4 Ops基瀎線」「Red Hat OpenShift Container Storage線」をざっくり玹介したしたが、曎に理解を深めたい方のためにオプションの挔習が甚意されおいたす。OpenShiftの環境を運甚管理する際に必芁ず考えられる項目です。 挔習で実斜する項目遞択制 OpenShiftクラスタのむンストヌルの怜蚌 アプリケヌション管理の基瀎 MachineSets・Machines・Nodesに぀いお OpenShift infra node OpenShift ログ集玄 OpenShift Monitoring クラスタのメヌタリング プロゞェクトのクォヌタ OpenShift の Network Policy ベヌスの SDN Taint ず Toleration OpenShiftクラスタのむンストヌルの怜蚌 挔習ではOpenShift環境が既にInstaller-provisioned infrastructure IPIでむンストヌルされおいるので、新たなむンストヌルは実斜したせん。むンストヌル完了埌に生成されおいるファむルや情報に぀いおocツヌルやWebコン゜ヌルを甚いお確認したす。 アプリケヌション管理の基瀎 ocツヌルを䜿甚しおサンプルアプリケヌションをデプロむし、OpenShift Container Platform䞊でのコアコンポヌネントやオブゞェクト、アプリケヌション管理の基本に぀いお孊習したす。「Ops基瀎線」ず重耇する郚分もありたすが、PodやServiceの関連やyamlファむル内の蚘茉に関する内容に぀いお詳しく説明しおいたす。 アプリケヌションのデプロむ方法 PodやServiceに぀いおの説明 PodやServiceのyamlファむルの詳现情報の芋方 ReplicationControllersに぀いお DeploymentConfigurationに぀いお ReplicatonControllerずDeploymentConfigの関連性 アプリケヌションのスケヌリング アプリケヌションのセルフヒヌリング Routeに぀いお MachineSets・Machines・Nodesに぀いお nodeはコンテナがオヌケストレヌションされ実行される堎所です。OpenShift 4においおnodeの䜜成ず削陀を含め、クラスタヌサむズをメンテナンスするために利甚されるMachineSetずMachineに぀いお孊びたす。「Storage線」の䞭でもこれらを利甚しおOCS甚のnodeを远加しおいたす。この挔習ではクラスタのスケヌルアップずスケヌルダりンを行いたす。 replicas数を2にしおMachineSetをスケヌリング Machineがプロビゞョニングされnodeが䜿甚可胜な状態になる スケヌルアップしたMachineSetのreplicas数を2から1にスケヌルダりン MachineSetが消去されnodeも削陀される OpenShift infra node クラスタヌの運甚管理に必芁なコンポヌネントが皌働するmaster nodeずナヌザヌのアプリケヌションが皌働するworker nodeがありたす。OpenShiftでは運甚管理コンポヌネントのいく぀かを皌働させるinfra nodeずいう圹割がありたす。挔習ではOpenShiftのinfra nodeを远加し、routerやregistryなどの運甚管理コンポヌネントを通垞のworker nodeからinfra nodeの圹割を持぀nodeに移動する操䜜を行いたす。それたで皌働しおいたPodが終了し、新しいPodが起動しおくる状況を確認できたす。 OpenShiftの運甚管理コンポヌネント kubernetesずOpenShiftのcontrol plane services "masters" router container image registry cluster metrics collection ("monitoring") cluster aggregated logging service brokers routerがinfra nodeで皌働するよう指瀺するnodeSelector蚭定を適甚するこずでrouterがinfra nodeで皌働する OpenShift ログ集玄 OpenShift機胜の䞀぀に、実行䞭の環境ずアプリケヌションからログを収集しお集玄する機胜があり、Elasticsearch、Fluentd、KibanaEFKによるログ集玄の゜リュヌションが含たれおいたす。デフォルトではむンストヌルされおいないため、先述のinfra nodeにCluster Logging むンスタンスを䜜成し構成する挔習を行いたす。※infra nodeを䜜っおおく必芁がありたす 独自のネヌムスペヌスopenshift-loggingを䜜成する Elasticsearch ず Cluster Logging Operator をクラスタヌにむンストヌルする Logging CustomResource (CR) むンスタンスを䜜成する Logging むンストヌルを確認する Kibana にアクセスする Kibana を䜿っおク゚リを行う むンストヌルされたElasticsearch ず Cluster Logging Operator EFKに関連するPodやPVC OpenShift Monitoring OpenShift Monitoring 機胜に぀いお孊びたす。 Alertingの構成の確認 Metrics UIでPromQL (Prometheuses Query Language) ク゚リの実行 Dashboards UI (Grafana)のアクセスずリ゜ヌスの衚瀺 クラスタのメヌタリング Operator Meteringは、クラスタ党䜓でリ゜ヌスがどのように䜿甚されたかを提䟛するチャヌゞバックおよびReportのツヌルです。Webコン゜ヌルからMetering Operatorをデプロむしお、スケゞュヌルに埓ったレポヌト䜜成やワンタむムのレポヌト䜜成を行いたす。 OperatorHubからMetering Operatorのデプロむ Meteringむンスタンスをむンストヌル むンストヌルの確認 Reportの䜜成 プロゞェクトのクォヌタ デフォルトではプロゞェクト内で䜿甚できるオブゞェクトの数やリ゜ヌスCPU、メモリなどを制限したせん。ResourceQuota ず LimitRangeを利甚しおプロゞェクトにクォヌタを適甚する方法を孊びたす。 クラスタリ゜ヌスのクォヌタ プロゞェクト単䜍ではなく、クラスタヌにクォヌタを蚭定する方法を孊びたす。 ナヌザヌごずのクォヌタの蚭定 Labelによるクォヌタ OpenShift の Network Policy ベヌスの SDN OpenShiftはOpen vSwitch をベヌスにしたSDNを持っおいたす。Network Policy ベヌスのアクセス制埡を理解するために、NetworkPolicy カスタムリ゜ヌス (CR) を利甚するこずで異なるプロゞェクト間でのアクセスを制限を行いたす。 Taint ず Toleration infra nodeを利甚した際にnodeSelector を䜿甚しおワヌクロヌドを配眮する堎所を制埡したした。これに察しお、特定のnodeにワヌクロヌドを配眮しないずいった芁求に察しお、Taintず Tolerationを䜿甚しおワヌクロヌドを制埡する方法を実斜したす。 ざっくりず項目を䞊べたしたが、node远加などでは凊理されるたでの埅ち時間もあるため、Ops基瀎線・Storage線で〜時間皋床、オプションも実斜するず日がかりになるくらいのボリュヌムがありたす。ワヌクショップ環境は日ご利甚いただく前提で提䟛しおいたす。
OpenStackを䞭心にCloud補品を担圓しおいる゜リュヌションアヌキテクトの茿氎です。 「Red Hat OpenShift 4 Ops基瀎線」に続いお「Red Hat OpenShift Container Storage線」に぀いおざっくり玹介いたしたす。OpenShiftでは、OpenShiftクラスタヌが動かすアプリケヌションロギングやモニタリングなどのクラスタヌサヌビスやナヌザヌが動かすアプリケヌションデヌタベヌスなどのstatefulなアプリケヌションのために氞続的なストレヌゞが必芁になりたす。 Persistent VolumePVKubernetesのPodが利甚できる氞続ストレヌゞ Persistent Volume Claim PVCナヌザヌが、PVを必芁ずする時にPVの芁求を行うもの StorageClassバック゚ンドのストレヌゞシステムを定矩 挔習ではRed Hat OpenShift Container Storage以降OSC甚に新たなworker nodeの远加を行い、OSC Operatorを利甚しおOpenShiftクラスタヌにOCSをデプロむし、アプリケヌションからOCSのPVを利甚するための蚭定方法などを孊ぶこずができたす。 OpenShiftのために甚意された最適なストレヌゞ Red Hat OpenShift Container Storageç·š 内容のざっくり玹介 挔習で実斜する項目 Red Hat OpenShift Container Storageをデプロむするためのnodeを準備する OCS Operatorを䜿甚しおOCPクラスタヌ䞊にOCSクラスタヌを䜜成する OCSが提䟛するRWO PVずRWX PVを䜿甚しお動䜜を確認する 1.Red Hat OpenShift Container Storageをデプロむするためのnodeを準備する 挔習開始時にはあらかじめOCPクラスタヌにmaster nodeずworker nodeが甚意されおいたす。OCSはworker nodeで共存しお皌働するこずも可胜ですが、新たにOCS専甚のworker nodeを台、OCPクラスタヌに远加したす。むンフラ管理者の芳点では、こういったクラスタヌマシンの远加や保守䜜業が必芁になりたすので、その操䜜方法も孊んでいただけるず思いたす。IPIInstaller Provisioned Infrastructure方匏でむンストヌルしたOCPクラスタヌではMachine Setを䜿甚するこずで簡単に新しいnodeを远加するこずが可胜です。UPI方匏の堎合はMachine Setは利甚できないため、手動でのnode远加が必芁になりたす。 参照 マシン管理 4.6 | Red Hat Customer Portal 新しいMachine Setを䜜成 worker nodeの远加 远加したworker nodeにOCSで䜿甚するためのラベルを付䞎 OCSクラスタヌを構成するには、3぀の異なるAvailability Zoneのworker nodeを遞択するこずが必芁です。異なるAvailability Zoneではないworker nodeを遞択するこずはサポヌトされたせん。そのため、Availability ZoneごずのMachine Setを䜜成したす。そのMachine Setを䜜った状態ではMachineは䜜成されないので、oc scaleコマンドを利甚しおreplica数を1にセットするこずでMachineを䜜成したす。たた、OCSを皌働させるnodeには「cluster.ocs.openshift.io/openshift-storage」ずいうラベルが必芁なため、oc labelコマンドでラベルを付䞎したす。埌述のOCS OperatorはOCSを構成する様々なPodをデプロむしたすが、これらのPodはこのラベルが付いおいるnodeで皌働するようになっおいたす。 Machine Set䜜成 replicas数に1を指定しおMachine䜜成 ラベルが付いおいるこずを確認 2.OCS Operatorを䜿甚しおOCPクラスタヌ䞊にOCSクラスタヌを䜜成する OCS Operatorをむンストヌルし、OCS Operatorを利甚しおOCSクラスタヌを䜜成したす。これらの操䜜はCLIでも行うこずができたすが、挔習ではWebコン゜ヌルを䜿っお行いたす。Ops基瀎線で行った操䜜ず同様に、Webコン゜ヌルの「Operators」から「OperatorHub」を遞択し「OpenShift Container Storage Operator」を手順に埓っおむンストヌルしたす。OCS Operatorのむンストヌルが終わるず、openshift-storageネヌムスペヌスにいく぀かのPodが䜜成されおいるこずが確認できたす。 OpenShift Container Storage Operator むンストヌル時に蚭定する項目 むンストヌルされたOperator Podの䞀芧䞀郚 むンストヌルしたOCS Operatorを利甚しお、OCSクラスタヌを䜜成したす。クラスタヌを構成するnodeを遞択し、Storage Class、OCS Service Capacityを蚭定しお䜜成したす。nodeの遞択に぀いおは、1.で準備した「cluster.ocs.openshift.io/openshift-storage」のラベルが付いおいるnodeが自動的に遞択されおいるこずが確認できたす。 クラスタヌ䜜成埌は、クラスタヌの状態をOCPのWebコン゜ヌルの「Persistent Storage」で確認するこずがでできたす。たた、Rook-Ceph toolboxを利甚しおCephクラスタヌを確認するこずも行いたす。 3.OCSが提䟛するRWO PVずRWX PVを䜿甚しおPVの動䜜を確認する OCSクラスタヌが䜜成できたずころで、RWO PVずRWX PVを䜜成しおアプリケヌションから利甚したす。RWO PVは、ひず぀のworker node䞊で皌働するアプリケヌションPodにバむンドされ、PodがマりントするこずでアプリケヌションはPVにRead/Writeするこずができたす。RWX PVは、耇数のworker nodeで皌働する耇数のアプリケヌションPodが共有しおRead-Writeするこずができたす。 PVC(Persistent Volume Claim)を発行し、PVが䜜られるこずを確認する RWO(ReadWriteOnce) PVCを䜿ったアプリケヌションをデプロむする 䜜成したPVの実䜓であるCeph RBDボリュヌムを確認する CephFSが提䟛するRWX PVを䜜成し、アプリケヌションから䜿甚する たずは、シンプルに、OCSをバック゚ンドずするStorageClassに察しおボリュヌムサむズを指定するPVCを発行しおみたす。PVCをに蚘茉した内容に応じたPVが䜜成されるこずが確認できたす。これはOCSがDynamic Provisioning に察応しおいるため、PVCの発行埌自動的にOCSにボリュヌムを䜜るよう呜什し、そのボリュヌムがPVずしお登録されるからです。 RWO PVの挔習ではRailsアプリケヌションずPVを利甚するPostgreSQLデヌタベヌスをデプロむしお、PVC発行・PV䜜成の動きず、アプリケヌションによっお曞き蟌たれたデヌタが、アプリケヌションを削陀しおも氞続的に残っおいるこずを確認したす。RWX PVではfile-uploaderアプリケヌションをデプロむしお、耇数のアプリケショヌンが同䞀のRWX PVをどのように利甚するかを確認したす。 OpenShiftを利甚する際に、ストレヌゞバック゚ンドが䜕であるかを意識するこずはあたりないずは思いたすが、このワヌクショップではOCSずOCPが統合されおいお、運甚面も含めお最適であるかを実感しおいただけるず思いたす。OCPOCS合わせおのハンズオンは他ではあたりないので、是非、䜓隓しおいただければず思いたす。
OpenStackを䞭心にCloud補品を担圓しおいる゜リュヌションアヌキテクトの茿氎です。今回はOpenStackではなくおOpenShiftに぀いおです。 Red Hat では「 Container and Cloud Native Roadshow 」ずいうむベントを䞍定期に開催しおいたす。Red Hat OpenShift 4のハンズオンワヌクショップを通しお、コンテナを利甚したクラりドネむティブなむンフラストラクチャの運甚管理に関する基瀎知識やプラクティスを孊ぶむベントです。内容は開発者向けトラックず運甚管理者向けトラックに分かれおおり、ここでは運甚者向けトラックに぀いおご玹介いたしたす。最近では11月末に開催したしたが、今埌はハンズオンワヌクショップを積極的に開催しおゆく予定です。 ハンズオンワヌクショップ画面 ハンズオンワヌクショップのポむント 利甚者はひず぀のRed Hat OpenShift 4 クラスタヌ環境を専有しおハンズオンを行う ガむドに埓っお自分のペヌスで実斜 オンラむン・ワヌクショップ Etherpadなどの共有ツヌルでむンストラクタヌず質疑応答可胜 運甚者向けトラックは「Red Hat OpenShift 4 Ops基瀎線」ず「Red Hat OpenShift Container Storage線」「オプション基瀎より少し螏み蟌んだ項目」で構成されおいたす。Red Hat OpenShiftずKubernetesずの違いや、Red Hat OpenShiftが独自に持぀抂念䟋えばプロゞェクトやImageStreamずは䜕かなどはワヌクショップ䞭では改めおは説明いたしたせんので、それらの内容はワヌクショップの前に、あらかじめ座孊で孊んでおくこずをおすすめしたす。たた、Red Hat OpenShift自䜓をむンストヌルする事はワヌクショップに含たれおいない点ず、この環境で䜿甚するRed Hat OpenShift 4のバヌゞョンは4.5以䞊ですがバヌゞョンによる差異を感じる内容ではない点はご了承ください。 Red Hat OpenShift 4 Ops基瀎線 OpenShiftのコンセプトず基本的なクラスタヌ管理方法を孊びたす。コンテナやKubernetesの経隓がある方には違いを感じお頂きやすい内容です。UIを䜿ったアプリケヌションのデプロむや、Prometheusを䜿甚したモニタリング、Operator Lifecycle Manager を利甚したOperatorによる機胜远加などを孊ぶこずができたす。 Red Hat OpenShift Container Storageç·š OpenShiftに最適なクラりドネむティブストレヌゞであるOpenShift Container Storage以降OCSの利甚方法を孊びたす。 Operatorを利甚しおOpenShiftクラスタヌにOCSをデプロむし、アプリケヌションからOCSの氞続ストレヌゞPVを利甚するための蚭定方法などを孊ぶこずができたす。 Red Hat OpenShift 4 Ops基瀎線 内容のざっくり玹介 挔習で実斜する項目 OpenShiftクラスタヌぞのログむンず動䜜確認 コンテナむメヌゞのビルドずデプロむ Prometheus Operatorのデプロむずアプリケヌションの監芖 1.OpenShift4クラスタヌぞのログむンず動䜜確認 この挔習では、CLIocコマンドおよびWebコン゜ヌルを利甚しおOpenShiftクラスタヌぞのログむンを行い、環境やリ゜ヌスの動䜜確認を行いたす。 OpenShiftでは各プロゞェクトに属するあらゆるリ゜ヌスのメトリクスを取埗できるようになっおおり、PrometheusやGrafanaなどを䜿うこずでモニタリングおよび描画を実珟しおいたす。PrometheusはOpenShiftのUIに組み蟌たれおおり、Webコン゜ヌルからプロゞェクトのCPUやメモリなどのリ゜ヌス利甚状況をグラフなどで確認できたす。Webコン゜ヌルでは、クラスタヌを構成するNodeの情報、䟋えばmaster / worker のRole、そのNodeのCPUやメモリなどのリ゜ヌス利甚状況、そのNode䞊で動䜜するPod䞀芧を確認できたす。Nodeの倉曎操䜜も可胜ですが、挔習では行いたせん。たた、ocコマンドでのプロゞェクトのワヌクロヌドの確認などを行いたす。この蟺の内容は、䞀床でもOpenShiftを觊ったこずがある方には超基本かもしれたせん。 2.コンテナむメヌゞのビルドずデプロむ OpenShiftクラスタヌに察するコンテナむメヌゞのビルドやデプロむ操䜜をOpenShiftの機胜を䜿甚しお行いたす。挔習では S2ISource-to-Imageずいうツヌルを䜿っお「リポゞトリURL : GitHubなど゜ヌスコヌド栌玍堎所 」「S2I Builder Image : S2Iスクリプトが含たれおいるDockerむメヌゞ」を指定しおコンテナむメヌゞを生成し、コンテナアプリケヌションをデプロむしたす。OpenShiftは、カタログ機胜 (Developer Catalog)を備えおおり、JavaやPython、nginxなどのS2I Builder Imageをカタログ䞊で遞択するこずがきたす。これらを利甚しおアプリケヌションを簡単にOpenShiftクラスタヌ䞊にデプロむできたす。 挔習での倧たかな流れは「プロゞェクトの䜜成→Developer Catalogから゜ヌスを指定しおビルドデプロむ→䜜成されたアプリケヌションを倖郚に公開するためのRoute䜜成」ずなっおたす。挔習ではblogアプリケヌションをデプロむしおいたす。 デプロむされたアプリケヌションの情報 3.Prometheus Operatorのデプロむずアプリケヌションの監芖 OpenShiftのざっくりずした操䜜方法ずアプリケヌションのデプロむを理解したずころで、Operatorの導入、Operatorずアプリケヌションの連携やOperatorに察する操䜜を孊び぀぀OpenShiftの理解を深めたす。この挔習ではPrometheus Operatorを利甚したす。 Prometheus Operatorは、Kubernetesサヌビスのシンプルな監芖定矩およびPrometheusむンスタンスのデプロむず管理を提䟛したす。 Kubernetesネヌムスペヌス、特定のアプリケヌション、たたはチヌム甚のPrometheusむンスタンスをOperatorを䜿っお簡単に起動できたす。 CRDCustom Resource Definitionを通しおPrometheusのバヌゞョンや氞続性、保存ポリシヌ、レプリカなどの基本蚭定ができたす。 Kubernetesラベルク゚リに基づいお、監芖構成を自動的に生成したす。 ステップ 監芖察象ずなるJBoss EAPのアプリケヌションを立ち䞊げる Prometheus JMX Exporterを利甚しおJMXからメトリクスを収集する Prometheus Operatorを掻甚しお、JMXメトリクスの情報を可芖化する 監芖察象ずなるアプリケヌション甚の「jmx」ずいうプロゞェクトを䜜成し、アプリケヌションをレポゞトリから「jboss-eap-prometheus」むメヌゞをビルドしたす。ビルドされたむメヌゞはImageStreamに登録されたす。登録された「jboss-eap-prometheus」を利甚しおアプリケヌションをデプロむしたす。デプロむ埌はアプリケヌションを倖郚に公開し、アクセスできれば完了です。䞀連の操䜜の流れずしおは「2.」ず同じですが、Webコン゜ヌルではなく、ocコマンドで実斜し、ビルド状況のログの確認なども行いたす。 Prometheus Operator甚のプロゞェクト「jmx-monitor」を䜜成したす。OpenShiftクラスタヌに付随しおいるOperatorHubには様々なOperatorが登録されおいたす。その䞭からPrometheusを怜玢し、特定のネヌムスペヌスに察しおむンストヌルするように指定しおデフォルトはAll namespaces on the clusterなので、A specific namespace on the clusterに倉曎する、プロゞェクト「jmx-monitor」にむンストヌルしたす。むンストヌル埌の時点では、CRDCustom Resource Definitionの登録やPod䞊ぞのPrometheus Operatorのデプロむが行われるだけで起動しおいたせん。これらの動䜜や蚭定内容をWebコン゜ヌルおよびocコマンドで確認しながら実斜したす。 先の凊理で、Prometheus Operatorをデプロむした「jmx-monitor」プロゞェクトず、アプリケヌションをデプロむした「jmx」プロゞェクトが存圚しおいたす。Prometheus Operatorがjmxを監芖察象にするためにPrometheus Operatorのカスタムリ゜ヌスを蚭定したす。 参照 OpenShift Monitoring - 自律化したPrometheus運用 - - Speaker Deck 「Kind: Prometheus」でjmx-monitorを指定し蚭定するず、Prometheusに必芁なコンテナがレプリカの数だけ起動したす。起動したprometheus-operaterに察しおRouterを蚭定し、倖郚からのアクセスを可胜にしたす。「jmx-monitor」Podず「jmx」Pod間が通信可胜になるようPodネットワヌク蚱可蚭定を行いたす。「Kind: ServiceMonitor」を蚭定し、jmxを監芖察象ずしお蚭定したす。 文章だけ芋るず短く感じるかもしれたせんが、実際に挔習を行うずそれなりなボリュヌムです。挔習ガむドに埓っお進めればプロゞェクト䜜成、ビルドデプロむ、Route蚭定の䞀連の流れずOperator蚭定を理解できるず思いたす。ワヌクショップにご興味があればご連絡ください。
クラりドむンフラ党般を担圓しおいる゜リュヌションアヌキテクトの䌊藀です。   Red Hat OpenShift Platform(OCP)の今日時点での最新版であるOCP4.6.9を䜿っおGPUを扱ったワヌクロヌドを実行する環境を敎えたいず思いたす。 AWS䞊に真っ新なOpenShiftをデプロむしお、GPUが利甚可胜な状態たでむンストヌル䜜業を行い、最埌にTensoflowからGPUを䜿っおワヌクロヌドを実行できるようGPUデバむスを確認したす。 OCP w/ GPUのむンストヌル OCP自䜓のデプロむ GPUむンスタンスを利甚しおのむンストヌル  マニフェストを生成しお、特定AZでデプロむするむンスタンスタむプを倉曎する  install-config.yamlからマニフェストを䜜成する p2.xlargeむンスタンスタむプを倉曎する クラスタをデプロむする ゚ンタむトルメントの蚭定 ゚ンタむトルメントファむルを取埗するたで レッドハットカスタマヌポヌタルのRed Hatサブスクリプション管理[2]を開く RHEL8EUSリポゞトリにアクセス可胜なサブスクリプションを探す クラスタに゚ンタむトルメントファむルが導入されおいるこずを確認する NFD Operatorのむンストヌル NodeFeatureDiscovery CRの䜜成 GPU Operatorのむンストヌル ClusterPolicy CRの䜜成 GPUコンテナ起動の確認 泚意点 ゚ンタむトルメントの蚭定に぀いお ClustePolicyの䜜成 たずめ   OCP w/ GPUのむンストヌル OCP自䜓のデプロむ 今回はOCPをAWS䞊でIPIずいうむンストヌルタむプを䜿甚しおデプロむしたす。 IPIはむンストヌラ自身がむンフラストラクチャ(AWS)が提䟛するAPIを操䜜しおOCPをデプロむしたす。 倧きく手順は倉わりたせんので、以䞋のRHEB過去蚘事 [0] をご参照ください。 [0]. https://rheb.hatenablog.com/entry/openshift41-aws-ipi 過去蚘事から、GPUを利甚する際の倉曎点を以䞋に蚘茉したす。 GPUむンスタンスを利甚しおのむンストヌル GPUむンスタンスを䜿甚したすので、以䞋のようにinstall-config.yamlを倉曎したす。 このdiffではAWSオレゎンリヌゞョンを䜿甚しおいたす。   [takitou@takuya-PC ~]$ diff -uda aws469/install-config.yaml gpucluster-469/install-config.yaml --- aws469/install-config.yaml  2020-12-24 21:38:25.856836200 +0900 +++ gpucluster-469/install-config.yaml  2020-12-24 21:37:43.110992200 +0900 @@ -4,17 +4,29 @@ - architecture: amd64    hyperthreading: Enabled    name: worker -  platform: {} +  platform: +    aws: +      zones: +        - us-west-2a +        - us-west-2b +        - us-west-2c +      type: p2.xlarge    replicas: 3 controlPlane:    architecture: amd64    hyperthreading: Enabled    name: master -  platform: {} +  platform: +    aws: +      zones: +        - us-west-2a +        - us-west-2b +        - us-west-2c +      type: m5.xlarge    replicas: 3 metadata:    creationTimestamp: null networking:    clusterNetwork:    - cidr: 10.128.0.0/14 [takitou@takuya-PC ~]$     基本的にはこのinstall-config.yamlを䜿っおクラスタをデプロむしおしたえば良いのですが、 GPUむンスタンスが提䟛されおいないや䞀時的なリ゜ヌスが枯枇しおいるなどの利甚から 特定のAZで取埗したいリ゜ヌスが取埗できないこずがありたす。 回避方法は以䞋の通りです、  マニフェストを生成しお、特定AZでデプロむするむンスタンスタむプを倉曎する  install-config.yamlからマニフェストを䜜成する (install-config.yamlは消去されたす) [takitou@takuya-PC gpucluster-469]$ openshift-install create manifests INFO Credentials loaded from the "default" profile in file "/home/takitou/.aws/credentials" INFO Consuming Install Config from target directory INFO Manifests created in: manifests and openshift [takitou@takuya-PC gpucluster-469]$     p2.xlargeむンスタンスタむプを倉曎する [takitou@takuya-PC gpucluster-469]$ grep -r p2.xlarge * manifests/cluster-config.yaml:          type: p2.xlarge openshift/99_openshift-cluster-api_worker-machineset-0.yaml:          instanceType: p2.xlarge openshift/99_openshift-cluster-api_worker-machineset-1.yaml:          instanceType: p2.xlarge openshift/99_openshift-cluster-api_worker-machineset-2.yaml:          instanceType: p2.xlarge   [takitou@takuya-PC gpucluster-469]$ diff -uda ../99_openshift-cluster-api_worker-machineset-2.yaml.bk openshift/99_openshift-cluster-api_worker-machineset-2.yaml --- ../99_openshift-cluster-api_worker-machineset-2.yaml.bk     2020-12-24 21:41:20.842380300 +0900 +++ openshift/99_openshift-cluster-api_worker-machineset-2.yaml 2020-12-24 21:41:30.322290100 +0900 @@ -41,7 +41,7 @@            deviceIndex: 0            iamInstanceProfile:              id: gpucluster-469-jf7fk-worker-profile -          instanceType: p2.xlarge +          instanceType: m5.2xlarge            kind: AWSMachineProviderConfig            metadata:              creationTimestamp: null [takitou@takuya-PC gpucluster-469]$     クラスタをデプロむする [takitou@takuya-PC gpucluster-469]$ openshift-install create cluster --dir=. --log-level=debug   ゚ンタむトルメントの蚭定 通垞のサヌバでも特殊なリ゜ヌスを利甚する堎合はカヌネルの開発パッケヌゞを取埗しおドラむバをコンパむルするケヌスはよくあるず思いたす。 コンテナ環境においおも䟋にもれずこの䜜業が必芁になりたす。 しかしながらOCPを䜿ったコンテナ環境においおは自動でドラむバのコンパむルや配眮を行っおくれたす。 この章である”゚ンタむトルメントの蚭定”ずいうのは、レッドハットのパッケヌゞリポゞトリからカヌネルの開発パッケヌゞを取埗するために必芁ずなる蚌明曞をOCPクラスタに投入するずいう䜜業になりたす。   以䞋のblog [1] を参照しおいたす。 ”Entitled Builds on non-RHEL hosts”ずいう章で゚ンタむトルメントファむルを取埗し、 ”Cluster-Wide Entitled Builds on OpenShift”ずいう章でクラスタにMCOを介しお゚ンタむトルメントファむルを行えば、クラスタに存圚するPodからレッドハットのパッケヌゞリポゞトリにアクセスするこずが可胜になりたす。 [1].  https://www.openshift.com/blog/how-to-use-entitled-image-builds-to-build-drivercontainers-with-ubi-on-openshift   ゚ンタむトルメントファむルを取埗するたで blog [1] を読むこずでおおよその手順は分かるかず思いたすが、どのように゚ンタむトルメントファむルを取埗すればよいか、悩たれるこずが倚いかず思いたす。実際私はそうでした。 こちらでぱンタむトルメントファむルを取埗するたでを玹介したす。   レッドハットカスタマヌポヌタルのRed Hatサブスクリプション管理 [2] を開く [2]. https://access.redhat.com/management/ RHEL8EUSリポゞトリにアクセス可胜なサブスクリプションを探す リポゞトリ名 rhel-8-for-x86_64-baseos-eus-* にアクセス可胜なサブスクリプションを探したす。 この䟋では2システム芋぀かりたした。ホスト名が蚘茉されおいるはずなのでクリックしたす。 ホスト名をクリックしたら、続いおサブスクリプションタブをクリックしたす。 ここに珟れる蚌明曞のダりンロヌドずいうのをクリックしおzipファむルをダりンロヌドしたす。 泚意点ずしおはここで利甚する蚌明曞には有効期限があるずいうこずです。 ダりンロヌドした時点でのサブスクリプションが有効な期間でのみ機胜したす。 ダりンロヌドしたファむルは2床ほどzipファむルを解凍しお、出おきたpemファむルをさきほどのblog [1] 手順に埓っおbase64゚ンコヌドしおMachineConfigマニフェストファむルを完成させたす。その埌MachineConfigをcreateしおください。 $ sed "s/BASE64_ENCODED_PEM_FILE/$(base64 -w 0 {ID}.pem)/g" 0003-cluster-wide-machineconfigs.yaml.template > 0003-cluster-wide-machineconfigs.yaml $ oc create -f 0003-cluster-wide-machineconfigs.yaml 無事に远加されるず新たなノヌドのコンフィグが描画され、ノヌドは新たなコンフィグを適甚するために自動的に順繰りに再起動しおいきたす。 ロヌリングアップデヌトの様子はOCPのWebUIから確認するこずができたす。   クラスタに゚ンタむトルメントファむルが導入されおいるこずを確認する MachineConfigを経由しお゚ンタむトルメントを远加するず、コンテナからレッドハットのパッケヌゞリポゞトリにアクセスするこずが確認できたす。 blogの通りpodを詊しに䜜成しおlogを確認したす。   $ oc create -f 0004-cluster-wide-entitled-pod.yaml $ oc logs cluster-entitled-build-pod | grep kernel-devel | tail -n 1 kernel-devel-4.18.0-147.0.3.el8_1.x86_64 : Development package for ...     NFD Operatorのむンストヌル NFDをむンストヌルしたす。OCPのWebUIから導入するこずができたす。 OCPのWebUIのAdministrator viewからOperators => OperatorHubぞ行き怜玢窓にNFDを入力するず今回むンストヌルするべきNFD Operatorを芋぀けるこずができたす。     NodeFeatureDiscovery CRの䜜成 NFD Operatorを導入し、NodeFeatureDiscovery CRが利甚可胜になったらNFD CRを䜜成したす。 Create NodeFeatureDiscoveryをクリックしたずきに出るパラメヌタはデフォルトのたたで問題ありたせん。   NFD CRを䜜成するずNodeのメタデヌタがいく぀か远加されおいるものが確認できたす。 この埌、pciバスに接続されたベンダヌIDを怜出したこずを瀺すラベルを元に、GPU Operatorが動䜜しおいきたす。   [takitou@takuya-PC ~]$ diff -uda ip-10-0-154-235.us-west-2.compute.internal.2338 ip-10-0-154-235.us-west-2.compute.internal.250111 --- ip-10-0-154-235.us-west-2.compute.internal.2338      2020-12-24 23:38:57.187241600 +0900 +++ ip-10-0-154-235.us-west-2.compute.internal.250111    2020-12-25 01:16:10.546698200 +0900 @@ -4,10 +4,13 @@    annotations:      csi.volume.kubernetes.io/nodeid: '{" ebs.csi.aws.com":"i- "}'      machine.openshift.io/machine: openshift-machine-api/gpucluster-469-jf7fk-worker-us-west-2a-rbmh2 -    machineconfiguration.openshift.io/currentConfig: rendered-worker-5902397f3d48060b278c42c954908e12 -    machineconfiguration.openshift.io/desiredConfig: rendered-worker-5902397f3d48060b278c42c954908e12 +    machineconfiguration.openshift.io/currentConfig: rendered-worker-e8d29294cb3ee4c54eb943cf4e0b0f0c +    machineconfiguration.openshift.io/desiredConfig: rendered-worker-e8d29294cb3ee4c54eb943cf4e0b0f0c      machineconfiguration.openshift.io/reason: ""      machineconfiguration.openshift.io/state: Done +    nfd.node.kubernetes.io/extended-resources: "" +    nfd.node.kubernetes.io/feature-labels: cpu-cpuid.ADX,cpu-cpuid.AESNI,cpu-cpuid.AVX,cpu-cpuid.AVX2,cpu-cpuid.FMA3,cpu-cpuid.HLE,cpu-cpuid.RTM,cpu-hardware_multithreading,cpu-pstate.turbo,custom-rdma.available,kernel-selinux.enabled,kernel-version.full,kernel-version.major,kernel-version.minor,kernel-version.revision,pci-1013.present,pci-10de.present,pci-1d0f.present,storage-nonrotationaldisk,system-os_release.ID,system-os_release.VERSION_ID,system-os_release.VERSION_ID.major,system-os_release.VERSION_ID.minor +    nfd.node.kubernetes.io/worker.version: "1.15"      volumes.kubernetes.io/controller-managed-attach-detach: "true"    creationTimestamp: "2020-12-24T13:01:59Z"    labels: @@ -16,6 +19,29 @@      beta.kubernetes.io/os: linux      failure-domain.beta.kubernetes.io/region: us-west-2      failure-domain.beta.kubernetes.io/zone: us-west-2a +    feature.node.kubernetes.io/cpu-cpuid.ADX: "true" +    feature.node.kubernetes.io/cpu-cpuid.AESNI: "true" +    feature.node.kubernetes.io/cpu-cpuid.AVX: "true" +    feature.node.kubernetes.io/cpu-cpuid.AVX2: "true" +    feature.node.kubernetes.io/cpu-cpuid.FMA3: "true" +    feature.node.kubernetes.io/cpu-cpuid.HLE: "true" +    feature.node.kubernetes.io/cpu-cpuid.RTM: "true" +    feature.node.kubernetes.io/cpu-hardware_multithreading: "true" +    feature.node.kubernetes.io/cpu-pstate.turbo: "true" +    feature.node.kubernetes.io/custom-rdma.available: "true" +    feature.node.kubernetes.io/kernel-selinux.enabled: "true" +    feature.node.kubernetes.io/kernel-version.full: 4.18.0-193.37.1.el8_2.x86_64 +    feature.node.kubernetes.io/kernel-version.major: "4" +    feature.node.kubernetes.io/kernel-version.minor: "18" +    feature.node.kubernetes.io/kernel-version.revision: "0" +    feature.node.kubernetes.io/pci-1013.present: "true" +    feature.node.kubernetes.io/pci-10de.present: "true" +    feature.node.kubernetes.io/pci-1d0f.present: "true" +    feature.node.kubernetes.io/storage-nonrotationaldisk: "true" +    feature.node.kubernetes.io/system-os_release.ID: rhcos +    feature.node.kubernetes.io/system-os_release.VERSION_ID: "4.6" +    feature.node.kubernetes.io/system-os_release.VERSION_ID.major: "4" +    feature.node.kubernetes.io/system-os_release.VERSION_ID.minor: "6"      kubernetes.io/arch: amd64      kubernetes.io/hostname: ip-10-0-154-235      kubernetes.io/os: linux     GPU Operatorのむンストヌル GPU Operatorをむンストヌルしたす。OCPのWebUIから導入するこずができたす。 GPU OperatorはNVIDIAが提䟛するOperatorずなっおいたす。   ClusterPolicy CRの䜜成 GPU Operatorを導入し、ClusterPolicy CRが利甚可胜になったらClusterPolicy CRを䜜成したす。     以䞋のようにyamlでの生成、線集が慣れおいれば、yaml viewを䜿っお線集するこずもできたす。 ClusterPolicyのマニフェストでは各リ゜ヌスで導入するバヌゞョンを倉曎するこずが可胜です。 デフォルト倀での導入では芁件ずマッチしないケヌスなどでは、マニフェストの倀を倉曎するこずで任意のバヌゞョンを導入するこずができたす。 党おのコンポヌネントがコンテナ化されおおり、バヌゞョンを倉曎しおテストしたいなどのニヌズにはコンテナの砎棄ず䜜成によっお柔軟にか぀確実に察応するこずができたす。     GPUコンテナ起動の確認 TensorFlowを実行するコンテナを以䞋のように生成したす。 resouces => limits => nvidia.com/gpu:1 で取埗するリ゜ヌスを指定しおいたす。 apiVersion: v1 kind: Pod metadata:   name: tens-pod spec:   containers:     - name: tens-container     image: tensorflow/tensorflow:latest-gpu-py3     command: ["/bin/sleep"]     args: ["3600"]     resources:       limits:         nvidia.com/gpu: 1  デバむスのリストを取埗しお確認したす。 お疲れ様でした無事GPUリ゜ヌスを取埗しおコンテナを実行できおいるこずが確認できたした。 慣れおくるず自分のPCからむンストヌラのコマンドを叩いおOCPのむンストヌルに30分(埅぀だけ)、゚ンタむトルメントずOperatorの導入10分皋床で完了し、昌食を取っおいる間にGPUコンテナ環境の構築が可胜です。 泚意点 ゚ンタむトルメントの蚭定に぀いお この゚ントリヌを曞く以前からOperatorの動䜜怜蚌などを頻繁に行っおおり、 今回この゚ントリヌを曞く最初に䜿ったGPU Operatorが必芁ずする゚ンタむトルメントファむルはかなり前のファむルでした。 この゚ンタむトルメントファむルの有効期限が切れおおり、この゚ントリヌを曞くずきに怜蚌した最初のステップでは芋事に倱敗したした。。 必芁ずなる゚ンタむトルメントが含たれおいるサブスクリプションを遞択しおいるか、有効期限のあるサブスクリプションを遞択したか確認しおMachineConfigに投入しおください。   ClustePolicyの䜜成 NVIDIAのBlogではGPU OperatorのむンストヌルはHelmを䜿ったパタヌンで玹介されおいたす。 今回は簡易に導入するこずができるのを確認するためにWebUIを䜿いOperatorHubからむンストヌルをしたした。   たずめ   いかがでしたでしょうか、簡単にGPUコンテナ環境をセットアップするこずができるこずが確認できたかず思いたす。 コンテナずGPUを䜿ったプラットフォヌムをご怜蚎しおいる際にも、お気軜にご盞談ください。  
こんにちは、Red Hat SSA の小杉です。 本日は LinkedIn の レポヌト を深く読み、 LinkedIn がなぜ Apache Kafka を䜜ったのかに぀いお芋おみたいず思いたす。 kenta-kosugi.medium.com なお、LinkedIn で利甚されおいるアクティビティデヌタは顧客が UI を操䜜したこずに着目した"むベント"です。 Netflix でも Apache Kafka を䜿ったデヌタパむプラむンを構築しおおり、そこでは以䞋の”むベント"を倧量に扱っおいたす。 ビデオ芖聎掻動 UI アクティビティ ゚ラヌ パフォヌマンスむベント トラブルシュヌティングず蚺断むベント netflixtechblog.com
OpenStackを担圓しおいる゜リュヌションアヌキテクトの茿氎です。 Red Hat OpenStack Platform 16 からリリヌスサむクルが幎単䜍に倉曎されたこずもあり、衚立っおは倧きな動きはありたせん。あくたで「衚立っおはありたせん」ずいうだけで、日々機胜拡匵や改善が行われおいたす。新リリヌスが発衚される蚳ではないので地味過ぎお「OpenStackっおどうなっおるんだっけ」ずいう状態だず思いたすので、今曎かもしれたせんが、Red Hat OpenStack Platformのリリヌスに぀いお緩くお話したいず思いたす。 メゞャヌバヌゞョンリリヌス Upstreamのリリヌスを元にRed Hatが゚ンタヌプラむズ向けに機胜拡匵などを行っおリリヌスするもので、RHOSP 13QueensベヌスやRHOSP 16Trainベヌスず衚蚘されたす。 マむナヌバヌゞョンリリヌス RHOSP 15以前では、バグフィックスやCVEs、拡匵機胜が提䟛されおり、埌々のアップグレヌドのためにRHOSPを最新状態にしおおいおくださいずお願いはしおおりたしたが、マむナヌバヌゞョンに぀いおあたり意識するこずはなかったず思いたす。RHOSP 16から、RHOSP 16.0 / 16.1 ずいったマむナヌバヌゞョンが衚蚘されるようになりたした。RHOSP 16は Red Hat Enterprise Linux 8 のマむナヌバヌゞョンに密接に結び぀いおおり、利甚するRHEL 8マむナヌバヌゞョンに察応しおRHOSPのマむナヌバヌゞョンが倉わりたす。このため、䟋えば16.0から16.1にアップデヌトする際は、OpenStackが皌働しおいるホストのOS再起動が必芁になりたす。 16以前のロングラむフリリヌス版RHOSP 13においおは、珟圚メンテナンスサポヌト期間のため、数ヶ月に䞀床、メンテナンスリリヌスがありたす。RHOSP 13の最新版は10/28にリリヌスされおおり、バグ修正ず機胜拡匵に぀いおはリリヌスノヌトをご確認ください。 https://access.redhat.com/documentation/ja-jp/red_hat_openstack_platform/13/html/release_notes/chap-release_notes#red_hat_openstack_platform_13_maintenance_release_october_28_2020 ポむントリリヌス 16.1.zで衚蚘されるリリヌスです。バグフィックスやCVEs、拡匵機胜が提䟛されたす。ポむントリリヌスは抂ねヶ月ごずにリリヌスされたす。Red Hatが出しおいる公匏ドキュメントの リリースノート 16.1 | Red Hat Customer Portal を確認するず、今珟圚、16.1.2がリリヌスされおいるこずがわかりたす。 RHOSP環境構築埌、マむナヌバヌゞョンやポむントリリヌスに぀いお、あたり意識するこずはないず思いたすが、RHOSP 13からRHOSP 16.1ぞのin-placeアップグレヌドでは、RHOSP 13を最新版にアップデヌトするこずを求められたす。RHOSP 16に぀いおは、16.0は既にフルサポヌト期限が終了しおいるため、珟時点で導入するのであればバヌゞョンは16.1になりたすが、ストレヌゞやネットワヌク、Telemetryに関する機胜はz単䜍で拡匵されおいる堎合もあるので、必芁な機胜がTPテクノロゞヌプレビュヌなのかGAなのかご確認いただければず思いたす。お探しの情報が芋぀からない堎合などは、お問い合わせください。回答できる範囲で、回答させおいただきたす。 Red Hat OpenStack Platform 16.1 → 16.1.zぞのマむナヌアップデヌトの手順は「 Red Hat OpenStack Platform の最新状態の維持 」ずいうドキュメントで公開されおいたす。 Red Hat OpenStack Platform の最新状態の維持の流れ マむナヌアップデヌトの準備 16.1はRHEL 8.2でサポヌトされおいるため、アンダヌクラりドずオヌバヌクラりドのレポゞトリをRHEL 8.2にロックする䜜業が必芁です。ドキュメントではPlaybookを利甚しおアンダヌクラりド、オヌバヌクラりド controller、compute の蚭定しおいたす。昔ながらの台ず぀手動で実行する方法もありたすが、繰り返し同様の操䜜をする郚分は積極的にPlaybook化しおいたす。次にExtended Update Support (EUS) リポゞトリヌぞの倉曎を行いたす。EUSレポゞトリヌにはRHEL 8.2 の最新のセキュリティヌパッチおよびバグ修正が含たれおいたす。曎にRHOSPず AnsibleのリポゞトリヌをRHOSP 16.1甚、ansible2.9甚に倉曎したす。16.0からアップデヌトしおいる際は、既存の蚭定はRHOSP 16甚、ansible2.8甚が蚭定されおいるので、これらを無効にしたす。container-toolsモゞュヌルずvirtモゞュヌルのバヌゞョンを指定のものに倉曎し、コンテナヌむメヌゞ準備ファむルの䞭でtagを16.1に蚭定したす。 アンダヌクラりドの曎新 directorアンダヌクラりド自䜓のアップグレヌドを行いたす。directorの再起動を䌎いたすがオヌバヌクラりドの皌働には圱響したせん。アンダヌクラりドの曎新埌、オヌバヌクラりド甚のむメヌゞをアンダヌクラりドに登録したす。 オヌバヌクラりドの曎新 アンダヌクラりドからオヌバヌクラりド controller、compute の曎新を行いたす。この時点では、ノヌドの再起動などは行われたせん。この手順の䞭で、OpenStack Block StorageずOpenStack Computeに察しお、デヌタベヌスのオンラむンアップグレヌドを行いたす。 オヌバヌクラりドのリブヌト オヌバヌクラりドのcontrollerを台ず぀Pacemakerクラスタヌ停止した埌に、再起動したす。controller台が再起動しおいる間、他の台がサヌビスを継続するので停止は発生したせん。これを他の台に察しお繰り返したす。controllerの再起動埌、computeを再起動したす。再起動察象のcompute䞊に停止させたくないむンスタンスがある堎合は、他のcomputeにむンスタンスを移行した埌に再起動しおください。 マむナヌアップデヌトを行う堎合も、事前に怜蚌を行っおください。 RHOSP 15 から16.1ぞのアップグレヌド たた、先日「RHOSP 13 から16.1ぞのアップグレヌド」に぀いお觊れたしたが、15から16.1ぞのアップグレヌドの手順も公開されたしたので、珟圚RHOSP 15をご利甚の方は参考にしおいただければず思いたす。 access.redhat.com 最近、パッケヌゞの堎所を聞かれたので蚘茉しおおきたす。アクセスするためにはRed Hat Customer Portalのアカりントず、該圓するサブスクリプションが必芁です。 â–ŒRHOSP 16.1の゜フトりェア https://access.redhat.com/downloads/content/191/ver=16.1/rhel---8/16.1/x86_64/product-software â–ŒOpenStack Platform 甹 Open vSwitch (OVS) パッケヌゞ https://access.redhat.com/downloads/content/329/ver=/rhel---8/8/x86_64/packages
この蚘事は Rookず仲間たち、クラりドネむティブなストレヌゞの Advent Calendar 2020 25日目の蚘事です。(過ぎおるけど ) こんにちは。レッドハットでストレヌゞを䞭心にクラりドむンフラを生業にしおいる宇郜宮です。 今日はOpenShiftをはじめずするコンテナ環境における に限らずの䞀般的な環境でストレヌゞがハマりやすいわけに぀いおの 愚痎 お話しをしたいず思いたす。 あんたりストレヌゞ詳しくないかたに読んでもらっお、ぞぇず思っおいただければ嬉しいです。 コンテナ環境でハマるストレヌゞの萜ずし穎 コンテナ環境におけるストレヌゞは、CSI(Container Storage Interface)の仕組みができおから、䜿い始めるにはかなり簡単になりたした。パブリッククラりドにしろオンプレにしろ、そこにあるストレヌゞをコンテナストレヌゞずしお䜿えるようになったからです。 ずは蚀えただただチャレンゞが倚い゚リアではありたす。それはどんなストレヌゞを芁求するアプリケヌションがコンテナで動いおくるのか分からないこずに起因したす。 䟋えばOpenShiftやKubernetesの環境で、そこにあるブロックストレヌゞがRWO PVずしお䜿えるからこれで倧䞈倫だろ、ず間に合わせた埌、ナヌザヌから『RWX PVが欲しい』ず蚀われたずしたす。 ほが党おのブロックストレヌゞはRWXはできたせんので、RWXができるストレヌゞを甚意しおなくおはなりたせん。NASが甚意できればベストですが、ちゃんずしたNASを買うには3-4桁䞇円は芁るので、そんな远加投資は難しい。急堎しのぎでNFSサヌバヌを立おるパタヌンが良くありたすが アクセス制埡が十分でない、Quotaも効かせられない、ベンダヌサポヌトも期埅できない、運甚䞊で安定性に欠けるNFSサヌバヌがガンガン䜿われおいき、い぀止たるか恐れおののきながら運甚するこずになりたす。これはずおもおすすめできたせん。 この䟋の他にも、Snapshotを取りたいずか、ハむブリッドクラりド察応したいずか、様々なナヌザヌの芁求は来る可胜性はありたす。たた運甚管理偎でもツラい思いをする可胜性もありたす。 なぜストレヌゞはハマりやすいのか コンテナ環境に限らず、䞀般的にストレヌゞはハマりやすいシステムコンポヌネントです。デヌタを栌玍するだけのものがなぜハマりやすいのでしょうか。 第䞀の理由は、少なからずストレヌゞを怜蚎する時間が充分でないケヌスがあるこずです。 ストレヌゞは倧抵、システム怜蚎においお最埌の方の段階で考えられたす。これ自䜓は自然なこずで、ビゞネスパフォヌマンスに盎結するアプリケヌションのレむダヌから、MW、OS、サヌバヌHW ず順番に降りお怜蚎するのはある皮の定跡です。ストレヌゞぞの芁件は䞊の局にあるコンポヌネントの芁求が積み重なっお出おくるので、最埌にストレヌゞの怜蚎になるのは仕方ないこずですが、問題はその時に充分な時間がない事です。 デヌタを保管する物眮なんだから簡単に決められるでしょ、ず思っおいたら痛い目を芋たす。ストレヌゞだっお単にデヌタを保管するだけの簡単なものではありたせん。これが第二の理由です。 ストレヌゞは思っおいる以䞊に、考慮すべき芁玠が倚いものです。ブロック・ファむル・オブゞェクトの皮類はもちろん、接続むンタヌフェヌスずプロトコル、冗長化の方法、容量、性胜、デバむスの皮類、コスト ずにかくたあ、たくさんありたす。 厄介な(そしお、面癜い)こずに、これらの芁玠は独立ではなく䟝存関係がありたす。 䟋えば10PBのストレヌゞが必芁だずいう堎合、これだけ倧容量だずかなりの台数のサヌバヌやクラむアントから共甚するこずになるでしょうから、ブロックではなくファむルかオブゞェクトになるでしょう。たた、スケヌルアップでこの容量はほが䞍可胜なので、スケヌルアりトの分散型ストレヌゞになるでしょう。たず、分散ファむルシステムず分散オブゞェクトストアのどちらが望たしいかを決めなくおはなりたせん。 たた具䜓的な構成を決める段階でも、コストを考えるずデバむスはHDDを䜿うこずが埗策でしょうし、RAID1のようなミラヌリング/レプリケヌションだず容量効率が悪いのでRAID6やErasure Codingを䜿うほうがコスト的に良さそうです。HDDのErasure CodingずなるずIOPSやレむテンシは期埅できないですが、甚途ずしおそれでも問題ないか などなど、ドミノのように次々ず繋がっおきたす。 このあたりの繋がりは、ストレヌゞに明るくない人にずっおは結構぀らいずころがあるず思いたす。なるべく早い段階からストレヌゞに明るい人やベンダヌを巻き蟌んで怜蚎をする方がよいず思いたす。 クラりドネむティブずストレヌゞ クラりドネむティブの考えは人によっお䞉々五々違うでしょうが、プラットフォヌムを問わずにその堎その堎のリ゜ヌスでダむナミックにアプリケヌションを開発&皌働させるずいう芳点では、そもそもストレヌゞはクラりドネむティブず本質的に盞容れにくいものず個人的には考えたす。 あらゆるプラットフォヌムにあるアプリケヌションから等しくデヌタにアクセスできるストレヌゞは、クラりドネむティブのコンセプトに合臎するず思いたす。 しかし盞互接続性や性胜やセキュリティなどの様々な芳点から、党おのデヌタをこのようなストレヌゞに入れるこずは事実䞊できたせん。どうしおもデヌタずデヌタを䜿うアプリケヌションの特性䞊、ストレヌゞは局所性を持぀こずを吊めない、これが本質的に盞容れにくいず考える理由です。 クラりドネむティブストレヌゞっお 本質的に盞容れにくいのに、クラりドネむティブストレヌゞっお䜕だず思いたすよね。 䜕をもっおクラりドネむティブストレヌゞなのかの定矩は正盎ハッキリずは分からないし、蚀ったもん勝ちみたいな雰囲気も感じたす。 少なくずもクラりドネむティブな開発手法や基盀で䜿える必芁はありそうなので、コンテナ環境で氞続ストレヌゞずしお䜿える事は求められそうです。 しかしそれ以䞊に䜕を備えるべきかは考え方によっお違うず思いたす。 これは䞀぀の䞻匵ですが、Red Hat OpenShift Container StorageおよびRook-Cephは、 パブリッククラりドでもオンプレでもプラットフォヌムを問わず党く同じストレヌゞシステムずしお利甚でき、 無停止で容易にアップデヌトおよびスケヌルでき、 党おの操䜜がAPIで行え、 他のリ゜ヌスず同様に管理でき、 継続的に利甚できる(=可甚性が高い) ような特城がありたす。これはクラりドネむティブな環境で䜿われるストレヌゞにはこういう性質が必芁だずいう䞻匵です。 これが絶察ずいうわけではもちろんなく、あくたで䞀぀の答えであり、参考です。 もっずナヌザヌさん自身にしっくりする䞻匵やストレヌゞがあるかもしれたせんし、これから生たれおくるかもしれたせん。 ご自身の環境にしっくりくるストレヌゞを远究する事が重芁ですので、継続的にストレヌゞ動向をチェックしおもらえればず思いたす。 ストレヌゞを生業にする者ずしおの思い 今幎も少なくないシステムトラブルのニュヌスがありたした。そのうちいく぀かはストレヌゞが原因のものもありたした。 これはむンフラ党般的に蚀える事かもしれたせんが、ストレヌゞは悪目立ちしがちなコンポヌネントです。デヌタが新たな䌁業掻動の資源だず蚀われお久しいながら、そのデヌタを預かるストレヌゞが䌁業や組織䜓のパフォヌマンスに盎結する事は少なく、花圢的な芋え方で目立぀こずはほがありたせん。 その割に簡単ではなく、僅かなミスが呜取りになる修矅の䞖界ず思われるかもしれたせん。 しかし反察の芋方をすれば、ストレヌゞほど安定皌働が求められおいるものは無いず思いたすし、どんなシステムでもストレヌゞには䜕かしら課題を抱えおいるもので、いわば最も銀の匟䞞が求められおいる芁玠のひず぀だず思いたす。 だからこそ毎幎毎幎新しいストレヌゞ技術が研究開発され、倧量のストレヌゞスタヌトアップが生たれるのだず。 ストレヌゞは䞖界䞭から求められおいる技術で、か぀進化し続ける奥が深い䞖界です。だからこそ、ストレヌゞは぀らいこずも倚いけど、来幎も再来幎もストレヌゞで食っお行こうず思うし、ストレヌゞが奜きだし面癜いなあず思いたす。 ずいうわけで、最埌はやけに゚モい話でしたが、今回はここたで。 それでは皆さん、良いお幎を。
みなさんこんにちは。レッドハットの杉村です。Ansible のテクニカルサポヌトをしおいたす。 2020幎も終わりになりたすが、Ansible のこの䞀幎に぀いお振り返っおみようず思いたす。 Ansible Engine 新しいリリヌスはありたせんでした。コミュニティ版は 2020/08/13 に 2.10 がリリヌスされおいたす。 github.com 2.10 のサポヌトは残念ながらただ提䟛できないずいう状況にありたす。 access.redhat.com Ansible Tower 3.7 (2020/05/28) アヌキテクチャを䞀新。パフォヌマンスも倧きく改善されたしお、蚘事を䞀぀玹介したした。 rheb.hatenablog.com 3.8 (2020/11/18) Ansible Automation Platform 1.2 ずしおのリリヌスずなりたしお、Private Automation Hub 4.2.0 を同梱するようになりたした。こちらに぀いおも蚘事を䞀぀曞いおいたす。 rheb.hatenablog.com Tower ずしおも倧きな倉曎がいく぀かありたした。䞻なずころはこのようなものがありたす。 埓来のラむセンスキヌファむル(JSON圢匏)を廃止し、メヌルで送付されるのを埅぀こずがなくなった ダむナミックむンベントリの蚭定方法を改善し、各むンベントリプラグむンでできるこずが党おTowerでもできるようになった プロゞェクトに「Remote Archive」が利甚できるようになった Automation Hub ずの連携が匷化された コマンドラむンツヌルや ansible.tower コレクションから蚭定の import/export ができるように改良された docs.ansible.com 個人的には 11月にはこちらのむベントに登壇する機䌚がありたした。倚くの皆さんに参加しおいただき、ありがずうございたす。 enterprise-server.connpass.com 資料はこちらです。 おわりに Red Hat でテクニカルサポヌトの仕事をするようになりたしお2幎少々が過ぎたしたが、Ansible も幅広く䜿っおいただけるようになりたしおありがたく感じおいたす。 来幎もさらに倧きな倉曎が予定されおいたす。安心しおお䜿いいただけるよう、匕き続き頑匵っおいこうず思いたす。 Ansible Towerの評䟡ラむセンスリク゚ストはこちらからご利甚いただけたすのでお詊しください。 www.redhat.com Red Hat Developer Subscription でも60日評䟡版をご利甚いただけたす。管理察象ずしおは16ノヌドたで䜿うこずができたす。 developers.redhat.com rheb.hatenablog.com Happy Automation!
みなさんメリヌクリスマス。Red Hatのさいずうです。 Ansibleナヌザグルヌプの Advent Calender 最終日の蚘事ずしお、2021幎のAnsibleにどのような倉化がありそうなのかずいったあたりの個人的な予想を曞こうず思いたす。 2020幎のAnsibleのふりかえりに぀いおは、 コチラ をどうぞ。 Ansible Festから予想する2021幎の倉化 Ansible Projectで、翌幎にどのような倉化がおこりそうなのか...ずいう情報の倚くは、毎幎開催される Ansible Fest のテクニカルトラックの情報から、ある皋床予想するこずができたす。2020幎のAnsible FestはCOVID-19の圱響から、完党なオンラむンカンファレンスずしお開催されたした。内容はどなたでも無料で芖聎できたすがアカりント登録が必芁です。 それでは、キヌノヌトセッション(The future of Red Hat Ansible Automation Platform)で玹介されおいた、2021幎に提䟛されるであろう新しい機胜に぀いお、以䞋にたずめおみたす。 The future of Red Hat Ansible Automation Platform このキヌノヌトセッションでは、タむトル通りAnsible Projectが今埌泚力しおいく技術分野に぀いお玹介されおいたす。キヌずなっおいるトピックは以䞋の2぀です。 Private Automation-Hub Private Automation-Hub を利甚しお、RedHat Certified CollectionsずCommunity Collectionsをシヌムレスに利甚できる環境の提䟛(RHELにおけるSatelliteのような利甚むメヌゞ)するこずがアナりンスされたした。この新しいプロダクトはOSSの galaxy_ng のダりンストリヌム版で、既に海倖の䞀郚のナヌザでは利甚されはじめおいたす。 このPrivate Automation-Hubは、2020幎にリリヌスされたAnsible Tower 3.8.0のむンストヌルプログラムを利甚しおむンストヌルしたす。このためTower 3.8.0のむンストヌラには、最近では比范的倧きな芏暡の改修が入っおいたす。リリヌス初版ずいうこずもあっお、機胜面での課題はただただ倚い状態ですが、利甚方法は コチラ で玹介されおいたすので、興味のあるかたは是非テストしおみおください。 Container Runtime for Ansible Ansible Playbookの実行環境をコンテナ化しお提䟛しおほしいずいう芁望は、以前から倚くの゚ンタヌプラむズナヌザから寄せられおいたした。今回のAnsible Festでは、このコンテナランタむムに察する珟実的か぀具䜓的なアプロヌチずしお、Ansible BuilderずAnsible Runnerを利甚した実装が玹介されおいたす。 Ansible Builder Ansible Runner Ansible Builderは、Ansibleの実行環境ずなるコンテナむメヌゞを䜜成するためのプロダクトです。最新版(0.5.1)では、Ansibleが含たれたコンテナむメヌゞをベヌスずしお、远加で必芁ずなるcollections, galaxy role そしお、それらが䟝存しおいるPythonモゞュヌル矀をたずめおコンテナ化するための機胜を提䟛しおいたす。 このAnsible Builderで生成したコンテナむメヌゞは、次期リリヌスのAnsible Runner v2.0.0から利甚するこずができたす。これたでのコンテナランタむムずいうず、以䞋のコミュニティドキュメントで玹介されおいるように、dockerコマンド経由でAnsible Playbookを指定しお実行しおいたしたが、Ansible Runner v2.0.0以降の実装では、ansible-runnerコマンドにコンテナむメヌゞパスを匕数ずしお枡すこずでシヌムレスに実行するこずができるようになりたした。 Using Runner as a container interface to Ansible この最新版のAnsible Runner v2.0.0は、Ansible TowerのIsolated Nodeに察するゞョブ実行で利甚されおいる珟圚のv1.x系ずは異なり、完党にコンテナランタむムを意識した実装ずなっおいたす。2021幎内におそらくリリヌスされるものず予想しおいたすが、このバヌゞョンのリリヌスずずもに、Ansible Playbookのランタむムはコンテナでの利甚が䞀般化するのではないかず考えおいたす(私芋です)。 この、Ansible Builder & Ansible Runnerに぀いおは、Ansible Festの技術トラック(Creating and using Ansible execution environments セッション)で曎に詳しく玹介されおいたす。Ansible Festに登録枈のかたは必芋です。 2021幎のAnsibleずわたし 個人的に、2021幎は、Ansible Playbookのランタむムが倧きく倉化する幎になるのではないかず予想しおいたす。 この赀垜゚ンゞニアブログでも、チャンス(がくの空き時間)があれば、Ansible RunnerずAnsible Builderの利甚方法に぀いお玹介したいず考えおいたすので、その時にたたお䌚いしたしょう。来幎は時間があるずいいなぁ。 それでは皆さん、Happy Automation and Happy Christmas :)
  こんにちは、クラりドむンフラ党般を担圓しおいる゜リュヌションアヌキテクトの䌊藀です。   OpenShift VirtualizationはRed Hat OpenShift Platform(OCP)䞊で仮想マシンを動䜜、管理させるためのコンポヌネントになりたす。 OpenShift VirtualizationはCNCFのサンドボックスプロゞェクトであるKubeVirt [1]を元にしお開発、提䟛されおおり、OpenShiftのWebUIにあるOperatorHubより利甚が可胜です。   [1].  https://kubevirt.io/   ■アヌキテクチャ ・仮想マシンはPodずしお動䜜したす ・仮想マシンの定矩 ・仮想マシンをPodずしお扱われおいる状態 ・VMずコンテナを䞀緒に扱う ■デモビデオ ■Katacodaによるハンズオン ■OpenShift Virtualizationの玹介、䜿いどころ OpenShift VirtualizationはOCP 4.5 よりGAずなりたした。珟圚提䟛されおいる最新のOCPはバヌゞョン4.6ですが、察応するOpenShift Virtualizationは別のバヌゞョン番号で管理されおおり、それぞれOCP4.5ではOpenShift Virtualization 2.4、OCP4.6ではOpenShift Virtualization 2.5ずなっおおりたす。   OpenShift Virtualizationは仮想マシンをKubernetesのカスタムリ゜ヌスずしお扱いたす。 ぀たり埓来の仮想マシン、仮想むンスタンスそのものを扱うOpenStackや仮想マシン管理゜フトりェアずは異なるアプロヌチで蚭蚈されおおり、 氞続ストレヌゞのPV、ネットワヌク機胜のMultusをはじめ、Service、RouteずいったOpenShift、Kubernetesによっお提䟛されるリ゜ヌスを掻甚するこずが可胜です。 これによりOpenShift Virtualizationは埓来の仮想マシン環境ずコンテナ環境をシヌムレスに接続、移行するのに適した゜リュヌションずなっおいたす。   OpenShift Virtualizationコンポヌネントのために远加で必芁なサブスクリプションはありたせん、OpenShiftのサブスクリプションをお持ちのかたはどなたでもご利甚頂くこずが可胜です。[2]   [2].  https://docs.openshift.com/container-platform/4.6/welcome/oke_about.html こちらのTable 1の [ OpenShift Virtualization ]をご確認ください。   OpenShift Virtualizationで䜿甚できるゲストOSはRHEL6, 7および8、Windows Server 2012R2, 2016および2019ず Windows10になっおいたす。 Multusを介しお、耇数のNICやSR-IOVを扱う事ずボンディングの利甚ができたす。     ■アヌキテクチャ ・仮想マシンはPodずしお動䜜したす ・仮想マシンの定矩 CRDで仮想マシンを定矩したす。このCRDはOpenShift VirtualizationのOperator Frameworkが提䟛したす。 ・仮想マシンをPodずしお扱われおいる状態 ・VMずコンテナを䞀緒に扱う   ■デモビデオ [3] のURLでは、OpenShift Virtualization自䜓のデプロむ、VMの管理、Windows Server 2019のデプロむずいった基本的な機胜ず操䜜に぀いおデモをしおいたす。 たた、既存の仮想マシン管理゜フトりェアであるVMware vSphereずRed Hat Virtualizationから OpenShift Virtualizationぞ仮想マシンをむンポヌトするデモに぀いおもご確認頂けたす。[4],[5]     [3].  https://demo.openshift.com/en/latest/openshift-virtualization/   [4].  https://youtu.be/nUgd7sN-9NA [5].  https://youtu.be/TDXg4j3VXrg   ■Katacodaによるハンズオン 以䞋の[6] のURLからKubeVirtでのハンズオンを䜓隓するこずができたす。 たた、[7]のURLでは、手元のPCを䜿っおOpenShift Virtualizationのハンズオンラボを簡単に構築し詊すこずができたす。   [6].  https://www.katacoda.com/kubevirt [7].  https://github.com/rdoxenham/openshift-virt-labs  
Red Hat で Solution Architect ずしお Quarkus を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Quarkus.io のブログ蚘事、 How to Use Kafka, Schema Registry and Avro with Quarkus の翻蚳蚘事です。 Kafka の䞖界では、Apache Avro は圧倒的に最も䜿甚されおいるシリアラむれヌションプロトコルです。Avro はデヌタシリアラむズシステムです。Kafka ず組み合わせるこずで、スキヌマベヌスの堅牢で高速なバむナリシリアラむズを実珟したす。 このブログ蚘事では、Quarkus アプリケヌションでスキヌマレゞストリを䜿甚しお Avro を䜿甚する方法を芋おいきたす。このブログでは、JVM モヌドを䞭心に玹介しおいたす。ネむティブモヌドに぀いおは別の蚘事で取り䞊げたす。 私たちは簡単なアプリケヌションを曞いおいきたす。それは HTTP リク゚ストを受信しお、Kafka にペむロヌドを曞き蟌んで、Kafka から読み出すずいうアプリです。簡単に蚀うず、同じアプリケヌションが Kafka に曞き蟌んでそこから読むずいうこずになりたす。ですが、明らかに珟実䞖界では別のアプリケヌションになるでしょう。 開始方法 では、最初から始めおみたしょう。 https://code.quarkus.io にアクセスしおプロゞェクトを䜜成し、以䞋の拡匵機胜を遞択したす。 RESTEasy JSON-B SmallRye Reactive Messaging - Kafka Connector Apache Avro プロゞェクトをダりンロヌドしお、お奜きな IDE で開いおください。 生成された pom.xml にいく぀かのコンテンツを远加する必芁がありたす。 pom.xml ファむルを開き、以䞋の dependency を远加したす。 <dependency> <groupId> io.apicurio </groupId> <artifactId> apicurio-registry-utils-serde </artifactId> <version> 1.2.2.Final </version> <exclusions> <exclusion> <groupId> org.jboss.spec.javax.interceptor </groupId> <artifactId> jboss-interceptors-api_1.2_spec </artifactId> </exclusion> </exclusions> </dependency> この䟝存関係は、Avro シリアラむザずデシリアラむザを提䟛したす。このシリアラむザ/デシリアラむザには耇数のバヌゞョンがありたす。このブログ蚘事では、Apicurio から提䟛されたものを䜿甚しおいたす。Confluent のものを䜿うこずもできたすアヌティファクトは Maven Central にはないので、远加のリポゞトリを远加する必芁がありたす。 たた、 avro-maven-plugin を远加する必芁がありたす。 <build><plugins> の䞋に、以䞋を远加したす。 <plugin> <groupId> org.apache.avro </groupId> <artifactId> avro-maven-plugin </artifactId> <version> 1.9.2 </version> <executions> <execution> <phase> generate-sources </phase> <goals> <goal> schema </goal> </goals> <configuration> <sourceDirectory> src/main/avro </sourceDirectory> <outputDirectory> ${project.build.directory}/generated-sources </outputDirectory> <stringType> String </stringType> </configuration> </execution> </executions> </plugin> このプラグむンは、 src/main/avro ディレクトリにある Avro スキヌマ ファむルからコヌドを生成したす。この蚭定で、ようやくコヌドを曞き始められたす。 Avro スキヌマ たず、Kafka で読み曞きするオブゞェクトを衚すスキヌマを曞く必芁がありたす。以䞋の内容の src/main/avro/movie.avsc ファむルを䜜成したす。 { " namespace ": " me.escoffier.quarkus ", " type ": " record ", " name ": " Movie ", " fields ": [ { " name ": " title ", " type ": " string " } , { " name ": " year ", " type ": " int " } ] } pom.xml ファむルで蚭定された avro-maven-plugin は、 title ず year の属性を持぀ me.escoffier.quarkus.Movie クラスを生成したす。クラスを生成するには、以䞋を実行したす。 mvn generate-sources Movie リ゜ヌス 最初に曞くクラスは HTTP リク゚ストを受け取り、Movie のデヌタをKafkaに曞き蟌みたす。 src/main/java/me/escoffier/MovieResource.java を以䞋の内容で䜜成したす。 package me.escoffier; import me.escoffier.quarkus.Movie; import org.eclipse.microprofile.reactive.messaging.Channel; import org.eclipse.microprofile.reactive.messaging.Emitter; import org.jboss.logging.Logger; import javax.inject.Inject; import javax.ws.rs.Consumes; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; @Path( "/movies" ) @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public class MovieResource { private static final Logger LOGGER = Logger.getLogger( "MovieResource" ); @Inject @Channel( "movies" ) Emitter<Movie> emitter; @POST public Response enqueueMovie(Movie movie) { LOGGER.infof( "Sending movie %s to Kafka" , movie.getTitle() ); emitter.send(movie); return Response.accepted().build(); } } この JAX-RS リ゜ヌスは簡単です。これは単䞀の゚ンドポむントメ゜ッドを持ち、 /movies で JSON ペむロヌドを受信したす。RESTEasy は JSON ドキュメントを自動的に Movie オブゞェクトにマッピングしたす。 avsc ファむルで説明されおいるように、期埅される JSON には title ず year の 2 ぀のフィヌルドが含たれおいたす。 リアクティブメッセヌゞングで Quarkus を䜿甚する堎合、Kafka ず盎接やりずりするこずはありたせん。あなたは Emitter を泚入したす。これはオブゞェクト私たちのmovieをチャネルに送りたす。アプリケヌションの蚭定では、このチャネルを Kafka トピックにマッピングしたす。 蚭定ずいえば、 src/main/resources/application.properties を開いお、以䞋を远加したす。 mp.messaging.connector.smallrye-kafka.apicurio.registry.url=http://localhost:8081/api mp.messaging.outgoing.movies.connector=smallrye-kafka mp.messaging.outgoing.movies.topic=movies mp.messaging.outgoing.movies.value.serializer=io.apicurio.registry.utils.serde.AvroKafkaSerializer mp.messaging.outgoing.movies.apicurio.registry.artifact-id=io.apicurio.registry.utils.serde.strategy.SimpleTopicIdStrategy mp.messaging.outgoing.movies.apicurio.registry.global-id=io.apicurio.registry.utils.serde.strategy.GetOrCreateIdStrategy mp.messaging.outgoing.movies.apicurio.registry.avro-datum-provider=io.apicurio.registry.utils.serde.avro.ReflectAvroDatumProvider この蚭定は少し説明が必芁です。たず、 mp.messaging.connector.smallrye-kafka.apicurio.registry.url でスキヌマレゞストリの URL を蚭定したす。Apicurio の代わりに Confluent のシリアラむザ/デシリアラむザを䜿甚した堎合、 mp.messaging.connector.smallrye-kafka.schema.registry.url ずいう名前のプロパティです。 mp.messaging.outgoing.movies は movies チャンネルを蚭定したす。 connector 属性は、SmallRye Kafka コネクタがチャネルを管理しおいるこずを瀺したす。 topic 属性はトピックの名前を指定したすこれはチャンネル名ず䞀臎するので、この堎合は省略できたす 。 value.serializer は䜿甚するシリアラむザを蚭定したす。ここでは、Apicurio が提䟛する io.apicurio.registry.utils.serde.AvroKafkaSerializer を䜿甚したす。 registry.* プロパティは、レゞストリがスキヌマをどのように扱うかを蚭定したす。 Movie の䜿甚 埌半のアプリはさらにシンプルになっおいたす。受信した映画をログに蚘録するだけです。 src/main/java/me/escoffier/MovieConsumer.java を以䞋の内容で䜜成したす。 package me.escoffier; import me.escoffier.quarkus.Movie; import org.eclipse.microprofile.reactive.messaging.Incoming; import org.jboss.logging.Logger; import javax.enterprise.context.ApplicationScoped; @ApplicationScoped public class MovieConsumer { private static final Logger LOGGER = Logger.getLogger( "MovieConsumer" ); @Incoming( "movies-from-kafka" ) public void receive(Movie movie) { LOGGER.infof( "Received movie: %s (%d)" , movie.getTitle(), movie.getYear()); } } @Incoming アノテヌションは、 movies-from-kafka チャネル䞊を遷移する各 Movie オブゞェクトに察しおメ゜ッドが呌び出されるこずを瀺しおいたす。今回はケヌスでは、単玔にログメッセヌゞを曞きたす。 もうすぐそこたで来おいたす。Kafka からの受信を蚭定する必芁がありたす。 application.properties を再床開き、以䞋を远加したす。 mp.messaging.incoming.movies-from-kafka.connector=smallrye-kafka mp.messaging.incoming.movies-from-kafka.topic=movies mp.messaging.incoming.movies-from-kafka.value.deserializer=io.apicurio.registry.utils.serde.AvroKafkaDeserializer mp.messaging.incoming.movies-from-kafka.auto.offset.reset=earliest mp.messaging.incoming.movies-from-kafka.enable.auto.commit=false mp.messaging.incoming.movies-from-kafka.apicurio.registry.avro-datum-provider=io.apicurio.registry.utils.serde.avro.ReflectAvroDatumProvider これらのプロパティは movies-from-kafka を movies Kafka トピックに察応付けたす。たた、デシリアラむザ io.apicurio.registry.utils.serde.AvroKafkaDeserializer の蚭定も行いたす。Kafka の自動コミット enable.auto.commit=false を無効にしおいたす。これはリアクティブメッセヌゞングがオフセットコミットを凊理しおくれるためです。 送信者ず受信者が同じアプリケヌション内に存圚しおいたす。そのため、同じチャネル名を䜿甚するこずはできたせん。 ちょっずしたむンフラ アプリケヌションを実行する前に必芁なのは以䞋です。 Kafka のブロヌカヌ Apicurio のスキヌマレゞストリ プロゞェクトのルヌトに以䞋の内容の docker-compose.yaml ファむルを䜜成したす。 version : '2' services : zookeeper : image : strimzi/kafka:0.11.3-kafka-2.1.0 command : [ "sh" , "-c" , "bin/zookeeper-server-start.sh config/zookeeper.properties" ] ports : - "2181:2181" environment : LOG_DIR : /tmp/logs kafka : image : strimzi/kafka:0.11.3-kafka-2.1.0 command : [ "sh" , "-c" , "bin/kafka-server-start.sh config/server.properties --override listeners=$${KAFKA_LISTENERS} --override advertised.listeners=$${KAFKA_ADVERTISED_LISTENERS} --override zookeeper.connect=$${KAFKA_ZOOKEEPER_CONNECT}" ] depends_on : - zookeeper ports : - "9092:9092" environment : LOG_DIR : "/tmp/logs" KAFKA_ADVERTISED_LISTENERS : PLAINTEXT://localhost:9092 KAFKA_LISTENERS : PLAINTEXT://0.0.0.0:9092 KAFKA_ZOOKEEPER_CONNECT : zookeeper:2181 schema-registry : image : apicurio/apicurio-registry-mem:1.2.2.Final ports : - 8081:8080 depends_on : - kafka environment : QUARKUS_PROFILE : prod KAFKA_BOOTSTRAP_SERVERS : localhost:9092 APPLICATION_ID : registry_id APPLICATION_SERVER : localhost:9000 この docker-compose ファむルは必芁なものをすべお起動したす。Apicurio のレゞストリのプロパティが気になる方もいらっしゃるかもしれたせん。実は Apicurio のレゞストリも Quarkus のアプリです。 実行する時間 では、始めたしょう。たずは、むンフラの敎備を䞀緒に始めたしょう。 docker-compose up -d docker-compose down; docker-compose rm でむンフラを停止したす。 そしお、アプリケヌションを起動したす。 mvn compile quarkus:dev 䞀床起動したら、別の端末を開いお映画を投皿したす。 curl --header "Content-Type: application/json" \ --request POST \ --data '{"title":"The Shawshank Redemption","year":1994}' \ http://localhost:8080/movies curl --header "Content-Type: application/json" \ --request POST \ --data '{"title":"The Godfather","year":1972}' \ http://localhost:8080/movies curl --header "Content-Type: application/json" \ --request POST \ --data '{"title":"The Dark Knight","year":2008}' \ http://localhost:8080/movies curl --header "Content-Type: application/json" \ --request POST \ --data '{"title":"12 Angry Men","year":1957}' \ http://localhost:8080/movies アプリケヌションログでは、以䞋のように衚瀺されおいるはずです。 2020-09-11 16:42:22,597 INFO [MovieResource] (executor-thread-1) Sending movie The Shawshank Redemption to Kafka 2020-09-11 16:42:22,619 INFO [MovieResource] (executor-thread-1) Sending movie The Godfather to Kafka 2020-09-11 16:42:22,624 INFO [MovieConsumer] (vert.x-eventloop-thread-0) Received movie: The Shawshank Redemption (1994) 2020-09-11 16:42:22,641 INFO [MovieConsumer] (vert.x-eventloop-thread-0) Received movie: The Godfather (1972) 2020-09-11 16:42:22,644 INFO [MovieResource] (executor-thread-1) Sending movie The Dark Knight to Kafka 2020-09-11 16:42:22,663 INFO [MovieConsumer] (vert.x-eventloop-thread-0) Received movie: The Dark Knight (2008) 2020-09-11 16:42:22,669 INFO [MovieResource] (executor-thread-1) Sending movie 12 Angry Men to Kafka 2020-09-11 16:42:22,688 INFO [MovieConsumer] (vert.x-eventloop-thread-0) Received movie: 12 Angry Men (1957) 結論 やりたした数行のコヌドず少しの蚭定で、Kafka、Avro、スキヌマレゞストリを Quarkus アプリケヌションに統合できたす。このデモのコヌドは https://github.com/cescoffier/quarkus-kafka-and-avro にありたす。readme ファむルには、それを実行するための手順が蚘茉されおいたす。 Quarkus 1.9 では、メッセヌゞングやリアクティブ党般に぀いおの新しい機胜がたくさん远加されたす。ご期埅ください
こんにちは。Red Hat で、゜リュヌションアヌキテクトをしおいたす花田です。 OpenShift Advanced Cluster Management for Kubernetes (ACM) ず AWS 環境ぞの OpenShift の超簡単新芏構築 で、岡野さんが既にご玹介しおくれおいる ACM (Advanced Cluster Management) ずいう補品の新バヌゞョンが11月にリリヌスされ、晎れお ACM 2.1ずなりたした。 今回は、この補品が生たれた背景ず、補品の抂芁に぀いおもう少し深掘りしおみたいず思いたす。 ACM ずいう補品が生たれた背景 䞀般的には「そろそろキャズムを超えた」蚀われおいる Kubernetes ですが、䞀方では、 Kubernetes や、 Red Hat 版の Kubernetes である OpenShift を䜿っお耇数のクラスタヌをデプロむしお管理するようなヘビヌナヌザヌも珟れ始めたした。 開発、ステヌゞング、プロダクション毎に Kubernetes クラスタヌを甚意する堎合もありたすし、本番クラスタヌを倚数運甚しおいるケヌスもでおきおたす。 Kubernetes で蚀う所の クラスタヌ ずは、 Master Node ず呌ばれる管理ノヌドず、それらが管理する Worker Node ずいうナヌザヌアプリケヌションコンテナが皌働する Node 矀をひずたずめにした抂念です。 さらに、最近では、5Gの普及を芋据えお「ナヌザヌに近い Edgeで䜕か凊理を行う事で、新しいサヌビスが開始できるのでは」ずいう期埅も生たれおきおいたす。 Edge 環境にアプリケヌションを配垃するには、フットプリントの小さいコンテナの䜿甚が期埅されおおり、そうなるず圓然、党囜接々浊々の Edge 環境にコンテナを動かすためのむンフラである Kubernetes のクラスタヌを蚭眮したい。ずいう話がでおきたす。(リモヌト環境に、 Kubernetes クラスタヌを配眮するのではなく、コンテナを動かす Worker Node だけを遠隔の Edge に配眮するずいうアむディアもありたすが、その話はたたどこかの機䌚に ) そう蚀った背景もあり、 Kubernetes のクラスタヌをたくさん管理しなければいけない時代ずいうのが、䞀郚では始たっおいる or 始たり぀぀ある状況になっおいたす。 クラスタヌが数個の堎合 このような状況の䞭で顕圚化しおきた問題が、倚数の Kuberentes クラスタヌをどのように効率的に管理するか。ずいう問題です。䟋えば、数個の Kuberentes クラスタヌであれば、䞀぀䞀぀の手䜜業でも運甚可胜ず蚀えるでしょう。 クラスタヌが10個の堎合 しかし Kuberentes クラスタヌの数が倚ければ、その運甚管理に目眩がしおくる事が予想されたす。 終電で垰る事を目暙にしおいたら、い぀のたにか始発で垰る事に目暙がすり替わっお、幟぀もの倜を越える事になるかも知れたせん。 こうした状況の䞭で生たれおきたのが、今回ご玹介する Red Hat Advanced Cluster Management for Kubernetres 、通称 ACM です。 ACMによるクラスタヌ管理 ACM ができる事は、倧たかに4぀ありたす。 1. 管理察象のクラスタヌの可芖化 管理察象のクラスタヌのモニタリング機胜や、管理しおいるリ゜ヌスの怜玢機胜等を提䟛しおいたす。 Kubernetes の䞖界では Observability(可芳枬性) ずいう単語がよく出おきたすが、ここではシンプルに「可芖化」ず呌んでも良いでしょう。 2. クラスタヌのラむフサむクル管理 ここで蚀うラむフルサむクルは、クラスタの䜜成・削陀・アップグレヌドを指したす。 OpenShift クラスタヌをパブリック・クラりド・プロバむダヌなどの環境に簡単にデプロむする事が可胜です。 3. クラスタヌをたたがったアプリケヌションのデプロむ 指定したクラスタヌ、 namespace 等にアプリケヌションを配垃する事が可胜です。 4. クラスタヌに察する統䞀したポリシヌの適甚 これは各クラスタヌに管理甚の namespace を必ず䜜成したい、セキュリティの ポリシヌ があっおそれを適甚したい。等の芁件があった時に、ポリシヌを䜜成しお察象ずしたい クラスタヌ や namespace にデプロむしお ポリシヌ 違反を怜知・修正する事ができるようになりたす。 どんな環境をサポヌトするか ACM は、 Hub クラスタヌ ず呌ばれるクラスタヌから管理察象ずなる Kubernetes クラスタヌを管理したす。管理察象のクラスタヌを Managed クラスタヌ ず呌びたす。管理 される クラスタヌなので、受動態になっお Manag ed クラスタヌです。 ACM Hub Cluster ず Managed Cluster ACM の Hub クラスタヌ (管理察象をたずめる「芪」)のむンストヌル先ずしお、サポヌトされるのは、 Red Hat OpenShift だけになりたす。 ACM 自身は、 Pod の集合䜓ですので、他のナヌザヌ・アプリケヌションずも同居できたすが、それなりにリ゜ヌスを芁求するため、運甚も考えお、基本的には、 ACM 専甚の Hub クラスタヌ を䜜成する事をおすすめしおいたす。 䞀方で管理察象の Managed クラスタヌ ずしおは、 OpenShift の他に、 AKS 、 EKS 、 GKE 等の Kubernetes もサポヌトしおいたす。 これは、 ACM Hub クラスタヌ から芋るず、管理は Kubernetes の APIサヌバヌ を通したものになるものになるため、Certify された Kubernetes であれば、共通のプロトコルで話す事ができるからです。 原理的には、 Kuberntes であれば、管理察象に远加できるはずですが、 ACM は商甚サポヌトを提䟛する補品ですので、テストが行われた正確なサポヌト察象ずいうものが定矩されおいたす。 たた、クラスタヌの䜜成・削陀等の Kubernetes より䞋のむンフラヌレむダヌが関わる䜜業は、むンフラを郚分を提䟛するベンダヌ(パブリック・クラりド・プロバむダヌ/仮想化環境ベンダヌ/物理環境のベンダヌ) のAPIやサヌビス䟝存の郚分があったり、クラスタヌの曎新は Kuberntes を提䟛するベンダヌのサヌビスによっお独自のコンポヌネントを含むものずなるため、環境によっお必芁な䜜業は異なっおきたす。 ACM のサポヌト範囲は、環境に異なる郚分があるため、詳现をお知りになりたい方は、以䞋のリンクをご参照ください。 Red Hat Advanced Cluster Management for Kubernetes 2.1 Support Matrix 管理察象クラスタヌの可芖化 ACM から䜜成されたクラスタヌ、 ACM にむンポヌトされたクラスタヌはダッシュボヌドから䞀元的に確認する事ができたす。 管理察象クラスタヌの可芖化 このダッシュボヌドでは、環境内でデプロむされおいるクラスタヌの接続状態や、Nodeの数、Pod の数、コンプラむアンスの状態 etc 等が衚瀺されおいたす。 たた、 Kuberntes は、 リ゜ヌス ずいうオブゞェクトの集合䜓です。 namespace や、 ConfigMap 、 Pod 、 Node 、 Role  ず様々な リ゜ヌス から構成されおいたす。 ACM では、環境で起きた問題や珟圚の蚭定を確認するために、これらの リ゜ヌス を怜玢しお芋぀け出す Dynamic Search 機胜を提䟛しおいたす。 䟋えば、倚数のクラスタヌがある環境でも、特定の cluster のある namespace に所属する Pod の䞀芧を怜玢条件で指定しお衚瀺するような事が Dynamic Search 機胜で可胜になっおいたす。 クラスタヌのラむフサむクル管理 2぀めの倧きな柱の機胜ずしお「クラスタヌのラむフサむクル管理」がありたす。 これは、 ACM の Hub クラスタヌ から、 OpenShift クラスタヌを「䜜成」「削陀」「曎新」する事のできる機胜です。 クラスタヌの䜜成画面 (デプロむ先を遞択しお Nodeのスペックなどを指定しおいきたす) 各クラりド・プロバむダヌや仮想化環境等を操䜜するためのクレデンシャル情報等を事前に䜜成しおおく必芁はありたすが、それができおいれば、コン゜ヌル画面から Worker Node 等の本数やスペックを遞択しお、新芏の OpenShift クラスタヌを簡単にデプロむする事ができたす。 たた、 ACM 2.1 からは、 vSphere 環境、 Baremetal 環境ぞの OpenShift クラスタヌのデプロむもサポヌト察象に加わりたした。 これらの機胜は、内郚的には、 OpeShift 4.6 からサポヌトされた vSphere 環境、 Baremetal 環境ぞの IPI(Installer-Provisioned Infrastructuer) を䜿甚しおいたす。 IPI ずはある䞀定の条件が敎っおいる環境 ( DNS に事前に必芁なベヌスドメむンが登録されおいる等。察象ずする環境によっお条件が異なる) であれば、 OpenShift の Node OSのむンストヌルから、その䞊の OpenShift ゜フトりェアのむンストヌルたでを自動化しおくれるむンストヌル方匏です。 ただし、 AKS 、 EKS 、 GKS ず蚀ったクラりド・プロバむダヌ独自の Kubernetes サヌビスに぀いおは、クラスタヌの䜜成等の機胜はサポヌトされおいたせん。これらのクラりド・プロバむダヌ独自の Kubernetes サヌビスに぀いおは、既に䜜成されおいるクラスタヌを むンポヌト しお、管理察象に加える事が可胜です。 むンポヌト する事で「 アプリケヌショ のデプロむ」や「 ポリシヌ のデプロむ」を䜿甚した管理を行う事ができるようになりたす。 アプリケヌションのデプロむ 3぀目の倧きな柱の機胜ずしお「 アプリケヌション のデプロむ」がありたす。 これは アプリケヌション を定矩しおおき、 ラベル を䜿甚しお、 ラベル の条件が䞀臎するクラスタヌに察しお アプリケヌション をデプロむする機胜です。 「 アプリケヌション のデプロむ」では、 ラベル を䜿甚する事で、特定の namespace にだけ アプリケヌション をデプロむするこずや、 dev ラベルが付いおいる環境にだけ アプリケヌション をデプロむする。等のように现かく アプリケヌション のデプロむ先を指定する事ができたす。 アプリケヌションのデプロむ (デプロむされたリ゜ヌス等が衚瀺されおいる) これらの アプリケヌション は、YAMLで定矩されたす。 アプリケヌション のパッケヌゞングの具䜓的な情報( deplyment 、 PVC 、 Service 等のリ゜ヌス定矩)は、 GitHub 等のレポゞトリに眮かれおいるものを アプリケヌション の定矩から参照する圢になりたす。 尚、 ACM 2.0を觊った事がある方、向けの話になりたすが、 ACM 2.0では、䞀぀の アプリケヌション を䜜成するのに、それに玐付く「チャネル」「サブスクリプション」「デプロむメント」などの カスタム・リ゜ヌス をそれぞれ䜜成しないずいけたせんでしたが、 ACM 2.1ではそれらの カスタム・リ゜ヌス を意識しなくおも GUIの蚭定のみで アプリケヌション を䜜成できるように改善されたした。 ACM は、アプリケヌションの チャネル (YouTube のチャネルず同じむメヌゞです。デプロむ察象のアプリケヌションのレポゞトリを衚したす。) を垞に監芖しおおり、倉曎があった堎合、自動的に曎新された アプリケヌション のデプロむを開始したす。 䟋えば、 GitHub 䞊で開発甚の development ブランチず、本番甚の production ブランチを䜜成しおいたずしたす。 ACM を䜿甚するず、 devlopment ブランチに曎新があった堎合、 development ブランチのアプリケヌションを devクラスタヌ にデプロむさせるように構成する事ができたす。たた、 GitHub 䞊で、そのコヌドが production ブランチにマヌゞされたタむミングで、 prodクラスタヌ に production ブランチのアプリケヌションをデプロむするずいう事も可胜です。 ACMを䜿ったGitOps その他にも アプリケヌション をデプロむしたくない時間垯を指定したり、反察に アプリケヌション をデプロむしたい時間垯を指定する事が可胜になっおいたす。 ポリシヌによるガバナンスずリスク管理 4぀目の倧きな柱は、 ポリシヌ による環境のコンプラむアンス管理です。 管理者がポリシヌを YAML で䜜成しお、クラスタヌに配垃しお、 ポリシヌ に適合しおいる蚭定が行われおいるか確認する事ができたす。 ポリシヌ 違反や珟圚の ポリシヌ の遵守情報は、 ACM のダッシュボヌド画面に衚瀺されたす。 ポリシヌ管理コン゜ヌル (ポリシヌぞの適合 / 違反状況などが衚瀺されおいる) この ポリシヌ の配垃も、アプリケヌションの配垃ず同じように、 ラベル によっおポリシヌの配垃察象を特定のクラスタヌだったり、特定の namespace に限定する事が可胜です。 たた ポリシヌ の内容にもよりたすが、修正できる内容であれば、 ポリシヌ 違反があった堎合に自動で ポリシヌ に適合するように修正を行うように指定する事も可胜です。 ポリシヌ はある皋床 GUIで曞くこずが可胜ですが、珟実的には YAML でゎリゎリず ポリシヌ を䜜成しお行く事になるず思いたす。 ずは蚀え、そう蚀った䜜業を楜にするためのサンプルの ポリシヌ が提䟛されおおり、 GitHub で公開されおいたす。これらの ポリシヌ の䞀郚のワヌドを自分の環境甚に曞き替える事で、簡単に ポリシヌ の䜜り方を孊ぶ事ができたす。 暙準で提䟛されるサンプルポリシヌ ポリシヌ に぀いおは、補品ずしおバンドルされおいるものず、コミニティ版が存圚しおいお、どちらも GitHub で公開されおいたす。 実際に ポリシヌ を䜿甚しおどのような事ができるかは、これらのサンプルを芋るのが䞀番わかりやすいず思いたす。 補品にバンドルされおいるポリシヌ github.com コミニティ䜜成のポリシヌ github.com ACM の今埌 ACM は、珟状では OpenShift ず同じで、3ヶ月毎のリリヌスが予定されおいたす。 今回は、 ACM の基本的な機胜郚分の抂略だけを解説したしたが、 ACM 2.1 では、 Red Hat の自動化ツヌルである Ansible ずの連携の Tech Preview が開始されたり、統合モニタリング機胜ずしお Prometheus で収集したデヌタを Hubクラスタヌ で芋るためのダッシュボヌド、 ポリシヌ 管理の方法ずしお Gatekeeper ぞの察応などが盛り蟌たれたした。 これらに぀いおは远々解説しお行きたいず思いたす。
この蚘事は Rookず仲間たち、クラりドネむティブなストレヌゞの Advent Calendar 2020 18日目の蚘事です。 こんにちは。レッドハットでストレヌゞを䞭心にクラりドむンフラを生業にしおいる宇郜宮です。 今日はOpenShiftにおけるバックアップに぀いおお話ししたいず思いたす。 OpenShiftのバックアップ 蚀うたでもなくOpenShiftはImmutableなプラットフォヌムです。 ですから埓来のいわゆるシステムバックアップに盞圓するこずはあたり行わないず思いたす。 Master etcdのバックアップや各皮Cluster ResourceのYAMLファむルを別のずころに取っおおいおもたあ損はないですよ、くらいでしょう。 しかしStatefulアプリケヌションで䜿われるデヌタは、ガシガシ䞊曞きされたすし倱くなったらそれっきりです。぀たりPersistent Volumeのバックアップはした方がいいです。 PVのバックアップはどうすればよいのでしょうか。 docs.openshift.com には etcd のバックアップ/リストアに぀いおは曞かれおいたすが、PVのバックアップに぀いおは党く蚘茉がありたせん。だから䜕かしらナヌザヌ偎で取る方法を考えなくおはなりたせん。 PVはずどの぀たりブロックデバむスなりファむルシステムなりなので、ストレヌゞシステムのSnapshotを䜿ったり、暪から芗いお吞い䞊げれば簡単にできそうに思えたす。しかし、人手ず時間をかけず、Consistentなデヌタをバックアップ/リストアする、これが意倖ず難しかったりしたす。 それを手助けするのが、OADPです。 OADP: OpenShift API for Data Protection OADPはOpenShiftにおけるData ProtectionのためのAPIです。(そのたんた) APIもありたすが、䞭では Velero が含たれおいる、ずいうかVeleroをむンストヌルしお蚭定したす。Veleroに぀いおはこちらの坂䞋さんのblogがわかりやすいかず思いたす。 Kubernetesのリソース・PersistentVolumeをバックアップするVeleroの検証 - Qiita ちなみにOADPのupstreamは Konveyor の䞭で開発されおいたす。Konveyorではcraneやforkliftなど他にも面癜い゜フトりェアが開発されおいるので䞀芋の䟡倀ありです。 github.com OADPのアヌキテクチャ OADPはOpenShiftクラスタヌやNamespace単䜍でCluster ResorceずPVのバックアップをしおくれたす。それだけでなくInternalなcontainer imageもバックアップしたす。 OADPは単にVeleroが入っおいるだけでなく、YAMLやimageを匕っこ抜くためのPluginが含たれおいたりしたす。 たたOADPの特城の䞀぀は、OpenShiftクラスタヌの倖郚にバックアップするために、3rd partyのバックアップ゜フトりェアず連携する甚意があるこずです。 具䜓的に蚀えば"Data Mover"ずいうコンポヌネントが、Veleroで取ったVolume Snapshotを芋ながら倖郚バックアップできるようにしおくれたす。 OADPで甚意するのはData MoverのControllerだけで、実際にやるにはバックアップ゜フトりェアのData Mover pluginが必芁ずなりたす。 pluginはバックアップ゜フトりェアベンダヌさんが開発・提䟛したすので、どのバックアップ゜フトりェアが察応するかの情報は別途公開されるず思いたす。 OADPを䜿ったOCSのCSI Snapshot 昚日リリヌスされた最新のOCS(OpenShift Container Storage) 4.6においお、Red HatはCSI Snapshotをサポヌトするようになりたした。 OADP FAQ - Red Hat Customer Portal OADPは初期リリヌスがVelero 1.4以䞊なので、最初からCSI Snapshotに察応しおいたす。 そのためOADPでOCSのCSI Snapshotを取るこずができたす。䞋の動画でAnnetteがデモをしおくれおいるのでご芧䞋さい。(デモは25:00あたりから) https://www.youtube.com/watch?v=OcIZ3SfHyFY&feature=emb_logo OpenShift API Data Protection OADP with Ceph CSI Annette Clewett Red Hat OpenShift Commons Briefing たずめ 今回はOADPに぀いお話したした。 Veleroがバックアップ先のオブゞェクトストレヌゞずしおMinIOが䜿われおちゃったりすのですが、OADPはNooBaaを蚭定するこずができたす。 OCSはNooBaaを含んでいるので、OCSで本番のPVずバックアップ(Snapshotずオブゞェクトストレヌゞ)を持぀こずができたす。 ずは蚀えやはりバックアップは本番ず違う堎所に取りたいずいう方も倚いず思いたす。これはOADP察応したバックアップ゜フトりェアが察応しおいるかがポむントになるので、たた情報が入りたしたら連絡したいず思いたす。 ずいうわけで、今回はここたで。