Slide 1

Slide 1 text

© 2024 Mizuho Research & Technologies, Ltd. 2024年3月28日 技術開発本部 先端技術研究部 石井 宏明 OpenShiftはじめの一歩から継続的なチャレンジ ~ AirGapの強い味方”oc-mirror”ご紹介~ OpenShift.Run - 究極で最強のテックカンファレンス 0

Slide 2

Slide 2 text

© 2024 Mizuho Research & Technologies, Ltd. 当資料は情報提供のみを目的として作成されたものであり、商品の勧 誘を目的としたものではありません。本資料は、当社が信頼できると 判断した各種データに基づき作成されておりますが、その正確性、確 実性を保証するものではありません。また、本資料に記載された内容 は予告なしに変更されることもあります。 免責事項 1

Slide 3

Slide 3 text

© 2024 Mizuho Research & Technologies, Ltd. 名前:石井 宏明 所属:みずほリサーチ&テクノロジーズ 職務:コンテナやオブザーバビリティ関連技術の 調査/検証・案件支援 好物:ドキュメンタリー映画 自己紹介 2

Slide 4

Slide 4 text

© 2024 Mizuho Research & Technologies, Ltd. 1. 弊社取組ご紹介 2. oc-mirrorについて 3. oc-mirrorの使い方 4. oc-mirror利用時の工夫点 5. 最後に 目次 3

Slide 5

Slide 5 text

弊社取組ご紹介 4

Slide 6

Slide 6 text

© 2024 Mizuho Research & Technologies, Ltd. 【 Digital Agility Layer構想】 OpenShiftはじめの一歩から継続的なチャレンジ 5 System APIs Process APIs Experience APIs Web Browser 基幹系システム Digital Agility Layer CoreSystem API GW API FrontEnd APL JavaScript Mobile APL FinTech Enterprise HyperVisor OS OS OS OS OS OS(Linux・・・) Container(Docker/Kubernetes) HW (On Premiss,Private Cloud) HW (Public Cloud) Cloud Service 銀行サービスに付加価値を付ける仕組みを素早く構築するための基盤 Service APL HW (PC,MobilePhone,Tablet,IoT・・・) OS(Windows,ios,Android・・・) FrameWork、SDK・・・ Platform 店頭タブレット API Micro Service Micro Service Micro Service Micro Service API API API API API API API API API API Micro Service Micro Service 基幹システムと接続す るための機能別API 顧客側とシステム側)間を繋 ぎやすく抽象化したAPI 顧客志向を実現するた めのサービス別API Cloud Service SoR (Systems of Record) SoE (Systems of Engagement) 記録のシステム(元帳管理、基幹系) つながりのシステム(顧客との絆、モバイル)

Slide 7

Slide 7 text

© 2024 Mizuho Research & Technologies, Ltd. Kubernetesの本番導入に向けては、以下が課題 • Kubernetesを活用する場合の、 ランニングコストを上回るビジネ スメリット/ニーズ • 初物リスク(社内での利用実績・経験が必要) • 運用体制・ルール整備・障害対応手順の確立 →社内開発環境(オンプレ/AirGap)で経験を積むことからスタート OpenShiftはじめの一歩から継続的なチャレンジ 6

Slide 8

Slide 8 text

© 2024 Mizuho Research & Technologies, Ltd. 開発環境(Airgap/オンプレ)でCI/CD,GitOps,WebIDEの環境を構築 OpenShiftはじめの一歩から継続的なチャレンジ 7 k8s運用 支援環境 共通環境 個別CI環境 開発環境 RHOSDS (Red Hat OpenShift Dev spaces)

Slide 9

Slide 9 text

© 2024 Mizuho Research & Technologies, Ltd. 開発環境(Airgap/オンプレ)でCI/CD,GitOps,WebIDEの環境を構築 OpenShiftはじめの一歩から継続的なチャレンジ 8 Jenkins master Jenkins agent OpenShift Push WebHook (Triger) build test image Pipeline実行 ソースコード リポジトリ マニフェスト リポジトリ Image Registor y CI CD Dev Staging Project1(顧客A、○○システム、△△案件) Project2(顧客B、○○システム、△△案件) ・ ・ ・ 開発者 Red Hat OpenShift Dev spaces

