OpenShiftのDisconnected環境では、必要なイメージ群を事前にミラーリングして、外部レジストリに依存せずにクラスタを構築・運用できます。2024年以降、oc-mirror v2
が正式に登場し、従来のv1から大きく進化しました。
この記事では、v1との違い、移行のポイント、実践手順、ディレクトリ構造を見ていきます。
🧭 oc-mirrorとは?
oc-mirror
は、OpenShift CLI (oc
) に追加するプラグインで、Disconnected環境向けに必要なイメージ群(OpenShift本体、Operator、Helmチャート、追加イメージなど)をミラーレジストリに転送するためのツールです。
主な機能
- OpenShiftのリリースイメージ、Operator、Helmチャート、追加イメージを一括ミラー
- 宣言型の設定ファイル(ImageSetConfiguration)による柔軟な制御
- インクリメンタルミラーリング(差分更新)
- v2ではイメージ削除機能(DeleteImageSetConfiguration)も追加
🧭 oc-mirror v1とv2の違い
項目 | v1 | v2 |
---|---|---|
実行方法 | oc mirror | oc mirror --v2 |
アーキテクチャ | 単一構造(MirrorOptions) | モジュール構造(ExecutorSchema) |
並列処理 | 逐次処理 | バッチ並列処理(channelベース) |
キャッシュ | メタデータベース | ファイルキャッシュベース |
削除機能 | 自動プルーニング | DeleteImageSetConfiguration による明示的削除 |
出力リソース | ICSP | IDMS / ITMS |
ローカルレジストリ | ファイル操作 | HTTP API対応のレジストリサービス |
エラーハンドリング | 基本的なログ | コンテキスト付き詳細ログ |
ディレクトリ構造 | oc-mirror-workspace | workspace/working-dir に統一 |
🔄 v1はOpenShift 4.18で非推奨となり、将来的に削除予定です。v2への移行が推奨されています。
🛠️ oc-mirror v2 実践手順
1. ImageSetConfiguration の作成
imagesetconfiguration.yaml
kind: ImageSetConfiguration
apiVersion: mirror.openshift.io/v2alpha1
mirror:
platform:
channels:
- name: stable-4.18
minVersion: 4.18.15
maxVersion: 4.18.15
graph: true
operators:
- catalog: registry.redhat.io/redhat/redhat-operator-index:v4.18
packages:
- name: cluster-logging
channels:
- name: stable-6.2
minVersion: "6.2.2"
maxVersion: "6.2.2"
helm: {}
additionalImages:
- name: registry.redhat.io/ubi9/ubi:latest
storageConfig:
local:
path: ./oc-mirror-workspace
2. ミラー実行コマンド
以下はローカルディレクリの./oc-mirror-workspaceに、イメージをミラーリングする例です。
oc-mirror --config=imageset-config.yaml file://./oc-mirror-workspace --v2 \
--workspace file://./ \
--cache-dir ./cache-dir \
--image-timeout 30m \
--retry-delay 30s \
--retry-times 4 \
--parallel-images 1 \
--src-tls-verify false \
--log-level debug
📁 oc-mirror v2で生成されるディレクトリ構造
./
├── cache-dir/ # イメージキャッシュ
├── workspace/ # 中間ファイル・メタ情報
│ ├── cluster-resources/ # IDMS, ITMS, CatalogSourceなど
│ ├── logs/ # 実行ログ
│ ├── release-images/ # OCPリリースイメージ
│ ├── hold-release/ # リリースメタ情報
│ └── signatures/ # イメージ署名
└── oc-mirror-workspace/ # 成果物(tar形式など)
├── metadata/
├── manifests/
├── image-set/
└── helm/
🧠
cluster-resources/
にあるImageDigestMirrorSet
やImageTagMirrorSet
をクラスタに適用することで、Disconnected環境でもミラー済みイメージを参照可能になります。
🧹 v2でのイメージ削除方法
v2では自動削除が廃止され、明示的に削除対象を定義する DeleteImageSetConfiguration
を使用します。
delete-imagesetconfiguration.yaml
kind: DeleteImageSetConfiguration
apiVersion: mirror.openshift.io/v2alpha1
delete:
platform:
channels:
- name: stable-4.18
minVersion: 4.18.15
maxVersion: 4.18.15
削除コマンド:
以下はミラーレジストリから直接イメージを削除する例です。
oc mirror --v2 delete --generate \
--config deleteimagesetconfig.yaml \
--workspace file://./workspace \
docker://registry.example.com:8443
🎯 まとめ
oc-mirror v2
は、OpenShiftのDisconnected運用をより安全・効率的に進化させるツールです。
v1と比較すると、v2ではImageSetConfiguration
における追記管理が不要となり、都度ミラーするイメージのみ を定義すれば良い、という運用に変更されました。また、クラスターに適用するIDMSやカタログソースのインクリメント管理、ICSPからIDMSへの変換が不要となり、運用がとても楽になりました。
v1からの移行は必須となるため、早めの対応をおすすめします。
コメント