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

OpenShiftはじめの一歩から継続的なチャレンジ

 OpenShiftはじめの一歩から継続的なチャレンジ

hiroaki ishii

April 04, 2024
Tweet

Other Decks in Technology

Transcript

  1. © 2024 Mizuho Research & Technologies, Ltd. 2024年3月28日 技術開発本部 先端技術研究部

    石井 宏明 OpenShiftはじめの一歩から継続的なチャレンジ ~ AirGapの強い味方”oc-mirror”ご紹介~ OpenShift.Run - 究極で最強のテックカンファレンス 0
  2. © 2024 Mizuho Research & Technologies, Ltd. 名前:石井 宏明 所属:みずほリサーチ&テクノロジーズ

    職務:コンテナやオブザーバビリティ関連技術の 調査/検証・案件支援 好物:ドキュメンタリー映画 自己紹介 2
  3. © 2024 Mizuho Research & Technologies, Ltd. 1. 弊社取組ご紹介 2.

    oc-mirrorについて 3. oc-mirrorの使い方 4. oc-mirror利用時の工夫点 5. 最後に 目次 3
  4. © 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) 記録のシステム(元帳管理、基幹系) つながりのシステム(顧客との絆、モバイル)
  5. © 2024 Mizuho Research & Technologies, Ltd. Kubernetesの本番導入に向けては、以下が課題 • Kubernetesを活用する場合の、

    ランニングコストを上回るビジネ スメリット/ニーズ • 初物リスク(社内での利用実績・経験が必要) • 運用体制・ルール整備・障害対応手順の確立 →社内開発環境(オンプレ/AirGap)で経験を積むことからスタート OpenShiftはじめの一歩から継続的なチャレンジ 6
  6. © 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
  7. © 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
  8. © 2024 Mizuho Research & Technologies, Ltd. (続き) ステップ4(現在):vCenter APIを活用したIPI方式(ほぼ自動での

    OpenShift構築)に変更。ダイナミックプロビ ジョニングも利用可能になった。 社内へ宣伝し、実開発案件で活用してもらえるようアピール中! その他随時、社内のPoC案件等支援中! 本日は、AirGapでOpenShiftを構築していく際に便利なツール(oc- mirror)を紹介します。 OpenShiftはじめの一歩から継続的なチャレンジ 10
  9. © 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
  10. © 2024 Mizuho Research & Technologies, Ltd. oc-mirror概念図 13 How

    oc-mirror will help you reduce container management complexity (redhat.com) インターネット← →AirGap パッケージ化 重複排除 設定ファイル通り ダウンロード アンパック プッシュ ミラー設定を適 用するためのマ ニフェストファ イル生成
  11. © 2024 Mizuho Research & Technologies, Ltd. ① Yamlファイルで得たい資材を定義できる。(見やすい) ②

    取得済の内容はメタデータで管理されており、差分情報のみダウ ンロード、アップロードされる。パッケージファイルがシーケン ス番号で管理されるので、間違いが起こりにくい。 ③ 依存関係を追って資材を一括取得してくれる。( Helm Chartの Chartsフォルダ内のChart等 ) ④ イメージ群を1つのtarファイルにすることが可能。ミラーレジスト リへ直接ミラーすることも可能。 「oc-mirror」の良いところ 14
  12. © 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
  13. © 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指定も可能。
  14. © 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ディレクトリ
  15. © 2024 Mizuho Research & Technologies, Ltd. 保存先フォルダをAirGap環境へ移送し、以下コマンドでローカルレジ ストリへアップロードする。 ◆ローカルレジストリへアップロード

    $ oc mirror --from ./ocp4.14.10/mirror_seq1_000000.tar ¥ docker://<local-registry> ~省略~ 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
  16. © 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
  17. © 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
  18. © 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からのアップグレードパスがある中で、 最新のバージョン
  19. © 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
  20. © 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抜粋→
  21. © 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
  22. © 2024 Mizuho Research & Technologies, Ltd. Helm Chartを確認すると、values.yamlで適切な値を使用するような 仕様になっていました。

    例2:利用時、values.yamlのメンテが必須な場合 30 ←デプロイ先クラウドプロ バイダ毎のコンポーネン ト設定が自動でできるよ う、ユーザーが指定・選 択する仕組みになってい ました。 (他にも選択項目が複数個 所有) values.yaml
  23. © 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
  24. © 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
  25. © 2024 Mizuho Research & Technologies, Ltd. (続き) ◆helm repoに追加

    $ helm repo add myrepo <Repo_URL> $ helm repo update $ helm search repo <某製品名> ◆ミラーリング $ vim imageset-config.yaml $ oc-mirror --config=./imageset-config.yaml file://<保存先ディレクトリ名> 不完全なHelm Chartをミラーする場合(ご参考コマンド手順) 33
  26. © 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
  27. 37

  28. © 2024 Mizuho Research & Technologies, Ltd. 以下、多くの助けを頂きました。 【Red Hatさんのサービス】

    コンサルサービス Customer support(ケース) Red Hat ラーニングサブスクリプション 【ブログ】 OpenShift 4.2におけるネットワーク制限環境下でのインストール - 赤帽エンジニアブログ (hatenablog.com) 【書籍】 OpenShift徹底活用ガイド 他多数 OpenShiftはじめの一歩から継続的なチャレンジ 39