Slide 10

Slide 10 text

© 2024 Mizuho Research & Technologies, Ltd. Linux初心者だったので、以下ステップで徐々に進めました。 ステップ0:Windows Hyper-VやvSphereでLinux(CentOS)練習 ステップ1:Linux上のOpenShift Local(インターネット有)で練習 ステップ2:Proxy環境へOCP試行導入 (Any Platform方式での、ほぼ手動OpenShift構築。 AirGapを想定しつつTekton,Argo CD,RHODSでサンプ ルSpring Bootアプリを試行。) ステップ3:AirGap環境オンプレマシンへ導入(Any Platform方式)。 →Any Platform方式ではPVのダイナミックプロビジョニング(PVCに 合わせた自動PV割り当て)が使えず不便を感じた。 (続く) OpenShiftはじめの一歩から継続的なチャレンジ 9

Slide 11

Slide 11 text

© 2024 Mizuho Research & Technologies, Ltd. (続き) ステップ4(現在):vCenter APIを活用したIPI方式(ほぼ自動での OpenShift構築)に変更。ダイナミックプロビ ジョニングも利用可能になった。 社内へ宣伝し、実開発案件で活用してもらえるようアピール中! その他随時、社内のPoC案件等支援中! 本日は、AirGapでOpenShiftを構築していく際に便利なツール(oc- mirror)を紹介します。 OpenShiftはじめの一歩から継続的なチャレンジ 10

Slide 12

Slide 12 text

oc-mirrorについて 11

Slide 13

Slide 13 text

© 2024 Mizuho Research & Technologies, Ltd. 「oc-mirror」は、Proxy環境や完全にインターネットと接続してい ない環境(AirGap環境)へOpenShift関連の資材(OpenShift Release、 Operator、Helm、個別イメージ)を一括取得・パッケージ化する ツールです。 差分管理・同期が行え、ミラーレジストリーのライフサイクル管理 を支援してくれます。 • バイナリ https://mirror.openshift.com/pub/openshift-v4/clients/ocp/< バージョン>/oc-mirror.tar.gz • GitHub https://github.com/openshift/oc-mirror oc-mirrorについて 12

Slide 14

Slide 14 text

© 2024 Mizuho Research & Technologies, Ltd. oc-mirror概念図 13 How oc-mirror will help you reduce container management complexity (redhat.com) インターネット← →AirGap パッケージ化 重複排除 設定ファイル通り ダウンロード アンパック プッシュ ミラー設定を適 用するためのマ ニフェストファ イル生成

Slide 15

Slide 15 text

© 2024 Mizuho Research & Technologies, Ltd. ① Yamlファイルで得たい資材を定義できる。(見やすい) ② 取得済の内容はメタデータで管理されており、差分情報のみダウ ンロード、アップロードされる。パッケージファイルがシーケン ス番号で管理されるので、間違いが起こりにくい。 ③ 依存関係を追って資材を一括取得してくれる。( Helm Chartの Chartsフォルダ内のChart等 ) ④ イメージ群を1つのtarファイルにすることが可能。ミラーレジスト リへ直接ミラーすることも可能。 「oc-mirror」の良いところ 14

Slide 16

Slide 16 text

© 2024 Mizuho Research & Technologies, Ltd. Operatorは、AirGap環境に対応していない場合があります。 希望するOpratorがAirGap環境で利用可能か、事前に確認しましょう。 • Red Hat Operators Supported in Disconnected Mode https://access.redhat.com/articles/4740011 (参考:Operator作成時にAirGap環境に対応させる為の指針) • Is your Operator Air-Gap Friendly? https://www.redhat.com/en/blog/is-your-operator-air-gap- friendly?extIdCarryOver=true&sc_cid=701f2000001OH7EAAW • Building an Air-Gap Friendly Operator https://www.redhat.com/ja/blog/building-an-air-gap-friendly-operator OperatorのAirGap対応 15

