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

TECH PLAY

Red Hat  - Open Innovation Labs

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

å…š900ä»¶

抂芁 Red Hat でコンサルタントをしおいる陳ずいいたす。 仕事の䞭でお客様にワヌクショップを行うための開発環境を提䟛する堎面があっお、怜蚎した結果、 ブラりザでhttpsでvscodeが䜿えるようにした。メリットは以䞋です。 お客様のセキュリティ察策で遮断される可胜性が䜎い 開発環境ずしおの利䟿性が高い extensionをむンストヌルしお䜿い勝手を良くするこずができる 開発環境の構築内容が自由 nodejs、python、事前にむンストヌルするextensionなどContainerfileで自由に倉曎可胜 構築方法 党䜓抂芁図 前提条件 䞋蚘ツヌルがむンストヌルされおいるこず podman podman-compose podman-desktop(option) コンテナ カスタマむズしたcode-serverのむメヌゞをビルド Containerfile FROM lscr.io/linuxserver/code-server:latest LABEL description="node-16.16.0の実行環境を構築した code-server container image" LABEL maintainer="author <abc@example.com>" SHELL ["/bin/bash", "-c"] RUN git clone https://github.com/anyenv/anyenv ~/.anyenv && \ echo 'export PATH="$HOME/.anyenv/bin:$PATH"' >> ~/.bashrc && \ echo 'eval "$(anyenv init -)"' >> ~/.bashrc && \ source ~/.bashrc && \ anyenv --version && \ anyenv install --force-init && \ anyenv install nodenv && \ source ~/.bashrc && \ echo 'eval "$(nodenv init -)"' >> ~/.bashrc && \ nodenv install 16.16.0 && \ nodenv global 16.16.0 && \ /app/code-server/bin/code-server --extensions-dir /config/extensions --install-extension firsttris.vscode-jest-runner && \ /app/code-server/bin/code-server --extensions-dir /config/extensions --install-extension dracula-theme.theme-dracula SHELL ["/bin/bash", "-c"] でbashに切り替えお、anyenvずnodenvを䜿っおnodeの実行環境を構築する。 最埌の2行はvscodeのextensionをむンストヌルしおいる。 code-server だけだず、 command not found ゚ラヌが出るため、フルパス指定した。 たた、 --extensions-dir でextersionのむンストヌル先を指定しないず、webブラりザでログむンした埌extensionが芋぀からない事象が生じた。 Containerfileず同じディレクトリで podman build --format docker --layers=false -t code-server-nodejs16:latest . を実行するず、カスタムむメヌゞがビルドされる。 --format docker を入れた理由は SHELL ["/bin/bash", "-c"] を有効にしたいから。このオプションを远加しなければpodmanは SHELL を識別しない。 カスタムむメヌゞのコンテナを起動 code-server.yml(post-composeのファむル) --- version: "2.1" services: code-server: image: localhost/code-server-nodejs16:latest container_name: code-server1 environment: - PUID=0 - PGID=0 - TZ=Asia/Tokyo - PASSWORD=password #optional # - SUDO_PASSWORD=password #optional # - SUDO_PASSWORD_HASH= #optional # - PROXY_DOMAIN=code-server.my.domain #optional - DEFAULT_WORKSPACE=/config/workspace #optional # volumes: # - ./config:/config ports: - 8443:8443 restart: unless-stopped environmentの各環境倉数の意味は こちら をご参考ください。 podman-compose -f code-server.yml up -d を実行するず、コンテナが起動される。 耇数起動したい堎合はcode-server.ymlをコピヌしお、container_nameずportsの蚭定を倉曎すればいい。 動䜜確認 http://localhost:8443 にアクセスしおパスワヌドを入力すれば、䞋蚘画面が衚瀺される サンプルコヌド https://github.com/coolboy0961/code-server 今埌蚘事の内容ず合わなくなるくらい倉曎しおいく可胜性あり SSL蚌明曞およびリバヌスプロキシ 前提条件 SynologyのNASを所有しおいるこず 倖からhttpsでNASのWeb Console画面にアクセスできおいるこず リバヌスプロキシの蚭定 リバヌスプロキシにWebSocketのサポヌトを远加しなければ、リバヌスプロキシ経由でcode-serverに繋げるず 1006 ゚ラヌが発生する。 詳现は こちら をご参考ください。 SSL蚌明曞の発行 リバヌスプロキシの蚭定ず蚌明曞を玐づける蚭定 動䜜確認 動䜜確認時に Error code: SSL_ERROR_BAD_CERT_DOMAIN がブラりザで衚瀺されたら、しばらく埅っおからブラりザを開き盎したりしお再床確認しおみおください。 リバヌスプロキシの蚭定ず蚌明曞を玐づける蚭定を反映するのに時間がかかる堎合がある。 たずめ 以䞊、Podmanでcode-serverのcontainerを起動しサヌビスずしお公開する方法でした。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat が䞻導しお開発しおいる JDK Flight Recorder を管理するツヌルである Cryostat に関するブログのたずめ蚘事です。 Cryostat 2.1 9つの素晴らしいCryostat 2.1のアップデート - 赤帽エンジニアブログ Cryostat 2.1での不要な通知をフィルタリング - 赤帽エンジニアブログ Cryostat 2.1の新ダウンロードAPIでJFRデータに高速にアクセス - 赤帽エンジニアブログ Cryostat 2.1のサイドカーレポートによるリソース消費量の削減 - 赤帽エンジニアブログ Cryostat 2.1によるKubernetes上のJMX認証情報の管理 - 赤帽エンジニアブログ CryostatとGraphQLによるインスタンス間のJFR管理 - 赤帽エンジニアブログ Cryostat 2.1でJFRデータを記録ラベルで整理する方法 - 赤帽エンジニアブログ Cryostat 2.1の新UIでJFRの自動化ルールを構築する方法 - 赤帽エンジニアブログ OpenShiftでCryostat 2.1にログインする方法:SSOを使う - 赤帽エンジニアブログ Cryostat 2.0 コンテナ型アプリケーションにカスタム JDK Flight Recorderイベントを注入 - 赤帽エンジニアブログ OperatorHub.ioからKubernetes上へCryostat Operatorをインストール - 赤帽エンジニアブログ JDK Flight Recorderデータへの高速アクセス方法 - 赤帽エンジニアブログ Cryostat 2.0によるカスタムJFRイベントテンプレート - 赤帽エンジニアブログ JDK Flight Recorderのコンテナでの自動化 - 赤帽エンジニアブログ CryostatによるカスタムターゲットのJavaモニタリング - 赤帽エンジニアブログ Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ Cryostat 2.0を発表:コンテナ用JDK Flight Recorder - 赤帽エンジニアブログ
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 9 awesome updates in Cryostat 2.1 | Red Hat Developer の翻蚳蚘事です。 皆さんは、Java Flight Recorderを䜿ったこずがあるのではないでしょうか。これは、Javaの動䜜状況を分析し、理解するための優れたツヌルです。開発䞭や本番で皌動しおいる䜜業量を把握するのに重宝したす。Cryostatは、コンテナずKubernetesに同じ機胜を提䟛するこずで、それをさらに掚し進めたす。ナヌザは、クラスタ党䜓のアプリケヌションを蚘録しお、アプリケヌションの挙動を理解できるようになりたす。たた、ナヌザは様々なAPIを利甚し、異なるフォヌマットで分析デヌタを取埗できたす。 RBAC ず OAuth のサポヌト Cryostat 2.1 では、Red Hat OpenShift Container Platform に内蔵された OAuth サヌバヌを䜿甚しお OAuth 認蚌ができたす。これにより、ナヌザは認蚌トヌクンを手動で貌り付ける必芁がなくなりたした。たた、耇数のナヌザが 1 ぀の名前空間で Cryostat を䜿甚しお JDK フラむトレコヌディングを管理する堎合、Cryostat 固有の RBAC パヌミッションを持぀ロヌルを䜜成し、そのロヌルをナヌザアカりントに関連付けるこずによっお、各ナヌザに固有の暩限を付䞎できたす。 詳しくは、「 OpenShiftでCryostat 2.1にログインする方法:SSOを使う - 赤帽エンジニアブログ 」をごらん䞋さい 自動化ルヌル Cryostat 2.1では、その自動化ルヌルのための党く新しいナヌザむンタフェヌスを備えおいたす。2.0リリヌスでは、我々は、API機胜ずしおこれを導入したした。自動化されたルヌルは、適切な適甚ルヌルを決定するための匷力か぀柔軟な刀定匏で、タヌゲットJVMに察する新しいJDKフラむトレコヌディングの䜜成を開始するために䜿甚できたす。これらのマッチ匏は、さたざたなアプリケヌション属性ポッド名、JMXポヌト、Kubernetesラベル、アノテヌションなどを参照したす。ルヌルが䜜成されるず、Cryostatはルヌルで定矩されたJFRむベントテンプレヌトを䜿甚しお新しい蚘録を遞択し、開始したす。 詳しくは、「 Cryostat 2.1の新UIでJFRの自動化ルールを構築する方法 - 赤帽エンジニアブログ 」をごらん䞋さい 蚘録のラベル ナヌザヌは、Cryostatが管理するJDKフラむトレコヌディングにメタデヌタやカスタムラベルを添付できたす。蚘録のラベルは、蚘録に関連するメタデヌタを添付したり、ク゚リ䞭に蚘録を識別したり、同じKubernetesラベルを含む耇数の蚘録に察しお操䜜を実行するために䜿甚できたす。 詳しくは、「 Cryostat 2.1でJFRデータを記録ラベルで整理する方法 - 赤帽エンジニアブログ 」をごらん䞋さい GraphQL サポヌト Cryostat 2.1には、新しいGraphQL APIも含たれおいたす。これにより、ナヌザはタヌゲットJVMず、それに属する皌働䞭たたは保管された蚘録のク゚リを䜜成できたす。Cryostat に保管されおいる蚘録は、皌働䞭たたは保管䞭の蚘録を開始、停止、保管、削陀するための凊理ず組み合わせお、Cryostat ず JDK Flight Recorder の呚囲に自動化を構築するための匷力なク゚リを䜜成できたす。 詳しくは、「 CryostatとGraphQLによるインスタンス間のJFR管理 - 赤帽エンジニアブログ 」をごらん䞋さい Java Management Extensions コンテナ化されたJVM䞊でJava Management ExtensionsJMX認蚌を有効にしおいる堎合、CryostatはタヌゲットJVM䞊のJDKフラむトレコヌディングにアクセスする前にJMX認蚌情報を入力するよう促したす。Cryostatコン゜ヌルのAutomated rules、Recordings、Eventsタブでは、JMX認蚌が有効なタヌゲットで既存のフラむトレコヌディングを衚瀺したり、蚘録操䜜を実行するために、JMX認蚌情報を入力する必芁がありたす。 詳しくは、「 Cryostat 2.1によるKubernetes上のJMX認証情報の管理 - 赤帽エンジニアブログ 」をごらん䞋さい サむドカヌ・レポヌト・コンテナ Cryostat 2.1では、JDKフラむトレコヌディングの自動分析レポヌトを生成するために、サむドカヌ・レポヌト・コンテナを䜿甚するオプションが導入されおいたす。以前は、レポヌト生成はメむンのCryostatコンテナによっおのみ凊理されたした。レポヌト生成を サむドカヌ・コンテナに委ねるこの新しいオプションにより、ナヌザヌはより効率的にリ゜ヌスを配眮しやすくなりたす。 詳しくは、「 Cryostat 2.1のサイドカーレポートによるリソース消費量の削減 - 赤帽エンジニアブログ 」をごらん䞋さい JSON web トヌクン (JWT) Cryostat 2.1では、JWTダりンロヌドを容易にするために新しいAPIハンドラを実装したした。ナヌザがWebクラむアントを通じおファむルをダりンロヌドするこずを決定するず、必芁な認蚌ヘッダず芁求されたリ゜ヌスを特定するマルチパヌトフォヌム属性を含むPOSTリク゚ストをCryostat゚ンドポむントに送信したす。APIハンドラは、この情報をJWTトヌクンに゚ンコヌドし、察称的に暗号化し、トヌクンに関連付けられたリ゜ヌスのURLを返したす。 通知 Cryostat は、Cryostat バック゚ンドずブラりザで動䜜する Web クラむアントの間で WebSocket 接続を䜿甚し、様々な動䜜や状態の倉化が発生したずきに通知を衚瀺したす。Cryostat 2.1では、発生しうるすべおの抂念的な操䜜や 状態倉化に察しおWebSocket通知が発行されたすが、Cryostatの以前のバヌゞョンでは、ある皮の掻動や状態倉化に察する通知が含たれおいたせんでした。圢匏もより䞀貫しおおり、各通知タむプに明確なタむトルず説明を提䟛しおいたす。 詳しくは、「 Cryostat 2.1での不要な通知をフィルタリング - 赤帽エンジニアブログ 」をごらん䞋さい Helm charts Cryostat 2.1がHelmチャヌトを䜿っおむンストヌルできるようになりたした。Cryostat Operatorは本番環境でのお勧めのむンストヌル方法ですが、Cryostat Helm chartはデモ目的でCryostatを詊すのに最適で、できるだけ倚くのナヌザに察応できるよう、暩限が少なく、柔軟に蚭蚈されおいたす。Cryostat Helm Chartは、OpenShift 4.8以降にデフォルトで含たれおいたす。 このテヌマに぀いおは、今埌の赀垜゚ンゞニアブログの蚘事で詳しく玹介する予定です。 Cryostatのサポヌトを受けるには Cryostat のサポヌトは、Red Hat Enterprise Linux、Red Hat OpenShift、および Red Hat Runtimes のサブスクリプションを通じお Red Hat のお客様に提䟛されたす。Red Hat ずその䞖界的なパヌトナヌネットワヌクが提䟛する䞖界クラスのサポヌトを享受する方法の詳现に぀いおは、お近くの Red Hat 担圓者たたは Red Hat 営業にお問い合わせください。 今埌は、Red Hatの補品アップデヌトずサポヌトラむフサむクルに沿っお、Cryostatずその他のランタむムのサポヌトが期埅できたす。 Red Hat RuntimesずCryostatのサポヌトを担圓する人々 この゜フトりェアは、Red Hat Runtimes のプロダクトおよび゚ンゞニアリングチヌムず Cryostat アップストリヌムコミュニティによっお制䜜されたした。この制䜜には、䜕時間もの開発、広範なテスト、文曞䜜成、そしおお客様、パヌトナヌ、Cryostat 開発者の Red Hat コミュニティずの協力があり、倧小さたざたな貢献を取り蟌みたした。私たちは、あなたがそれを䜿うこずを遞択したこずを嬉しく思い、それがあなたの期埅を䞊回るこずを望みたす Red Hat Runtimesの詳现 Red Hat Runtimes は、クラりドネむティブアプリケヌション開発の必芁性を持぀開発者、アヌキテクト、IT リヌダヌ向けに、包括的なフレヌムワヌク、ランタむム、プログラミング蚀語のセットを提䟛したす。ビゞネス゜リュヌションの開発ず提䟛を加速させるために蚭蚈されおいたす。Red Hat Runtimes を䜿甚しおマむクロサヌビスを䜜成するために、さたざたなランタむムず実珟機胜が甚意されおいたす。
こんにちは、Red Hatで゜リュヌションアヌキテクトをしおいる石川です。 今回はROSAで䜿甚するこずができるスポットむンスタンスに぀いお玹介しおいきたいず思いたす。 そもそもROSAずは䜕かに぀いお知りたいずいう方はこちらの過去蚘事をご参照䞋さい。 rheb.hatenablog.com スポットむンスタンスの抂芁ずROSAクラスタぞの远加 スポットむンスタンスはAWSが提䟛するEC2むンスタンスの提䟛圢態の䞀぀であり、䌑止䞭のEC2キャパシティヌを䜿甚するこずで、オンデマンド䟡栌より䜎料金で利甚するこずが特城のサヌビスです。オンデマンド䟡栌ず比范し、最倧で90%ものコスト削枛が可胜ずなるそうです。 䞀方でスポットむンスタンスは皌働䞭に䞭断Terminateされる可胜性があり、䜿甚する堎合は適切なワヌクロヌドを遞択する必芁がありたす。 実行が長時間に亘るゞョブや、ステヌトフルなアプリケヌションなどに察しおは利甚を避けるのが良いでしょう。 スポットむンスタンス自䜓の詳现な説明に぀いおは AWSのサむト をご確認䞋さい。 さお、このスポットむンスタンスですがROSAでも䜿甚するこずができたす。 ROSAでは OCMコン゜ヌル から自身が構築したクラスタに察しおの蚭定やアドオンの远加などができるようになっおおり、その䞭の䞀぀にWorker Nodeの远加や削陀を行う Machine pools ずいうタブがありたす。 クラスタを構築した段階ではDefaultのMachine poolが存圚するだけですが、この画面から新たにMachine poolを远加するこずができ、その際にスポットむンスタンスを遞ぶこずが可胜です。 䜿甚するむンスタンスタむプや台数などを蚭定した埌、 Use Amazon EC2 Spot Instances にチェックを入れるず、远加するむンスタンスをスポットむンスタンスにするこずができたす。 スポットむンスタンスの蚭定ずしお、 Use On-Demand instance price か、 Set maximum price の二぀からどちらかを遞択したす。 Use On-Demand instance price は文蚀だけを芋るずオンデマンドむンスタンスの䟡栌がスポットむンスタンスに適甚されるように芋えたすが、実際はスポットむンスタンスの利甚䟡栌が倉動し高くなった堎合に、オンデマンドむンスタンスの䟡栌ず同じになるこずを蚱容するずいう蚭定です。 䞀方の Set maximum price は自分で1時間あたりのスポットむンスタンスの䟡栌の最倧倀を蚭定するこずができたす。蚭定する堎合、 スポットむンスタンスの料金履歎 などを参考にするず良いでしょう。 ただ埌者の堎合、蚭定した䟡栌を超えおしたうずむンスタンスが起動できなくなるため、基本的には Use On-Demand instance price を利甚するこずをおすすめしたす。 あずは Add machine pool するだけでROSAクラスタにスポットむンスタンスを远加できたす。非垞に簡単ですね。 䞀点気を付けたいポむントずしお、䞀床スポットむンスタンスずしおMachine poolを䜜成するず埌からその蚭定を倉曎するこずはできないため泚意したしょう。 䞭断に察しおの察凊 スポットむンスタンスを䜿う堎合に怜蚎する必芁があるのがむンスタンスの䞭断に察しおどのように察凊するかです。 以䞋のAWSのドキュメントを芋るず、䞭断の通知は実際にスポットむンスタンスが停止、たたは終了が行われる2分前に行われるずありたす。 docs.aws.amazon.com 通知は、Amazon EventBridgeを䜿甚しおむベント情報ずしお受け取るか、あるいは むンスタンスメタデヌタ から確認するこずができたす。 もしこの通知を無芖した堎合、該圓のむンスタンスがいきなりシャットダりンするような圢ずなり、その䞊で皌働するコンテナが正垞に凊理を終了できず、アプリのダりンタむムが発生する等、様々な問題が起こる可胜性がありたす。 そのため、ROSAではこの通知を自動で確認するための仕組みずしお、 machine-api-termination-handler ずいうDaemonSetが、スポットむンスタンス䞊で皌働したす。 起動したスポットむンスタンスには machine.openshift.io/interruptible-instance: '' ずいうラベルが付䞎されおおり、このラベルを芋お察象のノヌドを刀断しおいたす。 各ノヌドにデプロむされた machine-api-termination-handler のPodは、5秒に䞀回むンスタンスメタデヌタにアクセスし、自ノヌドが䞭断の察象ずなっおいるかを確認したす。 # machine-api-termination-handler Podのログ䞭断察象ではないこずが出力されおいる I0908 14:49:28.434019 1 handler.go:119] "msg"="Instance not marked for termination" "namespace"="openshift-machine-api" "node"="ip-10-0-196-218.us-east-2.compute.internal" I0908 14:49:33.433734 1 handler.go:119] "msg"="Instance not marked for termination" "namespace"="openshift-machine-api" "node"="ip-10-0-196-218.us-east-2.compute.internal" I0908 14:49:38.433317 1 handler.go:119] "msg"="Instance not marked for termination" "namespace"="openshift-machine-api" "node"="ip-10-0-196-218.us-east-2.compute.internal" ... 泚意点したいのが、スポットむンスタンスにTaintを付䞎するず machine-api-termination-handler Podが起動できなくなっおしたいたす。そのためスポットむンスタンスで特定のPodのみ動かしたい堎合はNodeAffinity等を利甚するのが良いでしょう。 むンスタンスメタデヌタを確認した結果、䞭断察象であるず分かった堎合、 machine-api-termination-handler はNodeの .status.conditions にTerminatingであるずいう情報を远加したす。 - type: Terminating status: 'True' lastHeartbeatTime: '2022-09-07T09:02:32Z' lastTransitionTime: '2022-09-07T09:02:32Z' reason: TerminationRequested message: The cloud provider has marked this instance for termination 䞊蚘が远加されるず、 machine-healthcheck-controller が察象のノヌドをUnhealthyず刀断し、Drain凊理が行われたす。これにより察象のノヌドはスケゞュヌル察象倖ずなり、このノヌドで皌働しおいたPodに察しお正垞な終了凊理が行われたす。 スポットむンスタンスに限った話ではないですが、皌働しおいるPodを適切に終了するためには、PodのpreStopやterminationGracePeriodSecondsなどを適切に蚭定したしょう。 スポットむンスタンスの䞭断を実隓する ここたでROSAではどのようにスポットむンスタンスの䞭断に察凊しおいるのかに぀いおご玹介したした。 基本的に、スポットむンスタンスで動かすワヌクロヌドを適切に遞択する、それらに察しお適切なPodの終了凊理が実斜できるよう蚭定を行う、ずいう二点が守れおいれば、急にむンスタンスが䞭断された堎合も問題ないず考えられたすが、そうは蚀っおも実際に正しく蚭定ができおいるかに぀いお䞍安を感じられる方は倚いかず思いたす。 そういう時に圹立぀のがAWSが提䟛する AWS Fault Injection Simulator ずいうサヌビスです。 このサヌビスを䜿うず意図的にスポットむンスタンスの䞭断を発生させるこずができるので、その際にROSAがどういった挙動を取るのかずいったこずを確認するこずができたす。 以䞋のドキュメントでは、チュヌトリアルずしおAWS FISを䜿甚しおスポットむンスタンスを䞭断する方法が玹介されおいたす。 docs.aws.amazon.com スポットむンスタンスを利甚する際はこちらに぀いおも利甚を怜蚎しおみおはいかがでしょうか。 たずめ 今回はROSAぞのスポットむンスタンスぞの远加に぀いおご玹介したした。 ROSAではスポットむンスタンスを利甚する際に起こりうる䞭断に察しお、デフォルトで適切に察応するための仕組みを提䟛しおいたす。 スポットむンスタンスは䞊手く利甚するこずでコストを倧きく抑えるこずもできたすので、今回の内容を参考に是非お詊しください。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 Filter unwanted notifications in Cryostat 2.1 | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Java Flight Recorder (JFR)でJavaアプリケヌションを監芖する際、垞に通知を発行しおきたした。Cryostatのバヌゞョン2.1では、提䟛される情報の量を増やし、衚瀺されるものに察するナヌザの制埡を匷化し、Cryostatの性胜を向䞊させる通知のための新しい実装ずむンタフェヌスがありたす。 Cryostat むンタフェヌス 新しいWebSocketむンタフェヌスのおかげで、Cryostatは以前報告されなかったむベントに察しお通知を発行したす。このように、デフォルトでは、より倚くの通知がナヌザぞ報告されたす。䟋えば、新しい自動ルヌル機胜は、䞀床に倚くのむンスタンスにルヌルを远加し、各ルヌルが䜜成たたは削陀されたずき、たたルヌルが蚘録を開始、蚘録をアヌカむブにコピヌ、たたはアヌカむブから叀い蚘録を削陀するずきに通知を発行したす。図1に瀺すように、通知の量は特に膚倧になる可胜性がありたす。 図1 Cryostatは膚倧な数の通知を届けるこずができる。 この問題に察凊するため、Cryostat 2.1では、新しい蚭定ペヌゞ図2を通じお、ナヌザが受け取る通知の有効化ず無効化を行う機胜を提䟛したす。ナヌザは、カテゎリごずに通知を遞択したり、ワンクリックですべおの通知を有効たたは無効にできたす。 図2Cryostat 2.1のSettingsビュヌには、各通知カテゎリの切り替えが可胜なNotificationsの機胜が搭茉 䟋えば、自動ルヌルのバックグラりンドでの掻動によっお発せられる可胜性のあるすべおの通知を無効にするには、次のカテゎリヌをオフに切り替えたす。 Recording Created (自動化ルヌルがタヌゲットに新しい蚘録を䜜成するずきに発行) Recording Saved (自動化されたルヌルが皌働䞭の蚘録を保管するずきに発行) Archived Recording Deleted (自動化されたルヌルが過去の蚘録を削陀したずきに発行) 実装ず性胜 Cryostat は、Cryostat バック゚ンドずブラりザで動䜜する Web クラむアントの間で WebSocket 接続を䜿甚し、様々な操䜜や 状態の倉化が発生したずきに通知を衚瀺したす。Cryostat 2.1では、発生しうる党おの抂念的なアクションや状態倉化に察しおWebSocket通知が発行されたす。以前のバヌゞョンのCryostatでは、䞀郚のタむプの操䜜や 状態倉化に察する通知が含たれおいなかったのに察しお、今回のCryostatでは、そのような通知が含たれおいたす。曞匏もより䞀貫しおおり、各通知タむプに詳现なタむトルず説明がありたす。 通知カテゎリを無効にするず、メッセヌゞは WebSocket 接続を介しお送信されたすが、Web クラむアントのポップアップ通知は単に衚瀺されなくなりたす。ナヌザが遞択した蚭定は、完党に Web クラむアント偎で行われ、ブラりザのロヌカル ストレヌゞに氞続化されたす。Web クラむアントは䟝然ずしお通知情報を受信し、メモリに保持したす。したがっお、通知カテゎリを再床有効にした堎合、そのカテゎリで以前に発せられた通知は、ただあなたが読むこずができるようになりたす。このようにしお、Cryostatは、必芁に応じお調べるために操䜜ず状態倉化のログを保存しながら、通知でナヌザむンタフェヌスを乱雑にするのを避けたす。 泚意 : 通知カテゎリは、自動化されたルヌルによっお実行された操䜜ず、ナヌザがAPIリク゚ストを経由しお別のクラむアントによっお察話的に実行された操䜜ずを区別しおいたせん。これらの通知を無効にするず、自動化されたルヌルが実行したずきだけでなく、すべおのケヌスで無効になりたす。 たた、Web クラむアントのパフォヌマンスも、通知を䜿甚しお皌働䞭の蚘録、保管された蚘録、およびテンプレヌトなどのリ゜ヌスの状態を曎新するこずで改善されたした。たずえば、皌働䞭の蚘録を削陀した堎合、Web クラむアントはバック゚ンドからの察応する通知を䜿甚しお、該圓する蚘録を削陀するこずで皌働䞭の蚘録リストを曎新するようになりたした。その他の状態の曎新も、同様の方法で行われたす。以前は、この䜜業の流れは、バック゚ンドにHTTP GETリク゚ストを送信しお、皌働䞭の蚘録党䜓の曎新された䞀芧を取埗し、この䞀芧を䜿甚しお、ナヌザに衚瀺される叀い䞀芧を完党に眮き換える必芁がありたした。珟圚、Web クラむアントは、削陀された 1 ぀の蚘録項目のみを曎新するだけです。 たずめ Cryostatの通知方法は、バヌゞョン2.1でより良く構造化され、より充実しおいたす。それはあなたが望む通知を取埗し、あなたが邪魔に感じるかもしれない倚くの他のものを陀倖するために、あなたのブラりザで少し準備を必芁ずしたす。しかし、䞀貫性ず性胜の改善は、より良いナヌザむンタフェヌスを生み出したす。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 Access JFR data faster with Cryostat 2.1's new download APIs | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Kubernetes䞊でJDK Flight Recorderのデヌタを管理するためのツヌルです。この蚘事では、JSON Web Token (JWT) に基づく新しいダりンロヌド API が、Cryostat 2.1 Web クラむアントにおいお、より応答性が高く効率的なダりンロヌドの流れを促進するのに圹立぀こずを説明したす。 Cryostat Webクラむアントのダりンロヌドの流れ 以前は、Web クラむアントの蚘録、レポヌト、テンプレヌトなどのリ゜ヌスのダりンロヌドの流れは、アプリケヌションがバック゚ンドに適切な認蚌ヘッダヌ付きの HTTP GET 芁求を行い、返されたファむルをブラりザのメモリにダりンロヌドし、その blob に察しおロヌカルオブゞェクト URL を䜜成し、その URL をアンカヌ芁玠 <a> タグに割り圓おおナヌザの応答を促すずいうものでした。ファむルサむズによっおダりンロヌド速床が決たり、「ファむルを保存する」プロンプトが衚瀺されるタむミングも決たりたした。このプロセスが完了するず、ファむルがすでにナヌザヌのマシンに転送されおいるにもかかわらず、ナヌザヌはファむルをディスクに保存するか、ダりンロヌドをキャンセルするかを尋ねられたす。 Cryostat 2.1では、ほずんどのブラりザで利甚可胜なHTML 5の download 属性を䜿甚するこずにより、ダりンロヌドの流れを改良しおいたす。具䜓的には、アンカヌ芁玠を䜜成し、 href 属性にバック゚ンドが提䟛するリ゜ヌスのURLを蚭定し、 download 属性にファむル名を蚭定したす。アンカヌをクリックするず、"Save File" ずいうプロンプトが衚瀺されたす (図 1 参照)。 図1「Save File」プロンプトで、蚘録ファむルをディスクに保存するかどうかを決定可胜 ナヌザが「ファむルを保存」をクリックするず、ファむルは盎接ディスクにダりンロヌドされたす。ナヌザが「キャンセル」をクリックするず、ファむルはダりンロヌドされたせん。たた、ブラりザのメモリに䜕もダりンロヌドされないため、「ファむルを保存」ダむアログの衚瀺時間がファむルサむズに䟝存しなくなるずいうメリットもありたす。 しかし、 href 属性の制限ずしお、リ゜ヌスを取埗するための暩限なしにURLず䞀緒にヘッダを提䟛するこずは䞍可胜です。そこでJSONりェブトヌクンの出番です。 JSON Web Tokenによるダりンロヌドの流れ改善方法 JWTは、サヌバリク゚ストを送信するナヌザが、セッション内で以前に認蚌されたすなわち、ログむンした同じナヌザであり、芁求されたリ゜ヌスぞのアクセス暩も持っおいるこずを保蚌する認蚌情報です。JWTは、認蚌メタデヌタを含むJSONデヌタ本䜓で構成されおいたす。 Cryostat 2.1では、JWTダりンロヌドを容易にするために新しいAPIハンドラが実装されたした。ナヌザがWebクラむアントを通しおファむルをダりンロヌドするずき、POSTリク゚ストは必芁な認蚌ヘッダず芁求されたリ゜ヌスを特定するマルチパヌトフォヌム属性を含み、 /api/v2.1/auth/token ゚ンドポむントに送信されたす。APIハンドラは情報をJWTトヌクンに゚ンコヌドし、それを察称的に暗号化しお、トヌクンに関連付けられたリ゜ヌスURLを返したす。これは前述の href 属性が蚭定されおいる URL です。アンカヌ芁玠がクリックされるず、ファむルリ゜ヌスぞの GET リク゚ストが JWT トヌクンを䜿っお認蚌され、 href 属性でヘッダヌを提䟛できない問題が解決されたす。 JWTトヌクンに関連するすべおのGETリク゚ストは、この目的のために特別に蚭蚈された新しいバヌゞョン2.1 APIハンドラによっお凊理されたす。ブラりザ関連のパフォヌマンスが向䞊したため、Webクラむアントではこれらを広範に䜿甚しおいたす。しかし、ナヌザヌが䜜成した自動ワヌクフロヌなどの他のAPIクラむアントは、新しいバヌゞョン2.1ハンドラず機胜的に同じであるJWTトヌクンを生成する必芁がないため、元のバヌゞョン1のダりンロヌドAPIを匕き続き䜿甚できたす。 図2は、Webクラむアントからの蚘録ダりンロヌド芁求を受信したずきのCryostatコンテナのメむンログです。 図2図1の蚘録ダりンロヌドのリク゚ストは、ここに瀺す2぀のHTTPリク゚ストになりたす。 たずめ 新しいJWTベヌスのダりンロヌドAPIにより、CryostatのWebクラむアントは、ナヌザに改善されたリ゜ヌスのダりンロヌドの流れを提䟛できたす。Cryostatの詳现に぀いおは、 cryostat.io を参照しおください。質問、コメント、フィヌドバックは、 GitHub で私たちず぀ながるか、私たちの メヌリングリスト に参加しおください。 赀垜゚ンゞニアブログでCryostatのチュヌトリアルをもっず芋る。 ContainerJFR入門: コンテナのためのJDK Flight Recorder - 赤帽エンジニアブログ Cryostat 2.1の新UIでJFRの自動化ルールを構築する方法 - 赤帽エンジニアブログ Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 Eat up fewer resources in Cryostat 2.1 with sidecar reports | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Kubernetes䞊でJDK Flight Recorderのデヌタを管理するためのツヌルです。Cryostatのバヌゞョン2.1では、JDKフラむトレコヌディングの自動分析レポヌトを生成するために、サむドカヌレポヌトコンテナを䜿甚するオプションが導入されおいたす。以前は、メむンのCryostatコンテナがレポヌト生成を凊理しおいたした。レポヌト生成はリ゜ヌス集玄的な操䜜であり、その結果、ナヌザヌはピヌク時のリ゜ヌス芁求を満たすためにCryostatコンテナを過剰に割り圓おおいるこずに気づくかもしれたせん。レポヌト生成をしおいない堎合、それらのリ゜ヌスは逆に䜿甚されずに終わるかもしれたせん。 レポヌト生成をサむドカヌコンテナに委ねるこの新しいオプションにより、ナヌザはより効率的にリ゜ヌスを準備しやすくなりたした。レポヌト䜜成が重芁でない堎合、メむンの Cryostat コンテナは、Web サヌバヌや HTTP および JMX を介したさたざたな軜量操䜜を含めお、小さなリ゜ヌスしか必芁ずしたせん。ナヌザは、レポヌト生成の䞀連の䜜業に基づいお、サむドカヌ・レポヌト・コンテナに適宜リ゜ヌスを割り圓お、そのコンテナのレプリカを任意の数だけ起動させるこずができたす。 本蚘事では、Red Hat OpenShift䞊でCryostatを䜿甚しお分析レポヌト自動生成のためのサむドカヌレポヌトコンテナレプリカを蚭定するプロセスに぀いお説明したす。 サむドカヌコンテナを䜿甚するための前提条件 開始するには、Cryostat Operator がむンストヌルされた皌働䞭の OpenShift たたは Kubernetes クラスタを䜿甚したす。OpenShift たたは Kubernetes クラスタにただアクセスできない堎合は、Red Hat OpenShift Local を詊しおみおください。この蚘事では、Cryostat Operator ず察話するために OpenShift UI を利甚したす。 次に、Java Management Extensions (JMX) を有効にし、Cryostat Operator ず同じ名前空間で動䜜するように公開した、コンテナ化した Java アプリケヌションをデプロむしたす。サンプルQuarkusアプリケヌションを䜜成しおこの芁件を満たす方法の詳现に぀いおは、赀垜゚ンゞニアブログの蚘事『 Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ 』を参照しおください。 サむドカヌ・レポヌト・コンテナを有効にしお、Cryostatリ゜ヌスを䜜成 Cryostat Operator がむンストヌルされるず、サむドカヌ・レポヌト・コンテナのセットアップは簡単な䜜業になりたす。OpenShift Web コン゜ヌルの Installed Operators タブにある Cryostat Operator に移動し、Cryostat リ゜ヌスのむンスタンスを䜜成したす (図 1 を参照)。 図1Cryostatリ゜ヌスを䜜成するためにCreate instanceを遞択 図2に瀺すように、様々な蚭定項目がある Create Cryostat ペヌゞが衚瀺されたす。 図2Cryostatリ゜ヌスの蚭定オプション 䞋に移動しお Report Options を遞択し、次に Resources を遞択したす (図 3 を参照)。 図3レポヌト生成の蚭定オプションを遞択 次に、デプロむするレポヌト・サむドカヌ・コンテナのレプリカ数を遞択し、各レプリカの Limits および Requests リ゜ヌスを蚭定したす。デフォルトのレプリカ数は0であり、メむンのCryostatコンテナがサブプロセスを通じおレポヌト生成を凊理するこずを意味したす。このサブプロセスのデフォルトの最倧ヒヌプサむズは200MiBですが、必芁に応じおナヌザが䞊限を調敎できたす。少なくずも 1 ぀のレポヌトサむドカヌコンテナレプリカを芁求するず、 Sub Process Max Heap Size フィヌルドは無芖されたす。 この䟋では、図 4 に瀺すレポヌトオプションの蚭定を䜿甚しお Cryostat むンスタンスを䜜成する必芁がありたす。 図4Replicas、Limits、Requestsフィヌルドをこのように蚭定し、䞋に移動しおCreateを遞択 自動解析レポヌトを䜜成するには、Cryostat Web クラむアントに移動したす。Cryostat Operatorペヌゞの Installed Operators から、 Cryostat タブを遞択し、 cryostat-sample リ゜ヌスを遞択したす。衚瀺されたペヌゞで、WebクラむアントのURLを確認できたす(図5)。 図5アプリケヌションのURLに埓っお、Cryostat Webクラむアントにアクセス プロンプトが衚瀺され、Webクラむアントで認蚌するためのクラスタの認蚌情報が芁求されたす。ログむンしたら、タヌゲットアプリケヌションを遞択し自䜜でも、䞊蚘のリンク先のサンプルQuarkusアプリケヌションでも、 Recordings タブに移動したす図6。䞀定時間のカスタムフラむト レコヌディングを䜜成したす。蚘録終了埌、蚘録の自動分析レポヌトを芁求したす。これらのステップの詳现な手順に぀いおは、 Cryostatの䜿甚に関するガむド を参照しおください。 図6自動分析レポヌトをリク゚ストするず、サむドカヌコンテナでのレポヌト䜜成が開始 サむドカヌ・レポヌト・コンテナがレポヌト生成を凊理したこずを再確認するには、OpenShift コン゜ヌルに戻り、 Workloads タブの䞋の Pods に移動したす。ここで、sidecar レポヌトコンテナが含たれるポッドを芋぀けられたす (図 7 を参照)。 図7cryostat-sample-reportsポッドを遞択したす。ポッド名には、ランダムに生成された英数字の文字列も付加 次に、図 8 に瀺す Logs タブに移動し、ログストリヌムを䞀時停止したす。次に、繰り返される HTTP GET /health リク゚ストを䞋に移動し、サむドカヌ・レポヌト・コンテナが Cryostat メむン・コンテナからの HTTP リク゚ストを受信し、実行したこずを確認するログ・メッセヌゞを探したす。 図8サむドカヌレポヌトコンテナは、生成されたレポヌトに察するメむンのCryostatコンテナからの芁求を受信し、応答 たずめ 解析レポヌトの自動生成にサむドカヌレポヌトコンテナを䜿甚するこずで、ナヌザヌはCryostat甚のリ゜ヌスを効率的に甚意できたす。Cryostatの詳现に぀いおは、 cryostat.io を参照しおください。質問、コメント、フィヌドバックは、 GitHub で私たちず぀ながるか、私たちの メヌリングリスト に参加しおください。 赀垜゚ンゞニアブログでCryostatのチュヌトリアルをもっず芋る。 ContainerJFR入門: コンテナのためのJDK Flight Recorder - 赤帽エンジニアブログ Cryostat 2.1の新UIでJFRの自動化ルールを構築する方法 - 赤帽エンジニアブログ Cryostatを使用するためのJavaアプリケーションの設定 - 赤帽エンジニアブログ
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 Manage JMX credentials on Kubernetes with Cryostat 2.1 | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Kubernetes䞊のJDK Flight Recorderのデヌタを管理するためのツヌルです。コンテナ化されたJava仮想マシンJVM䞊でJava Management ExtensionsJMX認蚌を有効にしおいる堎合、CryostatはタヌゲットJVM䞊のJDKフラむトレコヌディングにアクセスする前にJMX認蚌情報を入力するよう促したす。Cryostatコン゜ヌルの Automated Rules 、 Recordings 、 Events タブでは、JMX認蚌情報を入力する必芁がありたす。これは、JMX認蚌を有効にしたタヌゲットで既存のフラむトレコヌディングを衚瀺したり録画操䜜を実行したい堎合に必芁です。自動ルヌルなどのCryostatの機胜で耇数のタヌゲットJVMを監芖する堎合、Cryostatが各タヌゲット接続のJMX認蚌情報を蚘憶し再利甚するこずを望むでしょう。 Cryostatは、各タヌゲットの接続URLずしお知られる䞀意のJMXサヌビスURLに埓っお、JMX認蚌情報を保存したす。基盀ずなるJVMむンスタンスの倉曎、タヌゲット゚むリアスの倉曎、タヌゲットアプリケヌションの再起動があっおも、Cryostatは、保存されたJMX認蚌情報を、認蚌情報が関連付けられおいる接続URLに適甚したす。 タヌゲットアプリケヌション䞊で自動的に蚘録を開始し保存する自動化ルヌルを開始したい堎合、ルヌルを䜜成する前に、 Security タブで遞択した各タヌゲットの認蚌情報を保存しなければなりたせん。Cryostat に JMX 認蚌を必芁ずするタヌゲットの認蚌情報がない堎合、ルヌルはタヌゲット JVM に接続できず、蚘録は開始されたせん。 ここでは、CryostatのWeb UIを䜿甚しお、保存されたJMX認蚌情報を管理する方法を玹介したす。 CryostatにJMXの認蚌情報を保存する方法 たず、 Security タブに移動したす。Stored Credentials 衚は、Cryostat が JMX 認蚌情報を保存しおいるすべおのタヌゲットを䞀芧衚瀺したす。図 1 に瀺すように Add をクリックしお、垌望するタヌゲット JVM の JMX 認蚌情報を入力したす。 図1JMXの認蚌情報を保存するために「Security」タブに移動 図2に瀺すように、タヌゲットJVMを遞択し、JMX認蚌情報を入力するよう促す画面が衚瀺されたす。 図2JMXの認蚌情報を入力 たた、図3に瀺すように、 Recordings たたは Events タブに移動しお、JMX認蚌を有効にしたタヌゲットJVMを遞択するず、JMX認蚌情報が自動的に保存されたす。同様の認蚌画面が衚瀺され、JMX認蚌情報を入力するよう促されたす。認蚌情報は自動的に保存され、「Stored JMX Credentials」衚に衚瀺されたす。認蚌情報は自動的に蚘憶され、い぀でも削陀できたす。 図3このJMX認蚌ポップアップ画面は、タヌゲットJVMの蚘録を閲芧する前に認蚌が必芁な堎合に衚瀺される タヌゲットに認蚌情報を保存するず、タヌゲット゚むリアスず接続 URL が Security タブの Stored Credentials 衚に衚瀺されたす。これは、図 4 に瀺すように、Cryostat がそのタヌゲットの JMX 認蚌情報を保存しおいるこずを瀺したす。繰り返しになりたすが、特定のタヌゲットに保存された認蚌情報を関連付ける堎合、接続 URL だけが重芁です。タヌゲット゚むリアスはい぀でも自由に倉曎でき、Cryostat が保存された JMX 認蚌情報を芋぀け、タヌゲット JVM に適甚する胜力に圱響を䞎えるこずはありたせん。 セキュリティ察策ずしお、登録埌は実際の認蚌情報を確認できたせん。既存のタヌゲットの保存された認蚌情報を眮き換えたい堎合、叀い認蚌情報項目を削陀し、叀い項目ず同じ接続 URL で新しい項目を远加できたす。保存されおいる認蚌情報を削陀するには、タヌゲットの暪にあるチェックボックスを遞択し、 Delete をクリックしたす。保存されおいるすべおのJMX認蚌情報を削陀するには、衚の䞊郚にあるヘッダのチェックボックスを遞択し、 Delete をクリックしたす。 図4保存されたJMX認蚌情報の衚 たずめ この蚘事では、コンテナ化されたJVMに接続する際にCryostatが再利甚するためのJMX認蚌情報を保存する方法に぀いお説明したした。Cryostatの詳现に぀いおは、cryostat.ioを参照しおください。質問、コメント、フィヌドバックは、GitHubで私たちず぀ながるか、メヌリングリストに参加するこずで、お気軜にどうぞ。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 Manage JFR across instances with Cryostat and GraphQL | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Java Flight Recorder (JFR) を甚いたJavaアプリケヌションの監芖をクラりド䞊で管理したす。Cryostat 2.1では、耇数のアプリケヌション、コンテナ、Kubernetesポッドのフラむトレコヌディングを制埡するためのGraphQLがサポヌトされおおり、匷力な絞り蟌み機胜を備えおいたす。この蚘事では、GraphQL サポヌトを远加した動機に぀いお説明し、期埅される結果ずずもにいく぀かのク゚リ䟋を共有し、GraphQL ゚ンドポむントでの基瀎ずなる Web リク゚ストを芋おいきたす。 なぜCryostatでGraphQLを䜿うのか Cryostatの以前のバヌゞョンは、単玔なHTTP REST APIでフラむトレコヌディングを公開したした。そのAPIは、各リク゚ストを単䞀の抂念的なアクションに制限しおいたした - 䟋えば、1぀のレプリカむンスタンスで1぀の蚘録を開始したす。しかし、Cryostatは、耇数のスケヌルされたレプリカ内の倚数のむンスタンスを実行するマむクロサヌビスアヌキテクチャを䜜成する開発者にサヌビスを提䟛し、各レプリカむンスタンスは、様々な目的のために実行されおいる倚くのフラむトレコヌディングを保持したす。 したがっお、単玔なコンテナの12個のレプリカで同䞀の蚘録を開始しようずする開発者は、12回のAPIリク゚ストが必芁でした。さらに悪いこずに、10個のマむクロサヌビス䞊の10個のレプリカで同䞀の蚘録を開始しようずする開発者は、10x10=100のAPIリク゚ストを行う必芁がありたすよくある䜿甚䟋です。 明らかに、Cryostatはこれらすべおの条件を管理するために、柔軟で匷力なAPIを必芁ずしおいたす。GraphQLは、厳遞されたむンスタンスのグルヌプに察しおク゚リを発行するための、シンプルで有胜な蚀語です。耇数のアクションを単䞀のAPIリク゚ストに枛らすこずで、通信量のオヌバヌヘッドが枛少するため、党䜓の性胜が倧幅に改善されたす。さらなる利点ずしお、開発者は耇雑なアクションを実行するために、APIのJSONレスポンスを解析し、レスポンスデヌタに察しお繰り返しアクションを実行するカスタムクラむアントを曞くのではなく、より短くシンプルなク゚リヌを曞けたす。 タヌゲットJVMずそれに属する皌働䞭たたは保管された蚘録、および䞀般的なCryostatアヌカむブに存圚する蚘録に察するク゚リは、皌働䞭たたは保管された蚘録を開始、停止、保管、削陀する呜什ず組み合わせお、CryostatずJDK Flight Recorder呚蟺の自動化を構築するための匷力なク゚リを䜜成できたす。 ク゚リの䟋 Cryostatは /api/beta/graphql ゚ンドポむントでGraphQLで蚘述されたク゚リを受け付けたす。もしあなたがGraphQLを党く知らないのであれば、この蚘事の䟋でどの郚分が単なるGraphQLの構文や抂念なのか、それずもCryostat特有の動䜜なのかをより理解するために、 このドキュメント を簡単に芋おみるこずをお勧めしたす。 最初の簡単なク゚リを以䞋に瀺したす。 query { targetNodes { name nodeType labels target { alias serviceUri } } } これは Cryostat に targetNodes の結果を求めたす。これは Cryostat が認識しおいる党おの JVM タヌゲットを返すク゚リです。レスポンスは、それらのオブゞェクトの配列です。ク゚リは、 name や nodeType のような様々なフィヌルドを指定するので、配列内のオブゞェクトは、それらのフィヌルドだけを含みたす。 もう䞀぀、より高床なク゚リを玹介したす。 query { environmentNodes ( filter : { name : "my-app-pod-abcd1234" } ) { descendantTargets { doStartRecording ( recording : { name : "myrecording" , template : "Profiling" , templateType : "TARGET" , duration : 30 } ) { name state } } } } これは Cryostat に environmentNodes の結果を求めたす。これは Cryostat が認識しおいる、JVM タヌゲットアプリケヌションではないデプロむメントグラフ内の党おのノヌドを返すク゚リです。Red Hat OpenShift のコンテキストでは、結果は、䟋えば Deployments や DeploymentConfigs 、そしおそれらに属する Pods を含むでしょう。 前のク゚リでは名前ベヌスの絞り蟌みを行い、 my-app-pod-abcd1234 ずいう名前のノヌドのみを遞択したした。この文字列が、プロゞェクトの名前空間内の 1 ぀の Pod に刀定されるず仮定したす。そのポッドに察しお、このク゚リは、入れ子になったク゚リ descendantTargets を実行し、前の䟋のク゚リず同様に、JVMタヌゲット・オブゞェクトの配列を生成したす。 それらのJVMタヌゲットの各々で、 doStartRecording の曎新凊理を実行したす。その名前が瀺すように、この曎新凊理は、提䟛された構成を䜿甚しお、JVMタヌゲットのそれぞれで新しいJDKフラむトレコヌディングを開始するようにCryostatを仕向けたす。レスポンスは、これらの蚘録それぞれの名前ず状態 myrecording ず RUNNING であるず予想されるを含んでいたす。 先ほどの䟋は、GraphQL APIの嚁力ず実甚性を瀺しおいたす。ここでは、1回のリク゚ストで、CryostatがOpenShiftず通信しお特定のPodに属するCryostat察応JVMをすべお決定し、各JVMで蚘録を開始するずいう耇雑な動䜜を実行できたす。 最埌にク゚リの䟋を挙げたす。 query { targetNodes ( filter : { annotations : "PORT = 9093" } ) { recordings { active ( filter : { labels : "mylabel = redhatdevelopers" } ) { doArchive { name } } } } } OpenShiftに慣れおいる人なら、ここの labels の仕分けは芋慣れたものになるかもしれたせん。このラベルの遞択子はOpenShiftのラベルの遞択子ず同じ構文で、Cryostatの蚘録ラベルだけでなく、デプロむメントのグラフのラベルや泚釈にも適甚されたす。 mylabel = redhatdevelopers , env in (prod, stage) , たたは !mylabel のような匏を䜿甚できたす。たた、耇数のラベル遞択子を配列ずしお指定するこずで、論理的なAND接続を䜜成できたす。 active ( filter : { labels : [ "mylabel = redhatdevelopers" , "env in (prod, stage)" ] } ) Cryostat が特定の名前空間のデプロむメントのグラフで芋おいるものをよりよく理解するために、次のようなコマンドで Discover API ゚ンドポむント を確認したす。 $ curl https://my-cryostat.openshift.example.com/api/v2.1/discovery | jq いく぀かの異なる皮類のフィルタがあり、それらを組み合わせお様々な入れ子になったク゚リに適甚できたす。そのため、倚数の可胜な意味があるリク゚ストを繋ぎ合わせられたす。CryostatのGraphQL queries.graphqlsずtypes.graphqlsリポゞトリを参照し、実装されおいる党おのク゚リず曎新凊理を確認し、どのフィルタがどの皮類のフィルタを受け入れるかを孊びたす。この名前は自明であるべきです。FilterInputで終わるタむプはフィルタであり、doで始たるタむプフィヌルドは、実際には、蚘録を開始したり、蚘録を保管堎所ぞコピヌするなどのアクションを実行する入れ子ずなった曎新凊理です。 API゚ンドポむントの詳现 この蚘事の䟋では、GraphQL゚ンドポむントの兞型的なク゚リのデヌタ本䜓、実行可胜な動䜜、および期埅される応答がどのようなものかを瀺しおいたす。このセクションでは、これらのリク゚ストをどのように行うか、具䜓的な詳现を詳しく芋おいきたす。 Cryostat 2.1の䞻芁なGraphQL゚ンドポむントは、 POST /api/beta/graphql です。このパスに送られる POST リク゚ストは、 { query: "the_query" } のような圢匏の本文が含たれたす。これは、前のセクションの䟋で瀺されたように、 THE_QUERY をク゚リのテキストに眮き換えおいたす。以䞋は、リク゚ストずそのメタデヌタの具䜓䟋です。 POST /api/beta/graphql HTTP/1.1 Accept: application/json, */*;q=0.5 Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 171 Content-Type: application/json Host: localhost:8181 User-Agent: HTTPie/3.1.0 { "query": "query {\n targetNodes {\n name\n nodeType\n labels\n target {\n alias\n serviceUri\n }\n }\n}\n" } GET /api/beta/graphql のリク゚ストでも同じ結果が埗られたす。 "/api/beta/graphql?query={targetNodes{name nodeType labels target{alias serviceUri}}}" HTTP/1.1 200 OK content-encoding: gzip content-length: 247 content-type: application/json GraphQLをさらに掻甚 前のセクションの䟋では、いく぀かの可胜なク゚リの絞り蟌みを探りたした。あなたの環境の䞭でGraphQLむンタヌフェヌスの力を発揮するために、次の挔習を詊しおみおください。 すべおのJVMアプリケヌションを䞀床にスナップショットし、埗られた蚘録をCryostatアヌカむブにコピヌするGraphQLク゚リを䜜成したす。 cURL たたはお奜みの HTTP クラむアントを䜿甚しお Cryostat にリク゚ストを送信し、ク゚リを実行したす。 このAPIリク゚ストを䜿ったスクリプトを䜜成し、毎日午埌5時に実行するようにcrontabに远加したす。 このスクリプトをCryostat自動化ルヌルず組み合わせ、JVMアプリケヌションが珟れるたびに、新しい 継続的な監芖蚘録を自動的に開始させたす。 これらの郚品はそれぞれ単独では単玔ですが、䞀緒になるず匷力な自動化された流れが圢成されたす。 最埌にもう䞀぀。叀いバヌゞョンのCryostatにおける暙準APIは2.1でもただ存圚し、GraphQLに適さないアクションや機胜のために、このAPIにさらに远加されたものがありたす。それは、AuthorizationヘッダではなくJWTトヌクンを䜿甚しおJDKフラむトレコヌディングファむルをダりンロヌドするための新しい゚ンドポむントです。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 How to organize JFR data with recording labels in Cryostat 2.1 | Red Hat Developer の翻蚳蚘事です。 Cryostat 2.1の技術プレビュヌリリヌスでは、コンテナで管理されたJavaアプリケヌションを監芖するJDKフラむトレコヌディングにメタデヌタやカスタムラベルを添付し、Cryostatを䜿っおそれらの蚘録を管理できたす。蚘録のラベルは、ク゚リで蚘録を識別し、同じラベルを含む耇数の蚘録に察しお操䜜を実行できたす。この蚘事では、自動化されたルヌルで管理されおいる蚘録を含む、JDKフラむトレコヌディングのメタデヌタラベルを远加および線集する方法を説明したす。 JDKフラむトレコヌディングに蚘録ラベルを远加 Cryostatコン゜ヌルの Recordings タブに移動し、ドロップダりンメニュヌからタヌゲットJVMを遞択したす。 Create をクリックしお、カスタムフラむトレコヌディングを䜜成したす図 1。フラむトレコヌディングを䜜成する際、 Show metadata options 欄を展開したす。 Add Label をクリックしお、キヌず倀のラベルの組み合わせを蚘録に远加したす。蚘録の䜜成に関する詳现に぀いおは、Cryostatガむドを参照しおください。 図1カスタムフラむトのレコヌディングは、カスタムラベルで远跡可胜 新しい蚘録は、図 2 に瀺すように、遞択した蚘録テンプレヌトに関する情報を含むデフォルトのラベルずずもに、カスタムラベルを䜿甚しお Recordings タブに衚瀺されたす。 図2「皌働䞭の蚘録」の衚には、各蚘録のラベルが衚瀺 JDKフラむトレコヌディングの蚘録ラベルの線集 蚘録ラベルは、蚘録が䜜成された埌やアヌカむブに再アップロヌドされた埌にも線集できたす。䟋えば、この䟋のカスタムラベルにはタむプミスが含たれおいるように芋えたす。みなさんはラベルを線集しお修正できたす。 蚘録衚の゚ントリの暪にある省略蚘号メニュヌをクリックし、 Edit Metadataメタデヌタの線集 をクリックしたす。ラベル欄がフォヌム圢匏で衚瀺され、既存のラベルを远加、線集、たたは削陀できたす。図3に瀺すように、 Save保存 をクリックしお線集したラベルを保存したす。 図3ラベルの倀が線集された状態 図 4 に瀺すように、 Active Recordings皌働䞭の蚘録 衚の蚘録ラベルが曎新されおいるはずです。 図4曎新されたラベルが衚瀺された Active Recordings皌働䞭の蚘録 衚 Active Recordings皌働䞭の蚘録 衚で、蚘録の暪にあるチェックボックスをクリックし、 Archive保管 をクリックしお蚘録を保管したす。 図 5 に瀺すように、保管された蚘録は、皌動䞭の蚘録からラベルをコピヌしたす。぀たり、皌働䞭の蚘録に適甚されたメタデヌタ・ラベルを怜玢するこずで、皌働䞭の蚘録に関連する保管された蚘録を簡単に芋぀けられたす。たた、Cryostatの曞庫にアップロヌドされた蚘録には、さらにラベルを远加できたす。ラベルは、蚘録が保管されおいる限り保存されたす。 図5 Archived Recordings保管された蚘録 タブでは、各蚘録にラベルも衚瀺 自動化されたルヌルで䜜成されたラベル付き蚘録 Cryostat 2.1の新UIでJFRの自動化ルールを構築する方法 - 赤帽エンジニアブログ の蚘事で玹介した自動化ルヌルは、耇数のJDKフラむトレコヌディングの远跡ず管理を簡玠化したす。自動化ルヌルは、その蚘録を䜜成した自動化ルヌルの名称を瀺すメタデヌタラベルを自動的に適甚したす。たずえば、自動化ルヌルの名前が my_automated_rule であった堎合、そのルヌルで生成されたすべおの蚘録には、 Rule: my_automated_rule ずいうメタデヌタ・ラベルが付きたす。これらの蚘録が保管されるずき、ラベルは保存され、 my_automated_rule によっお生成されたすべおの蚘録を簡単に芋぀けられたす。 たずめ この蚘事では、単䞀のJDKフラむトレコヌディング、たたは自動化されたルヌルで管理されおいる堎合は耇数の蚘録に察しお、蚘録のメタデヌタラベルを远加および線集する方法に぀いお説明したした。自動化されたルヌルは、䜜成した各蚘録にメタデヌタラベルを適甚させたす。 これらのラベルを䜿った録画の怜玢や操䜜に぀いおは、このシリヌズの別の蚘事「 Manage JFR across instances with Cryostat and GraphQL | Red Hat Developer 英語」をご芧ください。Cryostatの詳现に぀いおは、プロゞェクトの 入門ペヌゞ 英語をご芧ください。ご質問、コメント、フィヌドバックは、 GitHub で私たちず぀ながるか、私たちの メヌリングリスト に参加するこず自由に感じおください。
こんにちは、Red Hatで゜リュヌションアヌキテクトをしおいる石川です。 以前の蚘事でKubernetes䞊でサヌバヌレスのアプリケヌション実行を行うKnativeのコンポヌネント、Knative Servingに぀いおご玹介させお頂きたした。 rheb.hatenablog.com rheb.hatenablog.com Knativeにはもう䞀぀䞻芁なコンポヌネントずしおKnative Eventingがありたす。 Knative Eventingはその名前の通り、むベント゜ヌスからのむベントを契機ずしおKnative Servingでデプロむしたサヌバヌレスアプリを呌び出すためのもので、むベント情報の保持や、どのむベントに察し䜕のアプリを実行するのかずいう玐付け行うためのコンポヌネントずなっおいたす。 Knative Eventingを䜿うこずで、䟋えば毎日決たった時間にサヌバヌレスアプリを起動したり、Kafkaのトピックが配信されたらそれに応じおアプリを起動するずいったこずが可胜ずなりたす。 本蚘事はKnative入門ずいうこずでKnative Eventingの抂芁や仕組み぀いお解説しおいきたいず思いたす。 Knativeで利甚可胜なむベント゜ヌス Knative Eventingでは耇数のカスタムリ゜ヌスを䜿っおむベント゜ヌスの蚭定、むベント情報の保持、その配信を管理したす。 たずむベント゜ヌスに぀いお、OpenShiftで利甚する堎合デフォルトでは以䞋の4぀のSourceを䜿甚するこずが出来たす。 ・ PingSource  cronでスケゞュヌルしたタむミングで定期的にメッセヌゞを送信する ・ ContainerSource  定期的にカスタムのむベントを送信するコンテナむメヌゞを゜ヌスずしお利甚する ・ KafkaSource  KafkaのTopicメッセヌゞを゜ヌスずしお利甚する ・ ApiServerSource  APIサヌバから埗られるKubernetesむベントをKnativeむベントずしお利甚する たた今回は詳现は割愛したすが、Camel Kず連携するこずで、様々なクラりドサヌビスを含むより倚くのむベント゜ヌスを遞択するこずも可胜です。 access.redhat.com これらのSourceに察し、あお先を玐づけおいきたす。Knative Eventingではあお先のこずをsinkず呌び、Sourceのマニフェストの .spec.sink にお蚭定が可胜です。 apiVersion: sources.knative.dev/v1 kind: PingSource metadata: name: test-ping-source spec: schedule: "*/2 * * * *" jsonData: '{"message": "Hello world!"}' sink: ref: apiVersion: serving.knative.dev/v1 kind: Service name: sample-app 䞊蚘のマニフェストではシンプルにsinkずしおKnative ServingのServiceを蚭定しおおり、 スケゞュヌルされた時刻䞊の䟋では2分に䞀床メッセヌゞを送信しアプリを起動したす。 この際むベント情報はCNCFで暙準化されおいる CloudEvents ずいうフォヌマットで配信されたす。 Sourceに盎接Serviceを蚭定する方法は、盎感的にわかりやすい反面、以䞋のようなデメリットも存圚しおいたす。 ・䞀぀のSourceを元に耇数のアプリを起動したい堎合であっおも、sinkずしおリスト型の蚘述が出来ないため、Source自䜓を耇数䜜成し管理する必芁がある。 ・むベント情報の配信が倱敗したずしおもあお先ぞの再送は行われない。 そのためSourceに察し盎接Serviceを蚭定する方法に぀いおは、開発環境でサヌバヌレスアプリの動䜜を詊す堎合など、限定的に䜿甚するのが良いでしょう。 以降では、これ以倖にどのような方法でむベントずServiceの玐付けが可胜かを芋おいきたいず思いたす。 Channel ans Subscription 䞀぀目のパタヌンがChannel ans Subscriptionです。 このパタヌンではSourceからのむベント情報をChannelず呌ばれる䞀時保管堎所に眮き、その埌あお先ずなるServiceに察し配信を行いたす。 Sourceの .spec.sink にはServiceを蚭定する代わりにChannelを指定したす。 apiVersion: sources.knative.dev/v1 kind: PingSource metadata: name: test-ping-source spec: schedule: "*/2 * * * *" jsonData: '{"message": "Hello world!"}' sink: ref: apiVersion: messaging.knative.dev/v1beta1 kind: InMemoryChannel name: dafault-channel ChannelからどのServiceにむベントを配信するかを決めるのがSubscriptionずいうカスタムリ゜ヌスです。 Subscriptionではマニフェストの .spec.channel で察象のChannelを、 .spec.subscriber で配信先ずなるServiceを蚘茉し、これらの玐付けを管理したす。 apiVersion: messaging.knative.dev/v1 kind: Subscription metadata: name: default-to-service spec: channel: apiVersion: messaging.knative.dev/v1beta1 kind: InMemoryChannel name: default-channel subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: sample-app ここで泚目したいのがChannelの皮類です。 䞊蚘ではInMemoryChannelを指定しおいたすが、これ以倖にもApache Kafkaをむベント情報の保存堎所ずするKafkaChannelを遞択するこずが出来たす。Upstream版のKnativeではこれ以倖にもいく぀かChannelの皮類が提䟛されおいたす。 InMemoryChannelの堎合、実際にむベント情報を保存するのはPodずなっおいたす。そのため䜕かの折にPodが再起動したりするず保存されおいたむベント情報が消倱しおしたい、その埌の凊理が実行できないずいうリスクが考えられたす。 InMemoryChannelの特城に぀いおは こちらのペヌゞ が参考になるでしょう。 inmemory-channel.yaml (クリックで展開) apiVersion: messaging.knative.dev/v1 kind: Channel metadata: name: default-channel これに察しKafkaChannelの堎合、Kafkaを構成するPodの䞀぀が再起動したずしおもむベント情報は保持され、たた配信先に察しおも少なくずも䞀床(at least once)は必ず情報が配信されるため、より安定的な運甚が可胜ずなりたす。OpenShiftにおいおは、クラスタ䞊でKafkaを構築するこずができるAMQ Streams Operatorが利甚可胜なため、これを䜿うこずで簡単にKafkaChannelを利甚するこずが出来たす。 本栌的にKnativeを運甚するのであればInMemoryChannelではなく、KafkaChannelの利甚を怜蚎するのが良いでしょう。 kafka-channel.yaml (クリックで展開) apiVersion: messaging.knative.dev/v1beta1 kind: KafkaChannel metadata: name: kafka-channel spec: numPartitions: 10 replicationFactor: 3 Broker ans Trigger 二぀目のパタヌンがBroker and Triggerです。 こちらのパタヌンも、基本的な考え方ずしおはChannel and Subscriptionず同様で、Sourceから埗たむベント情報をBrokerに䞀時的保存し、Brokerずアプリの玐付けずしおTriggerを䜜成したす。 Channel and SubscriptionにおけるChannel盞圓がBrokerであり、Subscription盞圓がTriggerだず考えるず理解しやすいかもしれたせん。 ただし、Broker and Triggerのパタヌンでは、Triggerの䞭でむベント情報のフィルタリングが可胜であるずいう点がChannel and Subscriptionのパタヌンずは異なっおいたす。 䟋えば、以䞋の図のように二぀のSourceを䞀぀のBrokerに繋ぎ、むベント情報のフィルタリングを蚭定しなければ、それぞれのSourceで発生した党おのむベントを契機にアプリが起動、実行するこずずなりたす。 察しお、Triggerの䞭でフィルタリング蚭定を入れるこずにより、特定のSourceからのむベントのみに反応しおアプリを起動するずいうこずが可胜ずなりたす。 Channel and Subscriptionのパタヌンでは、Sourceの皮類ごずに起動するアプリを倉えたい堎合、その分だけChannelを耇数䜜成する必芁がありたした。 Broker and Triggerパタヌンでは、単䞀のBrokerで耇数のSourceからのむベントを受け取り、その属性ごずに配信先の振り分けが可胜ずなるため、よりシンプルに運甚するこずが可胜ずなりたす。 Triggerにおけるフィルタリングの蚘述は .spec.filter にお実斜したす。 この際、ここに曞かれた条件に合臎する堎合のみむベント情報を配信する、ずいう圢ずなるため泚意したしょう。 apiVersion: eventing.knative.dev/v1 kind: Trigger metadata: name: kafka-to-app spec: broker: kafka-broker # 以䞋の条件に合臎する堎合のみむベント情報をSubscriberに配信する。 filter: # この䟋ではSourceがPingSourceの堎合のみServiceぞの配信が行われる。 attributes: source: /apis/v1/namespaces/test-serverless/pingsources/ping-source subscriber: ref: apiVersion: serving.knative.dev/v1 kind: Service name: sample-app Broker and Triggerパタヌンを採甚する際の泚意ずしお、Kafkaを䜿ったBrokerに぀いおは2022幎9月珟圚Tech Previewのステヌタスずなっおいたす。 そのため商甚環境でKafkaBrokerを䜿う堎合は利甚やサポヌトに関しおの条件を事前にご確認頂くずよいでしょう。 access.redhat.com OpenShiftコン゜ヌルの掻甚 ここたでKnative Eventingのむベント配信パタヌンに぀いおご玹介しおきたした。 最埌にKnative関連でOpenShiftのコン゜ヌルから操䜜できる䟿利なポむントにも觊れたいず思いたす。 Channel and Subscriptionの堎合も、Broker and Triggerの堎合もカスタムリ゜ヌスを䜜成するこずで、あるむベント情報に察しお起動するアプリケヌションを決めるわけですが、OpenShiftの堎合、コン゜ヌルからの操䜜で必芁なカスタムリ゜ヌスを簡単に䜜るこずが出来たす。 トポロゞヌビュヌ画面から、玐付けをしたいコンポヌネント䞊図の堎合はBrokerずService間で矢印をドラッグするず、GUIでTriggerやSubscriptionの䜜成を行うこずができたす。 Triggerであれば、マニフェストで蚘茉するのず同様にフィルタヌに぀いおの蚭定も画面から可胜です。 たたOpenShift Serverlessをむンストヌルするず、コン゜ヌルの監芖ダッシュボヌドから、Serverless関連のメトリクスを確認するこずができたす。 こうした機胜が蚭定䞍芁ですぐに䜿えるずいう点もOpenShiftでKnativeが䜿いやすくなっおいるポむントず蚀えるでしょう。 たずめ 今回はKnative Eventingにおける基本的な考え方や、むベント配信のパタヌンに぀いおご玹介したした。 OpenShiftではコン゜ヌルからServerlessを扱いやすくする様々な機胜を提䟛したり、Operatorを䜿っおKafka等がむンストヌル可胜であるため、Knative Eventingに必芁な環境を簡単に準備するこずが出来たす。 本ブログを読んでもしご興味持たれたら是非Knativeを䜿ったサヌバヌレスアプリケヌションを詊しおみお䞋さい
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 How to build automated JFR rules with Cryostat 2.1's new UI | Red Hat Developer の翻蚳蚘事です。 Cryostatは、Kubernetes䞊でJDK Flight Recorderのデヌタを管理するためのツヌルです。最新バヌゞョンであるCryostat 2.1では、Cryostat 2.0でAPI機胜ずしお導入されおいた自動化ルヌルのナヌザむンタフェヌスが䞀新されおいたす。これにより、倚くのJavaアプリケヌションに察しおJDKフラむトレコヌディングJFRを倧芏暡に管理するこずがより容易になりたした。 自動化されたルヌルの嚁力 自動化されたルヌルは、タヌゲットJVMに察しおJFRを起動し、各ルヌルが適甚されるアプリケヌションを刀断するための匷力か぀柔軟な刀定匏を提䟛したす。これらの刀定匏は、ポッド名文字列の盎接比范たたは正芏衚珟を䜿甚しお比范可胜、JMXポヌト番号、ポッド䞊に存圚するOpenShiftたたはKubernetesラベルやアノテヌションなど、タヌゲットアプリケヌションのさたざたなプロパティを参照できたす。 ルヌルが䜜成されるず、Cryostatはその匏に該圓するすべおのアプリケヌションを遞択し、そのルヌルで定矩されたJFRむベントテンプレヌトを䜿甚しお新しい蚘録を開始したす。新しいタヌゲットアプリケヌションむンスタンスが発芋されるたびに、同じこずが起こりたす。Cryostatは、新しいアプリケヌションむンスタンスが以前に䜜成されたルヌルの匏に䞀臎するかどうかを確認し、該圓する堎合は、むベントテンプレヌトを䜿甚しお新しい蚘録を開始したす。 さらに、自動化されたルヌルは、タヌゲットアプリケヌションのメモリからCryostatのストレヌゞに蚘録デヌタをコピヌするためのオプションを含められたす。このルヌルでは、蚘録デヌタをコピヌする頻床ず、この保管デヌタの過去のコピヌを保存し、最も叀いものを削陀する頻床を指定できたす。 新しいナヌザむンタヌフェヌス 新しいナヌザむンタフェヌスUIにより、この匷力な機胜をこれたで以䞊に簡単に䜿甚できるようになりたした。入力フォヌムを衚瀺するこずで、APIずの連携を容易にするだけでなくたずえば、持続時間の数倀入力、ナヌザヌが芳察したい察象アプリケヌションにぎったり合った匏を䜜成できるよう、その匏を入力するためのりィザヌドが甚意されおいたす図1。 図1自動化ルヌルのUIは、ルヌルのあらゆる偎面を制埡するためのフィヌルドやその他の芁玠を提䟛 タヌゲットを遞択するず、刀定匏りィザヌドはそのタヌゲットに適合するための簡単な刀定匏の䟋を衚瀺したす。これは、単に刀定匏の構文を思い出させるためのヒントずしお提䟛されたす。 ビュヌの右偎の分割郚分には、遞択したタヌゲットがJSON構造䜓ずしお衚瀺されたす。これには、刀定匏内で参照できるタヌゲット・アプリケヌションのすべおの情報が衚瀺されたす図2。 図2ペヌゞの右偎には、自動化ルヌルのすべおのパラメヌタヌがJSONずしお衚瀺 目的のアプリケヌションに適合させるべき衚珟が決たったら、それを「刀定匏」フィヌルドに入力したす。UIが曎新され、あなたの衚珟が珟圚遞択されおいるタヌゲットに適合するかどうかが、色分けされた圢で衚瀺さ れたす。 緑色は、指定された匏が遞択されたアプリケヌションに合臎するこずを瀺したす。 黄色は、指定された匏が有効な匏であるが、遞択されたアプリケヌションに適合しないこずを瀺したす。 赀は、指定された匏が無効であるこずを瀺し、おそらく䞍正な構文が原因です。 必芁に応じお、衚瀺郚が緑色になり、その匏がタヌゲットに刀定されるように、刀定匏を調敎したす。次に、同じ自動化ルヌルを適甚したい別のタヌゲットアプリケヌションを遞択し、衚瀺がただ緑色であるこずを確認したす。適合しない堎合は、䞡方のアプリケヌションで衚瀺が緑になるたで、刀定匏を再床調敎したす。たた、䞀臎させたくないアプリケヌションを遞択し、その衚瀺が黄色であるこずを確認するこずもできたす。 図3では、 target.labels.deployment == "quarkus-test" ずいう刀定匏を蚘述しおいたす。緑色ずチェックマヌクは、この匏が遞択されたタヌゲットアプリケヌションに合臎するこずを瀺したす。 図3チェックマヌクず緑のハむラむトは、タヌゲットアプリケヌションに合臎するルヌルを瀺す 刀定匏の構文、自動化ルヌル API、およびいく぀かの䜿甚䟋に぀いおの詳现ず情報に぀いおは、Red Hat Developer の以前の蚘事「 JDK Flight Recorderのコンテナでの自動化 - 赤帽エンジニアブログ 」 を参照しおください。 このフォヌムを送信した埌、Automated Rules ビュヌに戻り、新しいルヌルの定矩が衚に衚瀺されるはずです。Cryostatは盎ちにすべおの既知のタヌゲットアプリケヌションをチェックし、刀定匏がそれらに適合するかどうかを評䟡し、適合する堎合は、定矩した蚭定を䜿甚しお蚘録を開始したす。将来のタヌゲットアプリケヌションが発芋された堎合、それらも自動的に刀定され、必芁に応じお蚘録が開始されたす。 次回Cryostat蚘録のラベル付け方法 Cryostat 2.1では、蚘録物に察しおラベルを远加する新機胜が導入されたした。自動化されたルヌルによっお蚘録が開始されるず、その蚘録を開始したルヌルの名前を指定するラベルが自動的に付䞎されたす。このラベルは、録画がストレヌゞにコピヌされた堎合にも適甚されたす。この機胜に぀いおは、近日䞭に蚘事を掲茉する予定です。
Red Hat で Java Platform Advocate ずしお OpenJDK を担圓しおいる䌊藀ちひろ @chiroito です。 この蚘事は、Red Hat Developerのブログ蚘事、 How to log into Cryostat 2.1 on OpenShift: SSO for all | Red Hat Developer の翻蚳蚘事です。 Kubernetes䞊でJDK Flight Recorderのデヌタを管理するツヌルであるCryostatは、Cryostat 2.1の技術プレビュヌリリヌスずしお、Red Hat OpenShift䞊の組み蟌みOAuthサヌバヌに統合されたした。OpenShift䞊のCryostatにログむンするず、OpenShiftのログむンペヌゞにリダむレクトされ、OpenShiftのナヌザヌアカりントに察応するナヌザヌ名ずパスワヌドを入力するよう促されたす。成功するず、耇数のセッションでログむン状態を維持できたすデフォルトで24時間。 CryostatはOpenShiftの認蚌を䜕に䜿っおいるのですか Cryostatがコンテナ化されたJava仮想マシンJVMで動䜜するJavaアプリケヌションを監芖するために、CryostatはCryostatがデプロむされおいる同じ名前空間内でタヌゲットアプリケヌションを怜玢したす。これは、Cryostat が Pod やデプロむメントなどの Kubernetes オブゞェクトを怜出するために、OpenShift ナヌザヌアカりントからの暩限が必芁であるこずを意味したす。ナヌザがタヌゲットアプリケヌション䞊で JDK フラむトレコヌディングを開始、停止、たたは保存するリク゚ストを行うたびに、Cryostat はナヌザのリク゚ストが同じ名前空間から来るこず、およびナヌザが各タヌゲットアプリケヌション䞊の JDK フラむトレコヌディングを衚瀺および管理するアクセス暩を持っおいるこずを確認したす。 Cryostat 2.0からのCryostat認蚌の倉曎点 Cryostat 2.0では、ナヌザヌはOpenShiftコン゜ヌルからCryostatログむンペヌゞに認蚌トヌクンを貌り付け、ブラりザセッションの曎新時にトヌクンを再入力する必芁がありたした。 Cryostat 2.1では、OpenShiftのOAuthサヌバずCryostatのRBAC暩限を組み合わせ、OpenShiftのナヌザアカりントごずに蚭定可胜な暩限をナヌザに䞎えおいたす。デフォルトでは、各Webブラりザセッションは24時間継続したす。 Cryostat 2.1ぞのログむン方法 この蚘事は、OpenShift 4.6+のクラスタでCryostatのむンスタンスが動䜜しおいるこずを想定しおいたす。Cryostat のむンストヌル方法に぀いおは、 Getting started with Cryostat 2.1 を参照しおください。 Cryostatのむンスタンスが皌働したら、OpenShiftのWebコン゜ヌルにログむンし、Installed Operatorsに移動し、Cryostat Operatorを遞択したす。そこから、[Cryostat]タブで目的のCryostatむンスタンスを遞択したす。[Application URL] リンクをクリックしおログむン画面にアクセスし、OpenShift ナヌザアカりントのナヌザ名ずパスワヌドを入力したす。 Cryostatのすべおの機胜にアクセスするには、OpenShiftのナヌザアカりントにRBAC暩限を芁求する必芁があるかもしれたせん。制限された暩限を持぀ナヌザヌは、それらが蚱可されおいるCryostatの機胜のみにアクセスできたす。䟋えば、読み取り専甚暩限を持぀ナヌザは、他のナヌザが䜜成したJDKフラむトレコヌディングを芋れたすが、レコヌディングを䜜成したり削陀できたせん。この蚘事の執筆時点では、Cryostat の党機胜にアクセスするためには以䞋の暩限を持぀ナヌザが必芁です。 - apiGroups : - "" resources : - pods verbs : - create - get - apiGroups : - "" resources : - replicationcontrollers - endpoints verbs : - get - apiGroups : - operator.cryostat.io resources : - cryostats verbs : - create - delete - get - apiGroups : - operator.cryostat.io resources : - flightrecorders - recordings verbs : - create - delete - get - patch - apiGroups : - apps resources : - deployments verbs : - create - get - apiGroups : - apps resources : - daemonsets - replicasets - statefulsets verbs : - get CryostatのRBAC暩限の抂芁 耇数のナヌザヌが䞀぀の名前空間でCryostatを䜿甚しおJDKフラむトレコヌディングを管理しおおり、各ナヌザにCryostatの機胜に察する特定の暩限を䞎えたい堎合、垌望のCryostat固有のRBAC暩限を持぀ロヌルを䜜成し、そのロヌルを垌望のナヌザアカりントに玐付けたす。 䞀般的に、Cryostatは前のセクションで列挙した apiGroups: "" ず apiGroups: apps リ゜ヌスに察しお get パヌミッションを䜿甚し、名前空間内の任意のタヌゲットアプリケヌションを怜出したす。Cryostatの flightrecorders ず recording リ゜ヌスに察する create 、 delete 、 get 、 patch パヌミッションは、ナヌザヌがタヌゲットアプリケヌションからJDKフラむトレコヌディングを䜜成、削陀、取埗、保存できるようにしたす。 たずめ この蚘事では、OpenShift 䞊の Cryostat 2.1 にログむンする方法を説明し、ナヌザヌアカりントに必芁な RBAC 暩限の抂略を説明したす。RBAC暩限の定矩の詳现に぀いおは、OpenShift Container Platformの ドキュメント をご芧ください。Cryostatの詳现に぀いおは、cryostat.ioを参照しおください。質問、コメント、フィヌドバックに぀いおは、Githubで私たちず぀ながるか、メヌリングリストに参加するこずをお気軜にどうぞ。
Red Hatの森若です。 今回はRHELで『よくわからないサヌビス』が動䜜しおいるずきに、調べる方法を芋おみたす。 謎(?)のサヌビス systemctl -t service のようなコマンドを䜿うず、そのシステムでのサヌビス䞀芧を芋るこずができたす。 $ systemctl -t servce (äž­ç•¥) osbuild-composer.service loaded active running OSBuild Composer osbuild-dnf-json.service loaded active running OSbuild dnf-json service osbuild-worker@1.service loaded active running OSBuild Composer Worker (1) (以䞋略) この蚘事では、銎染みがないサヌビスを芋぀けた時の調べ方をみおいきたす。 今回は䟋ずしおこの osbuild-composer.service が䜕をするためのサヌビスか調べおみたす。 サヌビスの蚭定を芋る systemdのサヌビスから察応する蚭定(unitファむル)を芋るには、 systemctl cat コマンドを䜿いたす。 サヌビスによっおはunitファむル内にDescriptionやDocumentationが定矩されおいお䜕なのかが蚘茉されおいたり、 ドキュメントぞのリンクを芋぀けたりできたす。 unitファむルを衚瀺させおみたしょう。 # ではじたる行は蚭定ファむル名たたは蚭定ファむル䞭のコメントです。 $ systemctl cat osbuild-composer.service # /usr/lib/systemd/system/osbuild-composer.service [Unit] Description=OSBuild Composer Requires=osbuild-dnf-json.socket After=network.target (äž­ç•¥) ExecStart=/usr/libexec/osbuild-composer/osbuild-composer (以䞋略) Descriptionは"OSBuild Composer"ずいうこずで特に远加の情報はありたせんでした。 Documentationは蚘茉がありたせんでした。 ExecStart はサヌビスを起動するためのコマンドです。これも osbuild-composer ずいう名前で远加の 情報はありたせんでした。 "OSBuild Composer"が正匏名称のようなのでこの名前でGoogle怜玢する方法もありたすが、もう少し粘っおみたす。 rpmパッケヌゞを探す 前のステップでサヌビスに察応するunitファむルや、実行ファむルの名前がわかりたした。 あるファむルに察しお、どのrpmパッケヌゞに含たれおいるかを探すには rpm -qf コマンドを䜿いたす。 rpmパッケヌゞに含たれおいないファむル堎合はその旚が衚瀺されたす。 これらのファむルを提䟛しおいるrpmパッケヌゞを探しおみたしょう。 $ rpm -qf /usr/lib/systemd/system/osbuild-composer.service osbuild-composer-46.3-1.el9_0.x86_64 $ rpm -qf /usr/libexec/osbuild-composer/osbuild-composer osbuild-composer-core-46.3-1.el9_0.x86_64 これらのファむルはrpmパッケヌゞでむンストヌルされたもののようで、察応するパッケヌゞ名が衚瀺されたした。 rpmパッケヌゞにはファむルだけでなく各皮のメタデヌタが含たれおいお、システムぞむンストヌルしたrpmパッケヌゞのメタデヌタをあずで衚瀺・怜玢できたす。 rpmパッケヌゞの抂芁を衚瀺するには rpm -qi コマンドを䜿いたす。 $ rpm -qi osbuild-composer osbuild-composer-core Name : osbuild-composer Version : 46.3 Release : 1.el9_0 Architecture: x86_64 Install Date: Thu 19 May 2022 08:44:15 PM JST Group : Unspecified Size : 17645 License : ASL 2.0 Signature : RSA/SHA256, Sun 01 May 2022 12:33:21 AM JST, Key ID 199e2f91fd431d51 Source RPM : osbuild-composer-46.3-1.el9_0.src.rpm Build Date : Fri 29 Apr 2022 03:25:01 AM JST Build Host : x86-vm-55.build.eng.bos.redhat.com Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : https://github.com/osbuild/osbuild-composer Summary : An image building service based on osbuild Description : A service for building customized OS artifacts, such as VM images and OSTree commits, that uses osbuild under the hood. Besides building images for local usage, it can also upload images directly to cloud. It is compatible with composer-cli and cockpit-composer clients. (以䞋略) Description を機械翻蚳しおみたす。 VMむメヌゞやOSTreeコミットなど、カスタマむズされたOSアヌティファクトを 構築するためのサヌビスで、osbuildを基盀ずしおいたす。ロヌカルで䜿甚する むメヌゞの構築のほか、クラりドに盎接アップロヌドするこずも可胜です。 composer-cli、cockpit-composerクラむアントず互換性がありたす。 どうやらosbuild-composerは仮想マシンむメヌゞなどを䜜るためのサヌビスのようです。 URLの欄にアップストリヌムプロゞェクトぞのリンクがありたす。 パッケヌゞによっおはリンク切れになっおいる堎合もあるのですが、今回は到達できたした。 github.com ここから詳しい説明が埗られそうです。 rpmパッケヌゞ内のドキュメントを探す URLに到達できない堎合もありたすから、もう少しRHELの䞭で調べる方法を芋おいきたす。 rpmパッケヌゞ内にはドキュメントが含たれおいるかもしれたせん。 rpm -qd コマンドでパッケヌゞ内のドキュメント䞀芧を衚瀺したす。 $ rpm -qd osbuild-composer osbuild-composer-core /usr/share/doc/osbuild-composer/README.md /usr/share/man/man7/osbuild-composer.7.gz 2぀のファむルが芋぀かりたした。読んでみるず、README.mdはさきほどのgithubにあるREADME.mdで、man 7 osbuild-composerは抂芁説明になっおいたした。 $ less /usr/share/doc/osbuild-composer/README.md $ man 7 osbuild-composer 関連パッケヌゞを探す ドキュメントが実行ファむルずは別のパッケヌゞずしお提䟛されおいお、䞊蚘の方法では芋぀からない堎合もありたす。 パッケヌゞ名の先頭の単語 (今回の䟋では osbuild ) をキヌワヌドにしお怜玢するず、関連するパッケヌゞを探すこずができたす。 䜕か手がかりがあるかもしれたせん。 yum search コマンドで関連パッケヌゞを怜玢しおみたす。 この怜玢ではシステムにむンストヌルされおいないrpmパッケヌゞも衚瀺されたす。 $ sudo yum search osbuild Updating Subscription Management repositories. Last metadata expiration check: 0:09:23 ago on Thu 28 Jul 2022 02:30:28 AM JST. ======================================== Name Exactly Matched: osbuild ========================================= osbuild.noarch : A build system for OS images ======================================= Name & Summary Matched: osbuild ======================================== osbuild-composer.x86_64 : An image building service based on osbuild osbuild-composer-core.x86_64 : The core osbuild-composer binary osbuild-composer-dnf-json.x86_64 : The dnf-json binary used by osbuild-composer and the workers osbuild-composer-worker.x86_64 : The worker for osbuild-composer ============================================ Name Matched: osbuild ============================================= osbuild-luks2.noarch : LUKS2 support osbuild-lvm2.noarch : LVM2 support osbuild-ostree.noarch : OSTree support osbuild-selinux.noarch : SELinux policies python3-osbuild.noarch : A build system for OS images =========================================== Summary Matched: osbuild =========================================== weldr-client.x86_64 : Command line utility to control osbuild-composer
Red Hat の゜リュヌションアヌキテクトの瀬戞智です。 Red Hat にはクラりドネむティブアプリの開発に圹立぀、゜フトりェアのラむンナップが充実しおいるこずをご存知ですか ここでは、それらの゜フトりェア [Red Hat Application Services] に関する泚目ニュヌスを、各補品技術に特化した゜リュヌションアヌキテクトがご玹介しおいきたす。 今回は 2022/9月号ずなりたす。 想定読者 ゚ンタヌプラむズアヌキテクト アプリケヌション開発者 システムの提案をするSIerの方 特集1: Apache Kafka 超入門 AMQ StreamsのベヌスずなっおいるApache Kafkaの入門蚘事です。 近幎各䌁業で採甚が進んでいる分散メッセヌゞングシステムの「Apache Kafka」に぀いお今䞀床抂芁をご玹介いたしたす。 rheb.hatenablog.com 特集2: MTAを䜿甚しおWebLogic/WebSphereからJBoss EAPぞの移行を怜蚎する JBoss EAPはJava EEに準拠したアプリケヌションサヌバヌです。Red Hatでは他のJava EE準拠のAPサヌバヌからJBoss EAPに移行するずきに䜿甚できるツヌルを準備しおいたす。 そちらの䜿甚方法をたずめたした。 rheb.hatenablog.com JakartaOne Livestream - Japan 2022幎9月16日(金) 午埌時 に開催 Red Hatを含めたいく぀かのJava EE/Jakarta EEベンダヌが協力しおむベントを立ち䞊げたした Jakarta EE 10もリリヌスされお、最新の情報を集めるには良いチャンスです。 ぜひご参加ください jakartaone.org Red Hat Summit: Connect | Japan 2022 幎10月27日(朚) に開催決定 Red Hat Forum が Red Hat Summit: Connect | Japan ず名前を倉え3幎ぶりに察面むベントずしお開催されるこずになりたした むベントの参加登録開始は先ずなりたすが、ぜひ日皋を開けおおいおください 参加費は無料です。 www.redhat.com 盎近GAになった補品矀 最近リリヌスずなった Application Services 補品矀のリストをご玹介したす。 芋逃しおいる補品が無いか、是非䞀床ご確認ください。 Red Hat Debezium 1.9 Red Hat 3scale API Management 2.12.0 Red Hat Process Automation Manager 7.13.0 Camel for Spring Boot 3.14
Red Hat の゜リュヌションアヌキテクトをしおいる瀬戞です。 このたびJBoss EAPや他のJavaアプリケヌションサヌバヌが䟝存しおいるJava EE/J2EE仕様がJakarta EE仕様ず名前を倉えおリリヌスされたす。 前回の倧きな仕様倉曎が行われたのはJava EE 8が2017幎9月にリリヌスされた時で、それからおおよそ5幎ぶりの倧きな仕様倉曎ずなりたす。 その䞭にはネヌムスペヌスの倉曎や䞀郚機胜の削枛も含たれおおり、たた、WebSphereはOpenLibertyずしお䜜り盎され互換性ぞの圱響もあり、 それならずJBoss EAPぞの移行を怜蚎されおいる方もいらっしゃるず思いたす。 Jakarta EE察応のEAPはただリリヌスされおいたせんが、事前に怜蚎だけでもしおおくこずは良いこずです。 以前、 JBoss EAP 6のセキュリティフィックスが行われなくなるのでEAP 7ぞの移行を怜蚎する ずいう蚘事で玹介したMTA(Migration Toolkit for Applications)を䜿甚するこずで WebLogic/WebSphereからEAPぞの移行に必芁な䜜業も芋積もるこずができたす。 MTAはいわゆる静的解析ツヌルで、ルヌルに基づいお移行に必芁な䜜業を芋぀け出すこずができたす。 前回の蚘事 ではGUI圢匏での機胜の玹介をしたした。 今回の蚘事では、CI環境に組み蟌むこずを前提にコマンドラむンで操䜜をしおみたいず思いたす。 ※初めお行う堎合は盎感的に操䜜できるGUIの方が楜です。慣れるたではそちらを䜿甚するこずをお勧めしたす。 前回の蚘事 ではGUIでの䜿甚方法を説明しおいたすので、そちらを参照しおください。 Optionsのsourceにeap6の代わりにweblogicもしくはwebsphereを指定する必芁があるだけで、他の䜿甚方法は党く同じです。 たた、移行䜜業に必芁なすべおの䜜業をMTAで挏れなく芋぀けだすこずはできない点は泚意しおください。 䟋えば、個別の業務ロゞックに玛れ蟌んでいる環境固有のコヌドは別途修正する必芁がありたすし、必芁に応じお性胜怜蚌を行う必芁もありたす。 この蚘事は以䞋の環境で動䜜確認しおいたす。 Windows 11 Pro 22000.856 openjdk version "11.0.16" 2022-07-19 LTS OpenJDK Runtime Environment (Red_Hat-11.0.16+8-2) (build 11.0.16+8-LTS) OpenJDK 64-Bit Server VM (Red_Hat-11.0.16+8-2) (build 11.0.16+8-LTS, mixed mode) ※この蚘事ではコマンド䟋はすべおWindows版で蚘茉されおいたすが、Mac、Linux等でも動䜜可胜です。 MTA(Migration Toolkit for Applications)の入手 MTAは以䞋のペヌゞからダりンロヌドするこずができたす。※芁Red Hatアカりント developers.redhat.com 今回はコマンドラむン版を䜿甚したす。 ペヌゞを䞋に移動しお、All DownloadsからMigration Toolkit CLI版をダりンロヌドしたす。この蚘事ではv5.3を䜿甚しおいたす。 zipファむルがダりンロヌドされたすので適切な䜍眮に解凍しおください。 䜿い方 コマンドプロンプトを䜿甚しお解凍先の .\bin に移動しお、 mta-cli.bat を実行するこずで解析を行うこずができたす。 䞻に指定するオプションは以䞋の通りです。 --source 移行元がWebLogicなら weblogic 、 WebSphere なら websphere --target 移行先のアプリケヌションサヌバヌ、EAPの堎合は eap:7 --input 解析察象のwar、earもしくはフォルダ --sourceMode (オプション)フォルダを指定する堎合に指定 --output レポヌトの出力先フォルダ --packages (オプション)解析察象のパッケヌゞ、指定しない堎合は䟝存ラむブラリも含めおすべお解析しおしたい時間がかかるので、指定するのを匷く掚奚、耇数指定する堎合はスペヌス区切り --exportCSV (オプション)指定するず远加でCSVファむルを出力する、䜕か別のツヌルで統蚈を取りたい堎合にあるず䟿利なので、ずりあえず指定する(オヌバヌヘッドはほがない) --overwrite (オプション)指定するずレポヌトの出力先にすでにファむルがあった堎合に無確認で䞊曞きする(指定しない堎合はプロンプトで確認を求められる) コマンドのサンプルずしおは以䞋のようになりたす。 WebLogicのear(もしくはwar)ファむルを解析する。 mta-cli --source weblogic --target eap:7 --input C:\source.ear --output c:\EXPORT_DIR --packages com.acme --exportCSV WebLogicの゜ヌスコヌドの入ったプロゞェクト(フォルダ)を解析する。 mta-cli --source weblogic --target eap:7 --input C:\SOURSE_DIR --sourceMode --output c:\EXPORT_DIR --packages com.acme --exportCSV WebShepreのearファむルを解析しお解析結果を解析する。出力先のフォルダがすでにあった堎合は削陀しおから出力する。 mta-cli --source websphere --target eap:7 --input C:\source.ear --output c:\EXPORT_DIR --packages com.acme --exportCSV --overwrite 解析結果を確認する 解析結果はoutputに指定したフォルダに出力されたす。䞭身自䜓は 前回の蚘事 で説明したものず党く䞀緒ですので、そちらを参照しおください。 たずめ Javaのアプリケヌションサヌバヌの移行は叀いサヌバヌの機胜ず新しいサヌバヌの機胜の䞡方を知らないずいけないため、通垞は倧きな劎力がかかりたすが、MTAを䜿甚するこずで劎力を削るこずができたす。 移行時の遞択肢が増えるこずは良いこずだず思いたすし、簡単に実行するこずもできたすので、ぜひ詊しおみおください たた、MTAはここで玹介した以倖にもいく぀かのオプションを備えおいたす。 今回は玹介したせんでしたが、ただEAPが察応しおいないJakarta EE *1 ぞの移行に぀いおも解析できるオプションも提䟛されおいたす。そちらはEAP専甚ずいうわけではなくすべおのEEアプリに䜿甚できたす。EAPぞの移行をしない堎合でも詊す䟡倀はありたす。 䜿い蟌みたい堎合はマニュアルを参照しおみおください。 access.redhat.com 参考資料 JBoss EAP 6のセキュリティフィックスが行われなくなるのでEAP 7ぞの移行を怜蚎する https://rheb.hatenablog.com/entry/2022/05/13/JBoss_EAP_6%E3%81%AE%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%82%B9%E3%81%8C%E8%A1%8C%E3%82%8F%E3%82%8C%E3%81%AA%E3%81%8F%E3%81%AA%E3%82%8B%E3%81%AE MTA ダりンロヌド(芁Red Hatアカりント) https://developers.redhat.com/products/mta/download Migration Toolkit for Applications の抂芁 https://access.redhat.com/documentation/ja-jp/migration_toolkit_for_applications/5.3/html/introduction_to_the_migration_toolkit_for_applications/index Migration Toolkit for Applications CLI ガむド https://access.redhat.com/documentation/ja-jp/migration_toolkit_for_applications/5.3/html-single/cli_guide/index *1 : upstreamのwildflyではすでに察応されおいたす。
Red Hatの森若です。 「RHELをむンストヌルしたらよくわからない物がいっぱい動いおるなぁ」ず思う方むけの蚘事です。 RHEL 9を最小構成(minimal + Standard)でむンストヌルした時にデフォルトで動䜜しおいるプロセスをそれぞれ1〜2行で玹介しおみたす。 minimal + Standardを遞択したす むンストヌラ内でRed Hat Subscription Management(RHSM)ずRed Hat Insightsぞ登録したす。 むンストヌルが完了したずころでさっそくコン゜ヌルからログむンしお、pstreeコマンドでプロセスの様子を芋おみたす。 実質的に䜕もしおいたせんから、プロセスの数はそれほど倚くありたせん。 systemd-+-NetworkManager---2*[{NetworkManager}] |-atd |-auditd-+-sedispatch | `-2*[{auditd}] |-chronyd |-crond |-dbus-broker-lau---dbus-broker |-firewalld---{firewalld} |-irqbalance---{irqbalance} |-login---bash---pstree |-lsmd |-polkitd---11*[{polkitd}] |-rhsmcertd |-rsyslogd---2*[{rsyslogd}] |-sshd |-systemd---(sd-pam) |-systemd-journal |-systemd-logind |-systemd-udevd `-tuned---3*[{tuned}] システムの基本的な管理を行うためのサヌビス矀: systemd: システム党䜓の起動・終了、サヌビスの起動・終了などを管理する NetworkManager: ネットワヌク接続の蚭定管理・有効化・無効化を行う dbus-broker-launch, dbus-broker: 1システム内でのメッセヌゞ送受信を行うdbusサヌビスを提䟛。systemdやNetworkManagerなどはdbus経由でAPI(application program interface)を提䟛しおいる。 polkitd: dbus経由で䞀般ナヌザからシステムのサヌビスぞリク゚ストを送った時に暩限管理ポリシヌを凊理する。 systemd-udevd: デバむスの挿抜や状態倉曎などのむベントをうけおコマンドを実行したりファむル操䜜を行う。 systemd-logind: ナヌザのセッション、linuxコン゜ヌルに察応するagettyの起動、電源管理API、ナヌザ毎のデバむスアクセス管理などを行う。 自動的なチュヌニングを行うサヌビス矀: irqbalance: ハヌドりェアからの割り蟌みを凊理するCPUを振り分けるデヌモン。無いずほずんどの割り蟌みがCPU 0に割り圓おられるので起動掚奚。 tuned: システムの自動チュヌニングを行うデヌモン。ハヌドりェア環境から該圓しそうなプロファむルを自動遞択したす。 ログの蚘録に関係するサヌビス矀: auditd: linux kernelやプロセスからの監査ログの受取ずストレヌゞぞの蚘録を行うデヌモン sedispatch: SELinuxのAVC(access vector cache)ログが監査ログぞ出力されるず、読みやすいログを出力するsetroubleshootdを呌び出す。 systemd-journal: 各皮ログ出力をうけ぀け、journalずよばれるデヌタベヌスぞ保存するデヌモン rsyslogd: systemd-journaldのjournalを蚭定に埓いフィルタしお/var/log/messagesのようなファむルぞ保存したり他のホストぞ転送する。他ホストからのsyslogメッセヌゞの受け付けも行う。 (堎合によっおは)無くおもなんずかなるサヌビス矀: chronyd: NTP(network time protocol)による時刻同期を行うデヌモン。時刻がずれるず蚌明曞が正しく凊理できなくなるため起動掚奚。 atd: atもしくはbatchコマンドによるゞョブ実行のためのデヌモン crond: 定期実行をを行うためのデヌモン sshd: ssh(secure shell)デヌモン。システム倖郚からのログむンをうけ぀け、認蚌したのちシェルを起動しお察話的に利甚するためのサヌビス。 firewalld: ファむアりォヌルを蚭定・管理するデヌモン lsmd: libstoragemgmt(ストレヌゞアレむ管理甚ラむブラリ)のプラグむン甚デヌモン。 RHEL特有のサヌビス: rhsmcertd: RHSMで利甚する蚌明曞の定期曎新を行うデヌモン。RHSMかRed Hat Satelliteを利甚する堎合には必須。 ログむンに関係するプロセス矀: login: バナヌずログむンプロンプトを衚瀺しおナヌザのログむンを埅ちうけるプロセス。 (sd-pam): systemdでPAMセッションを远跡するために利甚されるプロセス。 bash: シェル pstree: 実行䞭のpstreeコマンド 気になるものや知らなかったものがあったら調べおみたしょう。
レッドハットの杉村です。Ansible のテクニカルサポヌトをしおいたす。 テクニカルサポヌトは土日祝日幎末幎始は党員䌑みずいうわけにはいかず、平日よりは少ない䜓制で問い合わせに察応するようにしおいたす。今回の土日は圓番になりたした。空き時間ができたしたのでブログを曞いおいたす。 twitter の #ansiblejp で最近少々話題になっおいたのですが、Ansible Automation Platform (AAP) のゞョブからファむルを保存したいずきにどうするのがいいのかずいうお話がありたした。AAP 2 からは実行環境がコンテナになったため、以前の Ansible Tower 時代ずはアヌキテクチャが異なっおいたす。 たず倧前提ずしおは、原則ずしおはコントロヌラ䞊にはそういうファむルを眮くべきではないずいうのがありたす。ゞョブの実行時に䞀時的にファむルを䜜成するこずはあっおも、実行が終わったら消えるずいうのが想定した䜿い方です。 コントロヌラでは耇数のナヌザがさたざたなゞョブを実行したす。AAP のナヌザ暩限を现かく決めるこずができるずいうのに、ファむルは共通しお自由に読み曞きできるずいうこずができおしたっおはその暩限蚭定の意味がなくなっおしたうこずもありたす。たた、コントロヌラが皌働するOS䞊にファむルを眮きたすず、コントロヌラや実行ノヌドが分散しおいるずきにはスケヌルしないこずもありたす。ストレヌゞが溢れないように監芖する必芁があるかもしれたせんし、バックアップやリストアも求められるこずがあるかもしれたせん。基本的に手間が増えるだけでいいこずがないのです。 それでもどうしおもファむルを眮きたいんですずいう芁望も確かにありたしお、どうすればできるのかを少々考えおみようず思いたす。AAP 2.2 (RHEL 8.6 / ansible-core 2.13) で動䜜怜蚌しおいたす。 こちらに詳しく曞かれおいたすので、あわせお参照しおください。この著者の Phil Griffiths ずも金曜にこの件で少々話をしたばかりです。 www.ansible.com 甚意したディレクトリ OS 䞊のディレクトリに眮く䟋ず、NFS に眮く䟋を怜蚌しおみたした。OS からは awx ナヌザで曞き蟌みできるようにしおおいおください。NFS に眮くこずができれば、耇数のコントロヌラや実行ノヌドがあっおも、それぞれから読み曞きできるようになるこずが期埅されたす。 # ls -ld /share /nfs drwxrwxrwx. 2 root root 71 8月 21 2022 /nfs drwxr-xr-x. 2 awx awx 6 8月 21 18:02 /share # mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) 192.168.0.XXX:/share on /nfs type nfs4 (rw,relatime,vers=4.2,rsize=524288,wsize=524288,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.0.YYY,local_lock=none,addr=192.168.0.XXX) 実行したいプレむブック ただ単にファむルを曞いおみる䟋です。 --- - hosts: all gather_facts: false tasks: - name: store something into an external file (share) copy: content: "this is a pen, that is a book" dest: /share/result.txt mode: '0644' tags: - localshare - name: store something into an external file (NFS) copy: content: "this is a pen, that is a book" dest: /nfs/result.txt mode: '0644' tags: - nfs コマンドラむンから実行 awx ナヌザで実行しおみたした。それぞれ意図通りファむルを曞き出しおいたす。 $ whoami awx $ ansible-playbook playbook.yml -i localhost, -e ansible_connection=local -t nfs PLAY [all] *************************************************************************************************************************************************************************************** TASK [store something into an external file (NFS)] *********************************************************************************************************************************************** changed: [localhost] PLAY RECAP *************************************************************************************************************************************************************************************** localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 $ ansible-playbook playbook.yml -i localhost, -e ansible_connection=local -t localshare PLAY [all] *************************************************************************************************************************************************************************************** TASK [store something into an external file (share)] ********************************************************************************************************************************************* changed: [localhost] PLAY RECAP *************************************************************************************************************************************************************************************** localhost : ok=1 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 $ ls -l /nfs/ /share/ /nfs/: 合蚈 4 -rw-r--r--. 1 awx awx 29 8月 21 18:08 result.txt /share/: 合蚈 4 -rw-r--r--. 1 awx awx 29 8月 21 18:08 result.txt AAP から実行 プロゞェクトずゞョブテンプレヌトを䜜成したした。ゞョブテンプレヌトでは実行時に tag を入力しお凊理を切り替えられるようにしおいたす。 実行しおみるず、このように曞き出すディレクトリを芋぀けられずに゚ラヌになりたす。実行環境はコンテナの䞭で動いおおり、そこにはこのディレクトリはないからです。 Settings > Jobs setting > Paths to expose to isolated jobs の蚭定で、コンテナがマりントするディレクトリを蚭定するこずができたす。初期倀はこのようになっおいたす。 これは podman の -v (--volume) オプションずしお実行時に枡されたす。このように :rw を぀けお定矩するこずで、コンテナからも読み曞きできるディレクトリずしお認識させるこずができたす。 [ "/etc/pki/ca-trust:/etc/pki/ca-trust:O", "/nfs:/nfs:rw", "/share:/share:rw", "/usr/share/pki:/usr/share/pki:O" ] この蚭定で、ロヌカルディレクトリもNFSも䞡方ずも正しく曞き蟌むこずができたした。 コントロヌラから芋おも正しく保存されおいるこずがわかりたす。 $ ls -lZ /nfs /share /nfs: 合蚈 4 -rw-r--r--. 1 awx awx system_u:object_r:nfs_t:s0 29 8月 21 18:27 result.txt /share: 合蚈 4 -rw-r--r--. 1 awx awx system_u:object_r:container_file_t:s0:c98,c728 29 8月 21 18:27 result.txt $ cat /share/result.txt this is a pen, that is a book $ cat /nfs/result.txt this is a pen, that is a book podman のオプションに぀いおは man podman-run を芋おください。 蚭定の泚意点 このようにロヌカルファむルをマりントしおコンテナから読たせるようにする蚭定は AAP 2.1.2 から導入されたのですが、2.1.x ではこのオプションには :O ず :z のどちらかしか蚭定できないずいう制限がありたす。 O (倧文字のO) : 䞀時的なディレクトリを䜜っお読み曞きし、実行が終わったら削陀する z (小文字のz) : SELinux のラベルを付け替える もしこのオプションを぀けないずきには、安党のため :z が初期倀ずしお蚭定されたす。NFS のディレクトリでは SELinux のラベルを付け替えるこずはできないため、䟋えば今回の䟋で /nfs:/nfs:z ず蚭定するず゚ラヌになりたす。 :rw で䜿いたい堎合には、AAP 2.2 を䜿っおください。 :O を蚭定したずきはゞョブの動䜜はしたすが、凊理が終わりたすず削陀されるため、埌でコントロヌラ䞊のOSコマンドでディレクトリを芋おもファむルは芋぀かりたせん。 他の方法 今回はロヌカルディレクトリにデヌタを曞いおみるずいう䟋でしたが、他の方法ずしおは Amazon S3 などのクラりドストレヌゞに曞く方法もありたす。 docs.ansible.com もしデヌタが小さいようであれば、以前玹介した fact に保存する方法も利甚できたす。fact は AAP のデヌタベヌス䞊にホストごずのデヌタずしお保存するものです。 rheb.hatenablog.com 芁件にあわせおいろいろな方法を怜蚎しおみおください。 たずめ 最近いく぀か話題になったファむルの曞き出しに぀いお怜蚌しおみたした。AAP 2.1.2 から少しず぀改善され、2.2 ではより自由床も増したした。問い合わせを受けおサポヌト゚ンゞニアから開発チヌムに䌝えるこずもよくありたすので、もしお困りの際はご盞談ください。 Ansible Automation Platform の評䟡ラむセンスリク゚ストはこちらからご利甚いただけたす。60日間利甚できたす。 www.redhat.com Happy Automation!
レッドハット ゜リュヌションアヌキテクト石倉です。 この蚘事は、RED HAT BLOGのブログ蚘事、 High availability for SAP on Red Hat Enterprise Linux の翻蚳蚘事です。 Red Hat Enterprise Linux (RHEL) は、アプリケヌションおよびデヌタベヌス (DB) レベルでビゞネスクリティカルなワヌクロヌドに高可甚性 (HA) を長期間提䟛しおきたした。 これにより、サヌビスのアップタむムを最倧化し、予期しない䞭断を最小限に抑え、重芁な環境をより回埩力のあるものにしおいたす。 RHEL High Availability Solutions for SAP (Red Hat Enterprise Linux for SAP Solutions サブスクリプションに含たれるRHEL HA アドオンで実珟したす) を利甚するこずで、共有ファむルシステム、デヌタベヌス、メッセヌゞ サヌバヌ、゚ンキュヌ サヌバヌなどの単䞀障害点 (SPOF) を回避するこずが出来たす。 SAP HANA の堎合、DB にはSAP瀟が提䟛する、 SAP HANA システム レプリケヌション (HSR) ず呌ばれるメカニズムが組み蟌たれおいたす。 このメカニズムでは、DB を 1 ぀以䞊のノヌドに耇補したすが、問題が発生した堎合の自動フェむルオヌバヌは提䟛したせん。 代わりに、RHEL HA Solutions for SAP が自動フェむルオヌバヌを凊理したす。 RHEL HA Solutions for SAP を掻甚するこずで、真倜䞭に DB の手動フェむルオヌバヌを実行する必芁がなくなり、SAP Basis ゚ンゞニアはよりぐっすりず眠るこずができたす。 Red Hat ず SAP瀟 のコラボレヌションは、DB レむダヌずアプリケヌション レむダヌの䞡方に組み蟌たれた新しい HA シナリオずモデルが RHEL HA Solutions for SAP によっおカバヌされ、利甚ナヌザがその恩恵を受けるこずができるこずを意味したす。 Red Hat は、RHEL のさたざたなリリヌスで HA の広範なテストを実行し、それぞれのシナリオずモデルで SAP瀟 の認定を取埗しおいたす。 アプリケヌション レベルでの高可甚性に぀いお アプリケヌションレベルでは、HA を実珟するために ENSA1 ず ENSA2 ずいう 2 ぀のモデルが SAP瀟 より提䟛されおいたす。 ENSA1 モデルは SAP NetWeaver ベヌスの叀いバヌゞョンの SAP 補品で䜿甚されたす。 䞀方、ENSA2 モデルは SAP NetWeaver (version 7.51以降) ず SAP S/4HANA (version 1809以降) で利甚が掚奚されおいたす。 どちらのモデルでも、゚ンキュヌ サヌバヌ (すべおのナヌザヌロック䟝頌をロックテヌブルに栌玍するサヌバヌ) が耇補され、障害が発生した堎合に DB でデヌタが䞊曞きされないため、䞀貫性が保たれたす ( ENSA1 ず ENSA2 の違いの詳现に぀いおは、次のブログ、「 Evolution of ENSA2 and ERS2… | SAP Blogs 」 を参照しおください)。 前述の SAP HANA システム レプリケヌションのケヌスず同様に、フェむルオヌバヌは自動的に行われないため、RHEL HA Solutions for SAP は、このレむダヌを 2 ぀、ないし 3 ぀以䞊のノヌドのクラスタヌに远加したす (3 ぀以䞊のノヌドは、ENSA2 を実装する堎合にのみ適甚出来たす)。 䞀郚の利甚ナヌザは、コストを削枛するために、同じサヌバヌに DB ずアプリケヌションを配眮する堎合がありたす (䞻にクラりド サヌビスを䜿甚しおいお、支出を最小限に抑える必芁がある堎合)。 たた、プラむマリ アプリケヌション むンスタンス (PAS) ず他のアプリケヌション むンスタンスも 1 ぀のホスト䞊に持぀こずができたす。 これらのシナリオ、いわゆるコスト最適化デプロむメントも、RHEL HA Solutions for SAP でカバヌされおいたす。 HANA システム レプリケヌションず ENSA2 の䞡方を単䞀クラスタヌで管理する堎合の HA クラスタヌをセットアップ方法の詳现に぀いおは、Red Hat カスタマヌ ポヌタルの 「 Configuring Cost-Optimized SAP S/4HANA ASCS/ERS/HDB with Standalone Enqueue Server 2 (ENSA 2) in a Pacemaker Cluster - Red Hat Customer Portal 」を参照しおください。 DB レベルでの高可甚性に぀いお DB レむダヌの可甚性に぀いおは、ここでは SAP HANA に焊点を圓おたす。 SAP HANA むンスタンスは、1 ぀のサヌバヌにむンストヌルするこずも、耇数のサヌバヌに分散しおリ゜ヌスを増やすこずもできたす。 1 ぀のサヌバヌにむンストヌルするケヌスは、远加のリ゜ヌスが必芁な堎合に同じサヌバヌに远加されるため、「スケヌルアップ構成"scale-up deployment"」ず呌ばれ、耇数のサヌバヌに分散するケヌスは「スケヌルアりト構成"scale-out deployment"」ず呌ばれたす。 䞡方のケヌスで高可甚性を提䟛できたす。 最初のケヌスでは、同じリ゜ヌスを持぀同䞀のむンスタンスが (同じリ゜ヌスず SID を持぀) 別のサヌバヌにむンストヌルされ、2 番目のケヌスでは、同じ構成が同じ数のホストに耇補されたす。 前述したように、SAP HANA システム レプリケヌションはデヌタのレプリケヌションず䞀貫性を提䟛したすが、問題が発生した堎合にリ゜ヌスの自動フェむルオヌバヌを凊理するには、RHEL HA Solutions for SAP などのクラスタヌ ゜リュヌションが必芁です。 さらに冗長性を実珟するために、SAP HANA 1.0 SP12 ではマルチティア システム レプリケヌション"Multitier System Replication"が導入されたした。 これにより、DB が耇補され、レプリカが第 3 局に耇補されたす。 その埌、SAP HANA 2.0 SP03 でマルチタヌゲット システム レプリケヌション"Multitarget System Replication"が導入され、元の DB を耇数のタヌゲットに同時にレプリケヌトするこずで、さらなる冗長性が提䟛されたす。 マルチタヌゲットではセカンダリに障害が発生した堎合でも、3 番目はプラむマリず同期されたすが、マルチティアでは、セカンダリに障害が発生した堎合、プラむマリの倉曎が 3 番目に䌝播されなくなりたす。 どちらのシナリオも、RHEL 8 for SAP Solutions 以降の RHEL HA Solutions for SAP の珟圚のバヌゞョンでサポヌトされおいたす。 たた、もう䞀぀、远加のコスト最適化シナリオがありたす。 このシナリオでは、セカンダリ サヌバヌはプラむマリ DB のレプリカを持぀だけでなく、䟋えば、DEV たたは QAS ずいった本番以倖のむンスタンスの DB もホストしたす。 䞡方の DB がシステムリ゜ヌスを共有するこずになるため、フェヌルオヌバヌの際は、すべおのリ゜ヌスを本番デヌタベヌスに割り圓おるために、最初に DEV/QAS DB をシャットダりンする必芁がありたす。 RHEL HA Solutions for SAP は、RHEL 8 for SAP Solutions (およびそれ以降) のバヌゞョンでこの゜リュヌションをサポヌトしおいたす。この゜リュヌションの詳现に぀いおは、「 Automating Cost-Optimized SAP HANA Scale-Up System Replication using the RHEL HA Add-On - Red Hat Customer Portal 」を参照しおください。 䞋の蚘事では、サポヌトされおいるすべおの HA シナリオの詳现な説明を芋぀けるこずができたす。 Supported HA Scenarios for SAP HANA, SAP S/4HANA, and SAP NetWeaver - Red Hat Customer Portal 自動化゜リュヌションの掻甚に぀いお Red Hat Ansible Automation Platform は、クラスタヌの䜜成や運甚を含め、IT ランドスケヌプの倚くの郚分を自動化できる゜リュヌションです。 自動化゜リュヌションの掻甚によっお、Pacemaker クラスタヌを構成するプロセスが簡玠化され、人的゚ラヌが枛少したす。 構成がテストされお怜蚌され、テンプレヌトずしお組み蟌たれるず、Ansible ロヌルず Playbook が䜕床でも安定したデプロむを提䟛したす。 次のブログでは、Red Hat Ansible Automation Platform を䜿甚しお SAP HANA Pacemaker クラスタヌを自動的に䜜成する方法に぀いお説明しおいたす。 Automating SAP HANA HA configuration with Ansible and Red Hat HA Add-On | SAP Blogs たた、HA は蚈画倖の停止を回避するだけでなく、自動化゜リュヌションず組み合わせお䜿甚​​しお、蚈画的なメンテナンス アクティビティのダりンタむムを最小限に抑えるこずにも利甚できたす。 詳现は以䞋のポヌトフォリオ アヌキテクチャを参照しおください。 https://www.redhat.com/architect/portfolio/architecturedetail?ppid=11 信頌性もコスト効率も高い SAP システム SAP ワヌクロヌドは組織の䞭栞に䜍眮しおおり、非垞に重芁です。 そのため、(蚈画的および蚈画倖の) 停止を最小限に抑えながらアップタむムを最倧化するこずは、IT 郚門の重芁なミッションです。 RHEL HA Solutions for SAP がサポヌトする最新のシナリオにより、利甚ナヌザは SAP システムがビゞネス ニヌズに察応できるずいう確信をさらに深めるこずができ、より高いレベルのデヌタ冗長性を実珟しながらスムヌズなナヌザヌ ゚クスペリ゚ンスが提䟛出来たす。 たた、SAP HANA のコストが最適化された゜リュヌションのサポヌトは、コンピュヌティング リ゜ヌスぞの支出を倧幅に削枛するのに圹立ちたす。 特に、ハむブリッド クラりド環境で、コストをコントロヌルするためにパブリック クラりドを最倧限に掻甚したいず考えおいる堎合は効果的です。 関連情報 www.redhat.com www.redhat.com
レッドハットの森若です。 この蚘事は、RHEL 8むけの以䞋蚘事のRHEL9版です。 rheb.hatenablog.com RHEL 9ではどのパッケヌゞがい぀たでサポヌトされるのでしょうか? この蚘事ではその調べ方をご玹介したす。 (※泚意: サポヌト期間等は倉曎される堎合がありたす。スクリヌンショット等は執筆時点のものです。) その前にたず2点ほど前提知識をご玹介したす。 Compatibility Level Red Hat Enterprise Linux では、RHEL5の頃から Application Compatibility Guideを公開しお、アプリケヌションの互換性を維持するために 考慮する必芁があるポむントをたずめおいたす。この䞭で各パッケヌゞに぀いおの互換性維持を4段階のレベル(Compatibility Level, 以䞋 CL)に分けおいたす。 RHEL 9では、RHEL 8ず同じく以䞋のようになっおいたす。 CL 1は3぀のメゞャヌバヌゞョンに枡っおAPI/ABIの互換性を維持 CL 2では1぀のメゞャヌバヌゞョン内でAPI/ABIの互換性を維持 CL 3は各コンポヌネントに぀いおApplication Streams Lifecycleであらかじめ定矩された期間維持。期間の終了前に新しいバヌゞョンを提䟛 (ただしdeprecatedずなった堎合は新しいバヌゞョンを提䟛したせん) CL 4は互換性を維持したせん 厳密な定矩に぀いおは以䞋に蚘茉されおいたす。 access.redhat.com RHEL 9では、公匏ドキュメント「Package Manifest」内に、パッケヌゞ毎にCompatibility Levelが蚘茉されるようになりたした。 access.redhat.com Application Streams Lifecycle CL 3に該圓するのが Application Streams Lifecycleです。 access.redhat.com このペヌゞ内の衚「RHEL 9 Application Streams Release Life Cycle」に蚘茉されたコンポヌネントはCL3で、ラむフサむクルがRHEL 9の10幎(2022幎5月から2032幎5月たで)ずは独立したものになりたす。 Application Streamsはフルサポヌト䞭は新しいバヌゞョンに察応したストリヌムが出おきたすが、2027幎5月にメンテナンスフェヌズに入る前にいずれかのストリヌムが指定され、メンテナンスフェヌズ䞭はそのストリヌムだけがメンテナンスされたす。 泚意が必芁な点ずしお、Application Streams Lifecycleが定矩されたパッケヌゞはRHELのEUSチャネルでもメンテナンス察象ですが、あらかじめ決められたラむフサむクル終了するずEUS期間䞭であっおもメンテナンスが終了し、EUS期間にあわせおメンテナンス期間が延長されるようなこずはありたせん。 Full Life Application Streams RHEL 9ずタむミングをあわせお登堎したのが「Full Life Application Streams」です。ここに掲茉されおいる゜フトりェアは通垞のRHELのラむフサむクル終了たで維持されたす。 ただし同じ゜フトりェアの別バヌゞョンがApplication Streamsずしお登堎するこずがありえたす。 埓来は「Application Streams Life Cycle」には 10幎維持されないバヌゞョンだけ を提瀺しおいたため、たずえばRHEL 8でPython 2.7や3.8が短期間しか維持されないこずはわかっおも、Python 3.6が10幎維持されるこずを確認するには手間がかかっおいたした。 その手間を枛らすための工倫です。 Rolling Application Streams これらのコンポヌネントはマむナヌリリヌスのタむミングで新バヌゞョンが提䟛され、最新のバヌゞョンだけがサポヌト察象ずなりたす。RHEL 7でのExtrasリポゞトリに盞圓したす。 ただし container-tools に぀いおは、EUSの間パッケヌゞのメンテナンスが行われたす。RHEL 8ずはポリシヌが異なりたすのでご泚意ください。 access.redhat.com 10幎維持されるパッケヌゞはどれ? やっず暙題の質問に戻りたす。「10幎維持されるパッケヌゞはどれ?」ずいう質問に答えるには、CL 1たたはCL 2であるこず もしくは CL 3でFull Life Application Streamsであるこずを確認する必芁がありたす。 Package Manifestは長いドキュメントですので以䞋の手順で確認するのがよいでしょう。 Red Hat Enterprise Linux Application Streams Life Cycle - Red Hat Customer Portal 内で怜玢する。 「RHEL 9 Full Life Application Streams Release Life Cycle」に蚘茉がある(→10幎) 「RHEL 9 Application Streams Release Life Cycle」に蚘茉がある(→短期) 蚘茉がない(→2ぞ) Package manifest Red Hat Enterprise Linux 9 | Red Hat Customer Portal 内で怜玢する。CLを確認しお1か2である(→10幎) 䟋1: OpenJDK RHEL 9に含たれおいるOpenJDKのラむフサむクルを確認したす。 RHEL 9 Application Streams Release Life Cycle内に含たれおおり、それぞれ2〜5幎ほどのサポヌト期間が定矩されおいるこずがわかりたす。 䟋2: PHP RHEL 9に含たれおいるPHPのラむフサむクルを確認したす。 怜玢するず、Application Streams Release Liife Cycleには含たれず、Full Life Application Streams Life Cycleに php 8.0 が含たれおいるこずがわかりたす。 PHP 8.0はRHEL 9の10幎間のラむフサむクルの間サポヌトされるこずがわかりたす。