はじめに
このガイドでは、エアギャップ環境、切り離された環境、または制限付きネットワークの顧客管理環境に W&B Platform をデプロイするためのステップごとの手順を説明します。このガイドに従うことで、W&B イメージとチャートをホストするための内部コンテナーレジストリと Helm リポジトリを設定し、W&B Kubernetes Operator をインストールして、外部へのインターネット接続なしで W&B Platform をデプロイできます。このガイドは、規制対象または分離されたネットワークで Kubernetes インフラストラクチャーを管理するプラットフォーム管理者および DevOps エンジニアを対象としています。 エアギャップデプロイは、次のような環境で一般的です。- セキュアな政府施設
- 厳格なネットワーク分離が求められる金融機関
- コンプライアンス要件のある医療機関
- 産業用制御システム (ICS) 環境
- 機密ネットワークを持つ研究施設
前提条件
始める前に、エアギャップ環境が以下の要件を満たしていることを確認してください。バージョン要件
SSL/TLS 要件
W&B では、クライアントとサーバー間の安全な通信のために、有効な署名付き SSL/TLS 証明書が必要です。SSL/TLS の終端は ingress または load balancer で行う必要があります。W&B Server アプリケーション自体は、SSL または TLS 接続を終端しません。 可能であれば、Let’s Encrypt のようなサービスを使用して、load balancer に信頼できる証明書を提供するのが効果的です。Caddy や Cloudflare のようなサービスを使えば、SSL を代わりに管理できます。 セキュリティポリシーで、信頼できるネットワーク内でも SSL 通信が必要な場合は、Istio のようなツールや side car containers の使用を検討してください。ハードウェア要件
CPU アーキテクチャ: W&B は Intel (x86) CPU アーキテクチャでのみ動作します。ARM はサポートされていません。 サイジング: Kubernetes ノードと MySQL の CPU、メモリ、ディスクのサイジング推奨事項については、リファレンスアーキテクチャの サイジング セクション を参照してください。要件は、Models、Weave、またはその両方を実行するかどうかによって異なります。MySQL データベース
W&B では、外部の MySQL データベースが必要です。 本番環境では、W&B はマネージドデータベースサービスの利用を推奨しています。 マネージドデータベースサービスには、自動バックアップ、監視、高可用性、パッチ適用の機能があり、運用負荷を軽減できます。 MySQL の要件 (推奨サイジングや設定パラメーターを含む) については、リファレンスアーキテクチャを参照してください。データベースを作成するための SQL については、ベアメタルガイドを参照してください。デプロイ環境のデータベース設定に関するご質問は、サポートまたは担当の AISE までお問い合わせください。 セルフマネージドインスタンス向けの MySQL の設定パラメーターについては、リファレンスアーキテクチャの MySQL 設定セクションを参照してください。Redis
W&B は単一ノードの Redis 7.x デプロイに依存しており、W&B の components はこれをジョブキューイングとデータのキャッシュに使用します。テストや概念実証の用途では、W&B Self-Managed にローカル Redis デプロイが含まれています。このバンドル版のデプロイは、本番環境での使用には適していません。 本番デプロイでは、W&B は次の環境にある Redis instance に接続できます。- Amazon ElastiCache
- Google Cloud Memorystore
- Azure Cache for Redis
- クラウドまたはオンプレミスのインフラストラクチャーでセルフホストする Redis
オブジェクトストレージ
W&B では、事前署名付き URL と CORS をサポートするオブジェクトストレージが必要です。 W&B は、次のストレージプロバイダを推奨しています。- Amazon S3: スケーラビリティ、データ可用性、セキュリティ、パフォーマンスを備えたオブジェクトストレージサービスです。
- Google Cloud Storage: 非構造化データを大規模に保存するためのマネージドサービスです。
- Azure Blob Storage: 非構造化データを大規模に保存するためのクラウドベースのオブジェクトストレージです。
- CoreWeave AI Object Storage: AI ワークロード向けに最適化された S3互換オブジェクトストレージです。
- MinIO Enterprise (AIStor)、NetApp StorageGRID、その他のエンタープライズソリューションなどのエンタープライズ S3互換ストレージ。
MinIO Open Source は現在メンテナンスモードであり、アクティブな開発は行われておらず、事前コンパイル済みバイナリも提供されていません。本番環境へのデプロイでは、W&B は、マネージドオブジェクトストレージサービス、または MinIO Enterprise (AIStor) などのエンタープライズ S3互換ソリューションを推奨しています。
エアギャップ環境固有の要件
前述の標準的な要件に加えて、エアギャップ環境でのデプロイには次のものが必要です。- 内部コンテナーRegistry: 必要なすべての W&B コンテナーイメージを含むプライベートなコンテナーRegistry (Harbor、JFrog Artifactory、Nexus など) へのアクセス
- 内部 Helm リポジトリ: W&B Helm チャートを含むプライベートな Helm チャートリポジトリへのアクセス
- イメージ転送機能: インターネットに接続されたシステムからエアギャップ環境のRegistryにコンテナーイメージを転送するための手段
- ライセンスファイル: 有効な W&B Enterprise ライセンス。ライセンスを取得するには (たとえば、インターネットに接続されたマシンから取得する場合) 、要件ページの License セクションを参照するか、W&B の担当アカウントチームにお問い合わせください。
エアギャップ 環境を準備する
以下の手順では、W&B のコンテナーイメージと Helm チャート をホストするための エアギャップ 環境を準備します。operator をインストールしたり、プラットフォームをデプロイしたりする前に、これらの手順を完了してください。Step 1: 内部コンテナーRegistryを設定する
Kubernetes クラスターはパブリックRegistryからイメージをプルできないため、デプロイ前に、必要なすべてのコンテナーイメージを内部のエアギャップ環境用コンテナーRegistryで利用できるようにしておく必要があります。W&B Operator の要件を把握し、コンテナーRegistry内のイメージを定期的に更新して維持する責任は、お客様にあります。必要なコンテナーイメージとそのバージョンの最新一覧については、Helm チャートを参照するか、W&B サポート または担当の W&B サポートエンジニアにお問い合わせください。
主要なW&Bコンポーネントのコンテナー
以下の主要なイメージは必須です。docker.io/wandb/controller: W&B Kubernetes Operator。docker.io/wandb/local: W&Bアプリケーションサーバー。docker.io/wandb/console: W&B管理コンソール。docker.io/wandb/megabinary: W&Bマイクロサービス (API、executor、glue、parquet)。
依存コンテナー
次のサードパーティ製依存イメージが必要です。docker.io/bitnamilegacy/redis: テストおよび開発時のローカル Redis デプロイに必要です。本番 Redis の要件については、前提条件の Redis セクション を参照してください。docker.io/otel/opentelemetry-collector-contrib: メトリクスとログを収集するための OpenTelemetry エージェント。quay.io/prometheus/prometheus: メトリクス収集用の Prometheus。quay.io/prometheus-operator/prometheus-config-reloader: Prometheus の依存イメージ。
完全なイメージ一覧を取得する
必要なイメージとバージョンの完全な一覧を Helm チャートから抽出するには、次の手順を実行します。-
インターネットに接続されたシステムで、W&B Helm charts リポジトリ から W&B Helm チャートをダウンロードします。
-
values.yamlファイルを確認し、すべてのコンテナーイメージとそのバージョンを特定します。または、次のコマンドを使用してリポジトリ名のみを抽出できます (バージョンタグは除く) 。リポジトリの一覧は、次のようになります。各イメージの具体的なバージョンタグを取得するには、上記の最初のコマンド (grep -E "repository:|tag:") を使用します。このコマンドでは、リポジトリ名と対応するバージョンタグの両方が表示されます。
イメージをエアギャップ環境の Registry に転送する
-
インターネットに接続されたシステムで、必要なイメージをすべて pull して保存します。
シェル変数を使用して、バージョンを一貫して管理します。以下の例にあるバージョン番号は、前の手順で Helm チャート を確認して特定した実際のバージョンに置き換えてください。ここに示しているバージョンはあくまで例であり、時間の経過とともに古くなります。
-
.tarファイルを、USB ドライブや安全なファイル転送など、承認済みの方法でエアギャップ環境に転送します。 -
エアギャップ環境で、イメージをロードし、内部 Registry に push します。
Step 2: 内部 Helm チャートリポジトリを設定する
コンテナーイメージを配置したら、Kubernetes Operator が W&B Helm チャートにアクセスできるようにする必要もあります。次の Helm チャートを内部 Helm リポジトリで利用できるようにしてください。-
インターネットに接続されたシステムで、チャートをダウンロードします。
-
.tgzのチャートファイルを エアギャップ 環境に転送し、リポジトリの手順に従って内部 Helm リポジトリにアップロードします。operatorチャートは W&B Kubernetes Operator (Controller Manager) をデプロイします。operator-wandbチャートは、Custom Resource (CR) で設定した値を使用して W&B Platform をデプロイします。
Step 3: Helm リポジトリへのアクセスを設定する
後続のインストール コマンドでチャートを参照できるように、エアギャップ環境内のローカル Helm クライアントが内部リポジトリを参照するように設定します。-
エアギャップ環境で、Helm が内部リポジトリを使用するように設定します。
-
チャートが利用可能であることを確認します。
エアギャップ環境に W&B をデプロイする
内部Registryと Helm リポジトリを用意したら、Kubernetes Operator をインストールし、外部サービスを設定して、W&B Platform をデプロイできます。Step 4: Kubernetes Operator をインストールする
W&B Kubernetes Operator (コントローラーマネージャー) は、W&B プラットフォームの各コンポーネントを管理します。これをエアギャップ環境にインストールするには、内部コンテナーRegistryを使用するように設定します。-
次の内容で
values.yamlファイルを作成します。repository と tag は、Step 1 で内部Registryに転送した実際のバージョンに置き換えてください。ここに示したバージョン (1.13.3) はあくまで例であり、時間の経過とともに古くなります。 -
operator と Custom Resource Definition (CRD) をインストールします。
-
operator が実行中であることを確認します。
Running状態の operator pod が表示されるはずです。
Step 5: MySQL データベースを設定する
W&B Custom Resource を設定する前に、外部の MySQL データベースを設定してください。本番デプロイでは、利用可能であればマネージドデータベースサービスを使用することを W&B は強く推奨しています。ただし、独自の MySQL インスタンスを運用している場合は、データベースとユーザーを作成してください。 次の SQL コマンドを使用して、データベースとユーザーを作成します。[PASSWORD] は、強力なパスワードに置き換えてください。
ステップ 6: W&B Custom Resource を設定する
W&B Kubernetes Operator をインストールしたら、Custom Resource (CR) を設定して、内部の Helm リポジトリ とコンテナー registry を参照するようにします。この設定により、W&B Platform の必須コンポーネントをデプロイする際、Kubernetes operator はパブリックなソースへのアクセスを試みるのではなく、内部の registry と リポジトリ を使用します。次の設定例には、時間の経過とともに古くなるイメージのバージョン tags が含まれています。すべての
tag: の値を、ステップ 1 で内部 registry に転送した実際のバージョンに置き換えてください。wandb.yaml という名前の file を作成します。
ホスト名、パスワード、タグなどのプレースホルダー値は、すべて実際の設定値に置き換えてください。前述の例では、最も一般的に使用されるコンポーネントを示しています。
settingsMigrationJobweave-tracefilestreamflat-runs-table
ステップ 7: W&B Platform をデプロイする
Custom Resource を適用すると、operator がwandb.yaml の設定とイメージ参照を使用して、operator-wandb チャートで定義されている W&B Platform のコンポーネントをインストールします。
-
プラットフォームをデプロイするには、W&B Custom Resource を適用します。
-
デプロイの進行状況を監視します。
operator が必要なコンポーネントをすべて作成するため、デプロイの完了までに数分かかる場合があります。
OpenShift の設定
W&B は、エアギャップ環境の OpenShift Kubernetes クラスターへのデプロイをサポートしています。OpenShift へのデプロイでは、OpenShift のより厳格なセキュリティポリシーに対応するため、追加のセキュリティコンテキスト設定が必要です。OpenShift にデプロイする場合は、前のステップに加えて、このセクションの設定も適用してください。OpenShift のセキュリティコンテキスト制約
OpenShift では、pod の権限を制御するために Security Context Constraints (SCC) を使用します。デフォルトでは、pod にはrestricted SCC が割り当てられ、root としての実行が禁止されるほか、特定のユーザー ID が必要になります。
オプション1: restricted SCCを使用する (推奨)
Custom Resource で適切なセキュリティコンテキストを設定し、W&B コンポーネントが restricted SCC で実行されるように構成します。
オプション 2: カスタム SCC を作成する (必要な場合)
デプロイにrestricted SCC では利用できないケーパビリティが必要な場合は、カスタム SCC を作成します。
-
SCC を適用します。
-
SCC を W&B のサービスアカウントに関連付けます。
OpenShift Routes
OpenShift では、標準の Kubernetes Ingress ではなく Routes を使用します。W&B で OpenShift Routes を使用するように設定します。OpenShift のイメージプル設定
OpenShift クラスターで認証が必要な内部イメージRegistryを使用している場合:-
イメージプルシークレットを作成します。
-
Custom Resource でこのシークレットを参照します。
OpenShift の完全な例
以下の例は、OpenShift の エアギャップ deployment 向けの完全な CR を示しています。この例内のすべての
tag: の値を、ステップ 1 で内部 Registry に転送した実際のバージョンに置き換えてください。ここに示しているバージョンはあくまで例であり、時間の経過とともに古くなります。セキュリティ要件に応じた包括的な OpenShift 設定例については、W&B Support または担当の W&B サポートエンジニアにお問い合わせください。
インストールを確認する
W&B をデプロイしたら、プラットフォームにアクセス可能であり、pod が正常で、デプロイメントが内部リソースのみを使用していることを確認できるように、インストールが正常に機能していることを確認してください。 一般的な確認手順に従ってから、次のセクションで追加の エアギャップ チェックを実施してください。 インストールを確認するには、W&B では W&B CLI の使用を推奨しています。wandb verify コマンドは、コンポーネントと設定が想定どおりに動作することを確認するテストを実行します。
この手順では、最初の管理者ユーザーアカウントをブラウザで作成することを前提としています。
-
W&B CLI をインストールします:
-
W&B にログインします:
例えば:
-
インストールを確認する:
エアギャップ 環境での追加検証
エアギャップ デプロイでは、次の点も確認してください。-
イメージプル: すべての Pod が内部レジストリからイメージを正常にプルできていることを確認します。
すべてのイメージが内部レジストリを参照しており、すべての Pod が
Running状態である必要があります。 -
外部接続: W&B が外部への接続を試みていないことを確認します (エアギャップ モードでは試行しないはずです) 。
- ライセンス検証: W&B コンソールにアクセスし、ライセンスが有効になっていることを確認します。
トラブルシューティング
イメージプルエラー
Pod がイメージをプルできない場合は、次の点を確認してください。- イメージが内部Registryに存在することを確認してください。
- イメージプルシークレットが正しく設定されていることを確認してください。
- Kubernetes ノードからRegistryへのネットワーク接続を確認してください。
- Registryの認証情報を確認してください。
OpenShift の SCC エラー
OpenShift で Pod が権限エラーで失敗する場合:Helm チャートが見つからない
operator が platform チャートを見つけられない場合は、次を確認してください:- Custom Resource 内のチャートリポジトリ URL を確認します。
- operator の pod から内部 Helm リポジトリにアクセスできることを確認します。
-
リポジトリ内にチャートが存在することを確認します:
よくある質問
別の ingress class を使用できますか?
はい。Custom Resource の ingress 設定を変更して、使用する ingress class を設定できます。複数の証明書を含む証明書バンドルはどうすればよいですか
証明書をcustomCACerts セクションで複数のエントリに分割します。
どうすれば自動更新を防止できますか
operator が W&B を自動更新しないように設定するには、次の手順を実行します。- operator のインストール時に
airgapped: trueを設定します (これにより自動更新のチェックが無効になります)。 - Custom Resource の
spec.chart.versionを手動で更新して、version の更新を管理します。 - 必要に応じて、W&B System Console から自動更新を無効にします。
W&B では、セルフマネージド環境のインスタンスをご利用のお客様に対し、サポートを維持し、最新の機能、パフォーマンス改善、修正を利用できるようにするため、少なくとも四半期に 1 回はデプロイを最新 version に更新することを強く推奨しています。W&B は、各メジャーリリースを初回リリース日から 12 か月間サポートします。詳しくは、リリースポリシーとプロセスを参照してください。
このデプロイはパブリックリポジトリに接続しなくても動作しますか?
はい。Operator の設定でairgapped: true を指定すると、Kubernetes Operator は内部リソースのみを使用し、パブリックリポジトリへの接続は試みません。
エアギャップ環境で W&B を更新するにはどうすればよいですか?
W&B を更新するには、次の手順を実行します。- インターネットに接続されたシステムで新しいコンテナーイメージを取得します。
- イメージをエアギャップ環境のRegistryに転送します。
- 新しい Helm チャートを内部リポジトリにアップロードします。
-
Custom Resource の
spec.chart.versionとイメージタグを更新します。 - 更新した Custom Resource を適用します。 operator は W&B コンポーネントのローリングアップデートを実行します。
次のステップ
デプロイが正常に完了したら、次のタスクを完了します:- ユーザー認証を設定する: SSO またはその他の認証方式を設定します
- 監視を設定する: W&B インスタンスとインフラストラクチャーの監視を設定します
- 更新を計画する: Server upgrade process を確認し、更新の実施頻度を定めます
- バックアップを設定する: MySQL データベースのバックアップ手順を確立します
- プロセスを文書化する: ご利用の エアギャップ 環境向けの更新手順の runbook を作成します
サポートを受ける
デプロイ中に問題が発生した場合:- インフラストラクチャーに関するガイダンスは、リファレンスアーキテクチャを参照してください。
- 設定の詳細は、Operator ガイドを確認してください。
- W&B サポートまたは担当の W&B サポートエンジニアに連絡してください。
- OpenShift 固有の問題については、Red Hat OpenShift のドキュメントを参照してください。