Slide 17

Slide 17 text

oc-mirrorの使い方 16

Slide 18

Slide 18 text

© 2024 Mizuho Research & Technologies, Ltd. 以下のようなyamlファイルを用意(imageset-config-ocp4.14.10.yaml) (参考) 以下コマンドでフォーマット作成可能 $ oc-mirror init > imageset-config.yaml 「oc-mirror」の使い方(1) 17 (サンプル) https://github.com/openshift/oc-mirror/blob/main/docs/examples/imageset-config-release-latest.yaml メタデータ(差分管理情報)を 格納するディレクトリを指定。 (左記の場合、相対パスの metadataディレクトリに保存) Operatorは一旦空指定。指 定しないと全てのOperator をダウンロードする仕様。 OCPのバージョンを指定。 バージョンのレンジ指定や OKD指定も可能。

Slide 19

Slide 19 text

© 2024 Mizuho Research & Technologies, Ltd. 以下コマンドでダウンロード&アーカイブ化 ◆ダウンロード&アーカイブ化 $ oc mirror --config=./imageset-config-ocp4.14.10.yaml file://ocp4.14.10 ~省略~ info: Mirroring completed in 9m0.39s (36.89MB/s) Creating archive <ディレクトリ>/ocp4.14.10/mirror_seq1_000000.tar $ ls ocp4.14.10/ mirror_seq1_000000.tar oc-mirror-workspace $ ls -a metadata/publish/ . .. .metadata.json 「oc-mirror」の使い方(2) 18 シーケンス番号。 差分管理されており、複数回ミラーす ると、番号が増えていく。 順番にアップロードしないとエラーと なる仕様。 ダウンロードした資材の情報が記録されている。 以下のようなコマンドを打つと見やすい。 $ cat metadata.json | jq 保存先ディレクトリ指定。 この場合、相対パスで ocp4.9ディレクトリ

Slide 20

Slide 20 text

© 2024 Mizuho Research & Technologies, Ltd. 保存先フォルダをAirGap環境へ移送し、以下コマンドでローカルレジ ストリへアップロードする。 ◆ローカルレジストリへアップロード $ oc mirror --from ./ocp4.14.10/mirror_seq1_000000.tar ¥ docker:// ~省略~ info: Mirroring completed in 790ms (48.25MB/s) Wrote release signatures to oc-mirror-workspace/results-1710902346 Writing image mapping to oc-mirror-workspace/results-1710902346/mapping.txt Writing UpdateService manifests to oc-mirror-workspace/results-1710902346 Writing ICSP manifests to oc-mirror-workspace/results-1710902346 「oc-mirror」の使い方(3) 19 (参考) https://github.com/openshift/oc-mirror?tab=readme-ov-file#fully-disconnected

Slide 21

Slide 21 text

© 2024 Mizuho Research & Technologies, Ltd. ◆作成された「 oc-mirror-workspace 」フォルダの内容確認 $ cat oc-mirror-workspace/results-1710902346/imageContentSourcePolicy.yaml ``` ~省略~ spec: repositoryDigestMirrors: - mirrors: - registry.test.example.local:5000/openshift/release source: quay.io/openshift-release-dev/ocp-v4.0-art-dev - mirrors: - registry.test.example.local:5000/openshift/release-images source: quay.io/openshift-release-dev/ocp-release ``` →OCPインストールの際は、上記で得られるミラー情報を、install.config.yamlの 「imageContentSources:」に指定すると良いです。 「oc-mirror」の使い方(4) 20

Slide 22

Slide 22 text

