æŠèŠ 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幎éã®ã©ã€ããµã€ã¯ã«ã®éãµããŒããããããšãããããŸãã