このガイドでは、エアギャップ環境、完全に分離された環境、またはネットワークが制限されたお客様管理の環境に W&B Platform をデプロイするための手順を説明します。エアギャップ環境でのデプロイは、次のようなケースで一般的です。
- 高いセキュリティ要件を持つ政府機関施設
- 厳格なネットワーク分離要件を持つ金融機関
- コンプライアンス要件を有する医療機関
- 産業制御システム (ICS) 環境
- 機密ネットワークを持つ研究施設
内部コンテナレジストリと Helm リポジトリを使用して、必要な W&B のイメージとチャートをホストします。Kubernetes クラスターに適切なアクセス権を持つシェルコンソール上で、これらのコマンドを実行してください。
これらのコマンドは、Kubernetes アプリケーションをデプロイする際に使用している任意の CI/CD ツールに合わせて調整できます。
インターネット接続がある標準的なオンプレミス Kubernetes デプロイについては、Kubernetes Operator を使用して W&B をデプロイする を参照してください。
作業を開始する前に、エアギャップ環境が以下の要件を満たしていることを確認してください。
| ソフトウェア | 最低バージョン |
|---|
| Kubernetes | v1.32 以降(サポートされている Kubernetes のバージョン) |
| Helm | v3.x |
| MySQL | v8.0.x が必須で、v8.0.32 以降。ただし v8.0.44 以降を推奨。 Aurora MySQL 3.x リリースは v3.05.2 以上である必要があります |
| Redis | v7.x |
W&B では、クライアントとサーバー間の安全な通信のために、有効な署名付き SSL/TLS 証明書が必要です。SSL/TLS の終端は必ず ingress/ロードバランサー上で行う必要があります。W&B Server アプリケーションは SSL または TLS 接続を終端しません。
重要: W&B は自己署名証明書およびカスタム CA をサポートしません。自己署名証明書を使用するとユーザーにとって問題となり、サポート対象外となります。
可能であれば、Let’s Encrypt のようなサービスを利用することで、ロードバランサーに対して信頼された証明書を提供できます。Caddy や Cloudflare のようなサービスは、SSL を代行管理してくれます。
セキュリティポリシーによって、信頼済みネットワーク内でも SSL 通信が必要な場合は、Istio や サイドカーコンテナ のようなツールの利用を検討してください。
CPU アーキテクチャ: W&B は Intel(x86)CPU アーキテクチャのみをサポートしています。ARM はサポートされていません。
サイジング: Kubernetes ノードおよび MySQL の CPU、メモリ、ディスクのサイジングに関する推奨事項については、リファレンスアーキテクチャの サイジングセクション を参照してください。要件は、Models、Weave、またはその両方を実行しているかどうかによって異なります。
W&B では外部の MySQL データベースが必要です。
本番環境では、W&B はマネージド データベース サービスの使用を強く推奨します。
マネージド データベース サービスは、自動バックアップ、監視、高可用性、パッチ適用などを提供し、運用負荷を軽減します。
MySQL の要件(サイジングの推奨事項や設定パラメータを含む)の詳細については、リファレンス アーキテクチャを参照してください。データベース作成用の SQL については、ベアメタル ガイドを参照してください。デプロイのデータベース設定に関する質問がある場合は、サポート または AISE までお問い合わせください。
セルフマネージドインスタンスの MySQL 設定パラメータについては、リファレンス アーキテクチャの「MySQL 設定パラメータ」セクションを参照してください。
W&B は、ジョブキューおよびデータキャッシュのために W&B のコンポーネントが使用する、単一ノード構成の Redis 7.x デプロイメントに依存しています。概念実証のテストや開発を容易にするため、W&B Self-Managed にはローカルの Redis デプロイメントが含まれていますが、これは本番環境での利用には適していません。
本番環境でのデプロイメントでは、W&B は次の環境にある Redis インスタンスに接続できます。
W&B には、事前署名付き URL および CORS をサポートするオブジェクトストレージが必要です。
推奨ストレージプロバイダ:
MinIO Open Source はメンテナンスモードにあり、積極的な開発や事前コンパイル済みバイナリは提供されていません。本番環境へのデプロイには、W&B はマネージド型オブジェクトストレージサービス、または MinIO Enterprise (AIStor) のようなエンタープライズ向け S3 互換ソリューションの利用を推奨します。
IAM ポリシー、CORS 設定、アクセス設定を含む詳細なバケットのプロビジョニング手順については、Bring Your Own Bucket (BYOB) ガイドを参照してください。
完全な要件については、リファレンスアーキテクチャのオブジェクトストレージセクションを参照してください。
オブジェクトストレージのプロビジョニングに関する詳細については、Bring Your Own Bucket (BYOB) ガイドを参照してください。エアギャップ環境では、MinIO Enterprise、NetApp StorageGRID、Dell ECS などのオンプレミスの S3 互換ストレージを利用するのが一般的です。
上記の標準要件に加えて、エアギャップ環境でのデプロイには次のものが必要です。
- 内部コンテナレジストリ: 必要な W&B イメージをすべて格納したプライベートコンテナレジストリ(Harbor、JFrog Artifactory、Nexus など)へのアクセス
- 内部 Helm リポジトリ: W&B の Helm チャートを格納したプライベート Helm チャートリポジトリへのアクセス
- イメージ転送手段: インターネットに接続されたシステムからエアギャップ環境のレジストリへコンテナイメージを転送する方法
- ライセンスファイル: 有効な W&B Enterprise ライセンス。ライセンスの取得方法(例: インターネット接続されたマシンから取得する場合)については、要件ページの License セクションを参照するか、W&B のアカウントチームにお問い合わせください。
ネットワークおよびロードバランサー設定を含むインフラストラクチャ要件の詳細については、reference architecture を参照してください。
ステップ 1: 内部コンテナレジストリをセットアップする
エアギャップ環境でのデプロイを成功させるには、必要なすべてのコンテナイメージがエアギャップ環境内のコンテナレジストリで利用可能である必要があります。
W&B Operator の要件を把握し、コンテナレジストリ内のイメージを定期的に更新して最新の状態を維持する責任はお客様にあります。必要なコンテナイメージとバージョンの最新一覧については、Helm チャートを参照するか、W&B Support または担当の W&B サポートエンジニアまでお問い合わせください。
以下のコアイメージが必要です:
次のサードパーティ製の依存イメージが必要です。
Helm チャートから必要なイメージとバージョンの完全な一覧を抽出するには、次の手順を実行します。
-
インターネットに接続されたシステムで、W&B Helm charts repository から W&B Helm チャートをダウンロードします:
# helm-charts リポジトリをクローン
git clone https://github.com/wandb/helm-charts.git
cd helm-charts
-
values.yaml ファイルを確認して、すべてのコンテナイメージとそのバージョンを特定します:
# operator チャートからイメージ参照を抽出
helm show values charts/operator | grep -E "repository:|tag:" | grep -v "^#"
# platform チャートからイメージ参照を抽出
helm show values charts/operator-wandb | grep -E "repository:|tag:" | grep -v "^#"
代わりに、次のコマンドを使用して、バージョンタグなしでリポジトリ名だけを抽出することもできます:
helm show values charts/operator-wandb \
| awk -F': *' '/^[[:space:]]*repository:/{print $2}' \
| grep -v "^#" \
| sort -u
リポジトリの一覧は、次のようになります:
wandb/controller
wandb/local
wandb/console
wandb/megabinary
wandb/weave-python
wandb/weave-trace
otel/opentelemetry-collector-contrib
prometheus/prometheus
prometheus-operator/prometheus-config-reloader
bitnamilegacy/redis
各イメージの具体的なバージョンタグを取得するには、最初のコマンド(grep -E "repository:|tag:")を使用します。このコマンドにより、リポジトリ名とそれに対応するバージョンタグの両方を確認できます。
イメージをエアギャップ環境向けレジストリに転送する
-
インターネットに接続されたシステム上で、必要なすべてのイメージを
pull して保存します。
以下の例にあるバージョン番号は、上記ステップ 2 で Helm チャートを確認して得た実際のバージョンに置き換えてください。ここで示しているバージョンはあくまで例であり、今後古くなっていきます。
シェル変数を使用して、バージョンを一貫して管理します:
# バージョン変数を設定する(Helm チャートのバージョンに合わせて更新する)
CONTROLLER_VERSION="1.13.3"
APP_VERSION="0.59.2"
CONSOLE_VERSION="2.12.2"
# イメージを pull する
docker pull wandb/controller:${CONTROLLER_VERSION}
docker pull wandb/local:${APP_VERSION}
docker pull wandb/console:${CONSOLE_VERSION}
docker pull wandb/megabinary:${APP_VERSION}
# ... 必要な他のすべてのイメージを、それぞれのバージョンで pull する
# イメージを .tar ファイルに保存する
docker save wandb/controller:${CONTROLLER_VERSION} -o wandb-controller-${CONTROLLER_VERSION}.tar
docker save wandb/local:${APP_VERSION} -o wandb-local-${APP_VERSION}.tar
docker save wandb/console:${CONSOLE_VERSION} -o wandb-console-${CONSOLE_VERSION}.tar
docker save wandb/megabinary:${APP_VERSION} -o wandb-megabinary-${APP_VERSION}.tar
# ... 他のすべてのイメージを保存する
-
承認された方法(USB ドライブ、安全なファイル転送など)を使用して
.tar ファイルをエアギャップ環境に転送します。
-
エアギャップ環境内でイメージをロードし、内部レジストリに
push します:
# 上で使用したものと同じバージョン変数を設定する
CONTROLLER_VERSION="1.13.3"
APP_VERSION="0.59.2"
CONSOLE_VERSION="2.12.2"
INTERNAL_REGISTRY="registry.yourdomain.com"
# イメージをロードする
docker load -i wandb-controller-${CONTROLLER_VERSION}.tar
docker load -i wandb-local-${APP_VERSION}.tar
docker load -i wandb-console-${CONSOLE_VERSION}.tar
docker load -i wandb-megabinary-${APP_VERSION}.tar
# ... 他のすべてのイメージをロードする
# 内部レジストリ用にタグを付ける
docker tag wandb/controller:${CONTROLLER_VERSION} ${INTERNAL_REGISTRY}/wandb/controller:${CONTROLLER_VERSION}
docker tag wandb/local:${APP_VERSION} ${INTERNAL_REGISTRY}/wandb/local:${APP_VERSION}
docker tag wandb/console:${CONSOLE_VERSION} ${INTERNAL_REGISTRY}/wandb/console:${CONSOLE_VERSION}
docker tag wandb/megabinary:${APP_VERSION} ${INTERNAL_REGISTRY}/wandb/megabinary:${APP_VERSION}
# ... 他のすべてのイメージにタグを付ける
# 内部レジストリに push する
docker push ${INTERNAL_REGISTRY}/wandb/controller:${CONTROLLER_VERSION}
docker push ${INTERNAL_REGISTRY}/wandb/local:${APP_VERSION}
docker push ${INTERNAL_REGISTRY}/wandb/console:${CONSOLE_VERSION}
docker push ${INTERNAL_REGISTRY}/wandb/megabinary:${APP_VERSION}
# ... 他のすべてのイメージを push する
ステップ 2: 内部 Helm チャートリポジトリをセットアップする
コンテナイメージに加えて、次の Helm チャートが内部 Helm リポジトリで利用可能になっていることを確認します。
-
インターネットに接続されたシステム上で、チャートをダウンロードします:
# W&B Helm リポジトリを追加
helm repo add wandb https://wandb.github.io/helm-charts
helm repo update
# チャートをダウンロード
helm pull wandb/operator --version 1.13.3
helm pull wandb/operator-wandb --version 0.18.0
-
.tgz チャートファイルをエアギャップ環境に転送し、リポジトリの手順に従って内部 Helm リポジトリにアップロードします。
operator チャートは W&B Kubernetes Operator (Controller Manager) をデプロイします。operator-wandb チャートは、Custom Resource (CR) で設定された values を使用して W&B Platform をデプロイします。
-
エアギャップ環境内で、Helm が内部リポジトリを使用するように設定します:
helm repo add local-repo https://charts.yourdomain.com
helm repo update
-
チャートが利用可能であることを確認します:
helm search repo local-repo/operator
helm search repo local-repo/operator-wandb
ステップ 4: Kubernetes Operator をインストールする
W&B Kubernetes Operator(controller manager)は、W&B プラットフォームコンポーネントを管理します。エアギャップ環境にインストールするには、内部コンテナレジストリを使用するように設定してください。
-
次の内容で
values.yaml ファイルを作成します:
image:
repository: registry.yourdomain.com/wandb/controller
tag: 1.13.3
airgapped: true
repository と tag は、ステップ 1 で内部レジストリに転送した実際のバージョンに置き換えてください。ここで示しているバージョン(1.13.3)は一例であり、今後古くなる可能性があります。
-
Operator と Custom Resource Definition(CRD)をインストールします:
helm upgrade --install operator local-repo/operator \
--namespace wandb \
--create-namespace \
--values values.yaml
-
Operator が動作していることを確認します:
kubectl get pods -n wandb
Running 状態の operator Pod が表示されているはずです。
サポートされている値の詳細については、Kubernetes operator の GitHub リポジトリの values ファイルを参照してください。
ステップ 5: MySQL データベースをセットアップする
W&B Custom Resource を設定する前に、外部 MySQL データベースをセットアップします。本番環境へのデプロイでは、利用可能な場合はマネージドデータベースサービスの利用を W&B は強く推奨します。ただし、独自の MySQL インスタンスを実行している場合は、データベースとユーザーを作成してください:
次の SQL コマンドを実行して、データベースとユーザーを作成します。SOME_PASSWORD を任意の安全なパスワードに置き換えてください:
CREATE USER 'wandb_local'@'%' IDENTIFIED BY 'SOME_PASSWORD';
CREATE DATABASE wandb_local CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL ON wandb_local.* TO 'wandb_local'@'%' WITH GRANT OPTION;
MySQL の設定パラメータについては、リファレンスアーキテクチャの MySQL 設定セクションを参照してください。
W&B Kubernetes Operator をインストールしたら、カスタムリソース (CR) を設定して、内部 Helm リポジトリとコンテナレジストリを参照するようにします。
この設定により、Kubernetes Operator は W&B プラットフォームの必要なコンポーネントをデプロイする際に、内部レジストリとリポジトリを使用するようになります。
以下の設定例には、時間の経過とともに古くなるイメージバージョンのタグが含まれています。ステップ 1 で内部レジストリに転送した実際のバージョンに合わせて、すべての tag: の値を置き換えてください。
次の内容で wandb.yaml という名前のファイルを作成します。
apiVersion: apps.wandb.com/v1
kind: WeightsAndBiases
metadata:
labels:
app.kubernetes.io/instance: wandb
app.kubernetes.io/name: weightsandbiases
name: wandb
namespace: wandb
spec:
chart:
url: https://charts.yourdomain.com
name: operator-wandb
version: 0.18.0
values:
global:
host: https://wandb.yourdomain.com
license: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
bucket:
accessKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
secretKey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
name: s3.yourdomain.com:9000
path: wandb
provider: s3
region: us-east-1
mysql:
database: wandb
host: mysql.yourdomain.com
password: <your-mysql-password>
port: 3306
user: wandb
redis:
host: redis.yourdomain.com
port: 6379
password: <your-redis-password>
api:
enabled: true
glue:
enabled: true
executor:
enabled: true
extraEnv:
ENABLE_REGISTRY_UI: 'true'
# すべてのコンポーネントイメージを内部レジストリを使用するよう設定する
app:
image:
repository: registry.yourdomain.com/wandb/local
tag: 0.59.2
console:
image:
repository: registry.yourdomain.com/wandb/console
tag: 2.12.2
api:
image:
repository: registry.yourdomain.com/wandb/megabinary
tag: 0.59.2
executor:
image:
repository: registry.yourdomain.com/wandb/megabinary
tag: 0.59.2
glue:
image:
repository: registry.yourdomain.com/wandb/megabinary
tag: 0.59.2
parquet:
image:
repository: registry.yourdomain.com/wandb/megabinary
tag: 0.59.2
weave:
image:
repository: registry.yourdomain.com/wandb/weave-python
tag: 0.59.2
otel:
image:
repository: registry.yourdomain.com/otel/opentelemetry-collector-contrib
tag: 0.97.0
prometheus:
server:
image:
repository: registry.yourdomain.com/prometheus/prometheus
tag: v2.47.0
configmapReload:
prometheus:
image:
repository: registry.yourdomain.com/prometheus-operator/prometheus-config-reloader
tag: v0.67.0
ingress:
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: 0
class: nginx
すべてのプレースホルダー値(ホスト名、パスワード、タグなど)を、実際の設定値に置き換えてください。上記の例では、最も一般的に使用されるコンポーネントのみを示しています。
デプロイの要件によっては、次のような追加コンポーネント用のイメージリポジトリを設定する必要がある場合もあります。
settingsMigrationJob
weave-trace
filestream
flat-runs-table
設定可能なコンポーネントの完全な一覧については、W&B Helm リポジトリの values ファイル を参照してください。
-
プラットフォームをデプロイするために、W&B Custom Resource を適用します:
kubectl apply -f wandb.yaml
-
デプロイの進行状況を監視します:
# 作成中の Pod を監視
kubectl get pods -n wandb --watch
# デプロイの状態を確認
kubectl get weightsandbiases -n wandb
# Operator のログを表示
kubectl logs -n wandb deployment/wandb-operator-controller-manager
Operator が必要なコンポーネントをすべて作成するまで、デプロイの完了には数分かかる場合があります。
W&B は、エアギャップ環境の OpenShift Kubernetes クラスターへのデプロイを完全にサポートしています。OpenShift のより厳格なセキュリティポリシーにより、OpenShift クラスターへのデプロイでは追加のセキュリティコンテキストの設定が必要になります。
OpenShift は Pod の権限を制御するために Security Context Constraints (SCC) を使用します。デフォルトでは、OpenShift は Pod に restricted SCC を割り当てます。これにより root としての実行が禁止され、特定のユーザー ID で実行する必要があります。
オプション 1: restricted SCC を使用する(推奨)
Custom Resource で適切なセキュリティコンテキストを設定し、W&B コンポーネントが restricted SCC で実行されるように構成します。
spec:
values:
# すべてのPodにセキュリティコンテキストを設定する
app:
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
console:
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
# 他のコンポーネントにも同様に繰り返す: api, executor, glue, parquet, weave
オプション 2: カスタム SCC を作成する(必要な場合)
デプロイにおいて restricted SCC では利用できない機能(または権限)が必要な場合は、カスタム SCC を作成します。
apiVersion: security.openshift.io/v1
kind: SecurityContextConstraints
metadata:
name: wandb-scc
allowHostDirVolumePlugin: false
allowHostIPC: false
allowHostNetwork: false
allowHostPID: false
allowHostPorts: false
allowPrivilegeEscalation: false
allowPrivilegedContainer: false
allowedCapabilities: []
defaultAddCapabilities: []
fsGroup:
type: MustRunAs
ranges:
- min: 1000
max: 65535
readOnlyRootFilesystem: false
requiredDropCapabilities:
- ALL
runAsUser:
type: MustRunAsRange
uidRangeMin: 1000
uidRangeMax: 65535
seLinuxContext:
type: MustRunAs
supplementalGroups:
type: RunAsAny
volumes:
- configMap
- downwardAPI
- emptyDir
- persistentVolumeClaim
- projected
- secret
-
SCC を適用します。
oc apply -f wandb-scc.yaml
-
SCC を W&B のサービスアカウントに関連付けます。
oc adm policy add-scc-to-user wandb-scc -z wandb-app -n wandb
oc adm policy add-scc-to-user wandb-scc -z wandb-console -n wandb
OpenShift では、標準的な Kubernetes Ingress の代わりに Route を使用します。W&B を OpenShift Route を使用するように構成します:
spec:
values:
ingress:
enabled: false
route:
enabled: true
host: wandb.apps.openshift.yourdomain.com
tls:
enabled: true
termination: edge
insecureEdgeTerminationPolicy: Redirect
OpenShift クラスターが認証付きの内部イメージレジストリを使用している場合は、次の手順を実行します。
-
イメージプルシークレットを作成します。
kubectl create secret docker-registry wandb-registry-secret \
--docker-server=registry.yourdomain.com \
--docker-username=<username> \
--docker-password=<password> \
--namespace=wandb
-
Custom Resource でこのシークレットを参照します。
spec:
values:
imagePullSecrets:
- name: wandb-registry-secret
こちらは、エアギャップ環境向け OpenShift デプロイの、完全なサンプル CR です。
この例に含まれるすべての tag: の値は、手順 1 で内部レジストリに転送した実際のバージョンに置き換えてください。ここで示しているバージョンはあくまで例であり、今後古くなる可能性があります。
apiVersion: apps.wandb.com/v1
kind: WeightsAndBiases
metadata:
name: wandb
namespace: wandb
spec:
chart:
url: https://charts.yourdomain.com
name: operator-wandb
version: 0.18.0
values:
global:
host: https://wandb.apps.openshift.yourdomain.com
license: <your-license>
bucket:
accessKey: <your-access-key>
secretKey: <your-secret-key>
name: s3.yourdomain.com:9000
path: wandb
provider: s3
region: us-east-1
mysql:
database: wandb
host: mysql.yourdomain.com
password: <your-mysql-password>
port: 3306
user: wandb
redis:
host: redis.yourdomain.com
port: 6379
password: <your-redis-password>
# OpenShift固有: IngressではなくRoutesを使用
ingress:
enabled: false
route:
enabled: true
host: wandb.apps.openshift.yourdomain.com
tls:
enabled: true
termination: edge
# 内部レジストリ用のイメージプルシークレット
imagePullSecrets:
- name: wandb-registry-secret
# OpenShift制限付きSCC用のセキュリティコンテキスト
app:
image:
repository: registry.yourdomain.com/wandb/local
tag: 0.59.2
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
console:
image:
repository: registry.yourdomain.com/wandb/console
tag: 2.12.2
podSecurityContext:
fsGroup: 1000
runAsUser: 1000
runAsNonRoot: true
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
seccompProfile:
type: RuntimeDefault
# api、executor、glue、parquet、weave にもセキュリティコンテキストを繰り返す
# (簡略化のため省略)
セキュリティ要件に合わせた包括的な OpenShift 設定例については、W&B Support または担当の W&B サポートエンジニアにご連絡ください。
W&B をデプロイしたら、インストールが正しく動作していることを確認してください。
インストールを検証するには、W&B では W&B CLI の使用を推奨します。verify コマンドは、すべてのコンポーネントと設定が正しく動作しているか確認するために、いくつかのテストを実行します。
この手順では、最初の管理者ユーザーアカウントがブラウザーで作成されていることを前提とします。
次の手順に従ってインストールを検証します。
- W&B CLI をインストールします。
- W&B にログインします:
wandb login --host=https://YOUR_DNS_DOMAIN
例えば、
wandb login --host=https://wandb.company-name.com
- インストールを確認する:
インストールが正常に完了し、W&B デプロイ環境が問題なく動作している場合は、次のような出力が表示されます。
選択されたデフォルトホスト: https://wandb.company-name.com
このテストの詳細ログの保存先: /var/folders/pn/b3g3gnc11_sbsykqkm3tx5rh0000gp/T/tmpdtdjbxua/wandb
ログイン状態を確認中...................................................✅
署名付きURLアップロードを確認中..............................................✅
プロキシ経由で大きなペイロードを送信できるか確認中...................✅
ベースURLへのリクエストを確認中...........................................✅
署名付きURLを使用したリクエストを確認中.................................✅
バケットのCORS設定を確認中...............................✅
wandbパッケージのバージョンが最新か確認中............................✅
ログされたメトリクスの確認、ファイルの保存とダウンロードを確認中..................✅
アーティファクトの保存とダウンロードのワークフローを確認中...........................✅
エラーが発生した場合は W&B サポートまでお問い合わせください。
エアギャップ環境でのデプロイの場合は、次の点も検証してください:
-
イメージプル: すべての Pod が内部レジストリからイメージを正常にプルできていることを確認します:
kubectl get pods -n wandb -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\t"}{.status.containerStatuses[*].image}{"\n"}{end}'
すべてのイメージが内部レジストリを指しており、すべての Pod が Running 状態になっている必要があります。
-
外部接続: エアギャップモードでは外部接続は行われないはずなので、W&B が外部への接続を試みていないことを確認します:
kubectl logs -n wandb deployment/wandb-app --tail=100 | grep -i "connection"
-
ライセンス検証: W&B コンソールにアクセスし、ライセンスが有効であることを確認します。
pod がイメージのプルに失敗する場合は、次を確認してください:
-
内部レジストリにイメージが存在することを確認する
-
image pull secret が正しく構成されていることを確認する
-
Kubernetes ノードからレジストリへのネットワーク接続性があることを確認する
-
レジストリの認証情報を確認する
# イメージプルを手動でテスト
kubectl run test-pull --image=registry.yourdomain.com/wandb/local:0.59.2 --namespace=wandb
kubectl logs test-pull -n wandb
kubectl delete pod test-pull -n wandb
OpenShift 上で Pod が権限エラーにより起動に失敗する場合:
# 使用されているSCCを確認する
oc get pod <pod-name> -n wandb -o yaml | grep scc
# サービスアカウントの権限を確認する
oc describe scc wandb-scc
oc get rolebinding -n wandb
operator が platform チャートを見つけられない場合は、次の手順を実行します。
-
Custom Resource 内のチャートリポジトリ URL を確認する
-
operator の Pod から内部 Helm リポジトリへアクセスできることを確認する
-
リポジトリ内にチャートが存在することを確認する:
helm search repo local-repo/operator-wandb
はい、使用する Ingress クラスは、Custom Resource 内の ingress 設定を変更して構成してください。
spec:
values:
ingress:
class: your-ingress-class
複数の証明書を含む証明書バンドルはどのように扱えばよいですか?
証明書を分けて、customCACerts セクションでそれぞれを個別のエントリとして指定します。
spec:
values:
customCACerts:
cert1.crt: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
cert2.crt: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
オペレーターを設定して、W&B が自動的に更新されないようにします:
- オペレーターのインストール設定で
airgapped: true を指定します(これにより自動アップデートのチェックが無効になります)
- Custom Resource 内の
spec.chart.version を手動で更新して、バージョンの更新を制御します
- 必要に応じて、W&B System Console から自動アップデートを無効化します
詳細については、Disable automatic app version updates を参照してください。
W&B は、Self-Managed インスタンスをご利用のお客様に対し、サポートを維持し、最新の機能、パフォーマンス改善、および修正を受け取るため、少なくとも四半期に一度は最新リリースでデプロイメントを更新することを強く推奨します。W&B は、メジャーリリースの初回リリース日から 12 か月間、そのリリースをサポートします。詳しくは Release policies and processes を参照してください。
デプロイはパブリックリポジトリへの接続なしで動作しますか?
はい。オペレーターの設定で airgapped: true が指定されている場合、Kubernetes オペレーターは内部リソースのみを使用し、パブリックリポジトリに接続しようとしません。
エアギャップ環境で W&B をアップデートするには?
W&B をアップデートするには、次の手順を実行します。
-
インターネット接続環境にあるシステムで新しいコンテナイメージを取得する
-
取得したイメージをエアギャップ環境のレジストリに転送する
-
新しい Helm チャートを社内リポジトリにアップロードする
-
カスタムリソース内の
spec.chart.version とイメージタグを更新する
-
更新されたカスタムリソースを適用する
Operator が W&B コンポーネントをローリングアップデートします。
デプロイが正常に完了したら、次の作業を行います。
- ユーザー認証を設定する: SSO またはその他の認証方法を設定する
- モニタリングを設定する: W&B インスタンスおよびインフラストラクチャ向けのモニタリングを構成する
- アップデート計画を立てる: Server upgrade process を確認し、アップデートサイクルを策定する
- バックアップを設定する: MySQL データベースのバックアップ手順を整備する
- 手順を文書化する: エアギャップ環境における更新手順向けのランブックを作成する
デプロイ中に問題が発生した場合は、次を実行してください。