© 2024 Mizuho Research & Technologies, Ltd. ◆ oc-mirror が生成したリソースを使用するためのクラスター設定 (既にOpenShiftがある場合) cluster-admin ロールを持つユーザーでログイン後以下コマンド実行 $ oc apply -f ./ocp4.14.10/oc-mirror-workspace/results-xxxxxxxxxx/ $ oc apply -f ./ocp4.14.10/oc-mirror-workspace/results-xxxxxxxxxx/release- signatures/ 「oc-mirror」の使い方(5) 21 (参考) https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.15/html/installing/installing-mirroring-disconnected#oc-mirror-disk-to- mirror_installing-mirroring-disconnected

Slide 23

Slide 23 text

© 2024 Mizuho Research & Technologies, Ltd. コマンドで、”前回実行以降の更新可能情報”を一覧表示可能 ◆アップデートの確認 $ oc-mirror list updates imageset-config-ocp4.14.10.yaml Listing update for release channel: stable-4.14 Architecture: amd64 4.14.10 4.14.16 (参考) 今回利用したv4.9からアップデートできる内容を確認するには以下 • Red Hat OpenShift Container Platform Update Graph https://access.redhat.com/labs/ocpupgradegraph/update_path • OpenShift Container Platform (OCP) 4 upgrade paths https://access.redhat.com/solutions/4583231 (補足)「oc-mirror」の使い方(6) 22 OCP4.14.10からのアップグレードパスがある中で、 最新のバージョン

Slide 24

Slide 24 text

oc-mirror利用時の工夫点 23

Slide 25

Slide 25 text

© 2024 Mizuho Research & Technologies, Ltd. Helm Chart Repositoryにあるvalues.yamlをスポット変更するような CLIオプションは、現状無いです。なので、values.yamlの変更が必要 な場合はひと工夫必要です。 【背景】 • oc-mirrorのHelm資材取得は、imageset-config.yamlに定義された Helm Chart Repositoryを参照し、資材をダウンロードする仕組み。 • ローカルにダウンロードしたHelm Chartを参照先にすることが出来 ない。 「oc-mirror」利用時の工夫点 24

Slide 26

Slide 26 text

© 2024 Mizuho Research & Technologies, Ltd. 例:以下yamlを作り、oc-mirrorでミラーします。 例1:Helmでオプショナルなイメージを一括取得したい 25 imageset-config.yaml

Slide 27

Slide 27 text

© 2024 Mizuho Research & Technologies, Ltd. 前述定義では“bitnami/kafka”と“bitnami/zookeeper”のイメージをミ ラーできますが、values.yamlでオプショナルに定義されたイメージ はミラー出来ません。 • bitnami/kubectl • bitnami/bitnami-shell • bitnami/kafka-exporter • bitnami/jmx-exporter 例1:Helmでオプショナルなイメージを一括取得したい 26 Values.yaml抜粋→

Slide 28

Slide 28 text

© 2024 Mizuho Research & Technologies, Ltd. 「additionalImages」として追加するとミラーすることが出来ます。 例1:Helmでオプショナルなイメージを一括取得したい 27 imageset-config.yaml

Slide 29

Slide 29 text

© 2024 Mizuho Research & Technologies, Ltd. Helm Chartによっては、そのままではミラーできないものがあります。 例2:利用時、values.yamlのメンテが必須な場合 28 ←某製品に必要なイメージ群 をミラーリングしてみます。 imageset-config.yaml

Slide 30

Slide 30 text

© 2024 Mizuho Research & Technologies, Ltd. <実行結果:エラーメッセージ> $ oc-mirror --config=./imageset-<某製品名>-sample.yaml file://<某製品名> Found: <某製品名>/oc-mirror-workspace/src/publish Found: <某製品名>/oc-mirror-workspace/src/v2 Found: <某製品名>/oc-mirror-workspace/src/charts Found: <某製品名>/oc-mirror-workspace/src/release-signatures No metadata detected, creating new workspace Pulling chart <某製品名> WARNING: Verification not found for <某製品名>/<某製品名>: failed to fetch https://<某製品名>systems.github.io/<某製品名>-helm-charts/<某製品名>- 3.16.2.tgz.prov : 404 Not Found error: error rendering chart <某製品名>: execution error at (<某製品名 >/templates/<某製品名>-provider-validate.yaml:3:4): global.provider must be one of [k8s openshift eks gke pks aks] 例2:利用時、values.yamlのメンテが必須な場合 29

Slide 31

Slide 31 text

© 2024 Mizuho Research & Technologies, Ltd. Helm Chartを確認すると、values.yamlで適切な値を使用するような 仕様になっていました。 例2:利用時、values.yamlのメンテが必須な場合 30 ←デプロイ先クラウドプロ バイダ毎のコンポーネン ト設定が自動でできるよ う、ユーザーが指定・選 択する仕組みになってい ました。 (他にも選択項目が複数個 所有) values.yaml

Slide 32

Slide 32 text

© 2024 Mizuho Research & Technologies, Ltd. そこで、カスタムChart Repositoryを独自に作成する方法を取ります。 【インターネット接続環境での作業】 ステップ1:Helm Chartをpullする ステップ2:Helm Chart( values.yaml 等)を編集する ステップ3:OpenShfit Localなどでカスタム Chart Repository の公開 (HttpdなどでChart のアーカイブ(及びindexファイル)を 公開する Web サーバを起動すると Helm Reposytory と して機能します。) ステップ4:カスタムChart Repositoryからoc-mirrorでミラーリング 例2:利用時、values.yamlのメンテが必須な場合 31

Slide 33

Slide 33 text

© 2024 Mizuho Research & Technologies, Ltd. (ご参考コマンド手順) ◆Helm values.yaml取得及び編集 $ helm pull <某製品名>/<某製品名> –untar $ vim <某製品名>/values.yaml ◆パッケージング(アーカイブファイル作成) $ helm package <某製品名> ◆インデックス作成 $ helm repo index . ◆カスタム Chart Repository 公開 $ oc new-app --name custom-helm-repositry httpd~./ $ oc start-build custom-helm-repositry --from-dir . --wait $ oc expose svc custom-helm-repository $ oc get route (続く) 例2:利用時、values.yamlのメンテが必須な場合 32

Slide 34

Slide 34 text

© 2024 Mizuho Research & Technologies, Ltd. (続き) ◆helm repoに追加 $ helm repo add myrepo $ helm repo update $ helm search repo <某製品名> ◆ミラーリング $ vim imageset-config.yaml $ oc-mirror --config=./imageset-config.yaml file://<保存先ディレクトリ名> 不完全なHelm Chartをミラーする場合(ご参考コマンド手順) 33

Slide 35

Slide 35 text

© 2024 Mizuho Research & Technologies, Ltd. AirGap環境へ移送後、さらに別環境へ移送するためのパッケージを作 成することが可能になるようです。 OpenShift 4.15 リリースではMVP (Minimal Viable Product) 、 OpenShift 4.16 の Tech Preview に移行する予定。 (参考)Enclave(飛び地)環境への対応 34 oc-mirror/docs/enclave_support.md at main · openshift/oc-mirror · GitHub

Slide 36

Slide 36 text

最後に 35

Slide 37

Slide 37 text

© 2024 Mizuho Research & Technologies, Ltd. oc-mirrorがあって大変助かりました!! インターネット接続制限のある皆様・・・ 大変だと思いますが、 メゲずに頑張りましょう!! 最後に 36

Slide 38

Slide 38 text

37

Slide 39

Slide 39 text

Appendix 38

Slide 40

Slide 40 text

© 2024 Mizuho Research & Technologies, Ltd. 以下、多くの助けを頂きました。 【Red Hatさんのサービス】 コンサルサービス Customer support(ケース) Red Hat ラーニングサブスクリプション 【ブログ】 OpenShift 4.2におけるネットワーク制限環境下でのインストール - 赤帽エンジニアブログ (hatenablog.com) 【書籍】 OpenShift徹底活用ガイド 他多数 OpenShiftはじめの一歩から継続的なチャレンジ 39