이 가이드는 에어갭이 적용된, 고객이 직접 관리하는 환경에서 W&B Platform을 배포하는 방법을 단계별로 설명합니다.
Helm 차트와 컨테이너 이미지를 호스팅할 내부 리포지터리 또는 레지스트리를 사용하세요. Kubernetes 클러스터에 대한 적절한 액세스 권한이 있는 셸 콘솔에서 모든 명령을 실행하세요.
Kubernetes 애플리케이션을 배포할 때 사용하는 어떤 지속적 딜리버리 도구에서도 이와 유사한 명령을 활용할 수 있습니다.
시작하기 전에 현재 환경이 다음 요구 사항을 충족하는지 확인하세요:
| 소프트웨어 | 최소 버전 |
|---|
| 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 종료(termination)는 반드시 인그레스/로드 밸런서에서 이루어져야 합니다. W&B Server 애플리케이션은 SSL 또는 TLS 연결을 종료하지 않습니다.
중요: W&B는 자체 서명 인증서 및 커스텀 CA(인증 기관)를 지원하지 않습니다. 자체 서명 인증서를 사용하면 사용자에게 문제가 발생하므로 지원되지 않습니다.
가능하다면 Let’s Encrypt와 같은 서비스를 사용하여 로드 밸런서에 신뢰할 수 있는 인증서를 제공하는 것이 좋습니다. Caddy 및 Cloudflare와 같은 서비스는 SSL을 대신 관리해 줍니다.
보안 정책상 신뢰할 수 있는 내부 네트워크 내에서도 SSL 통신이 필요한 경우, Istio 및 sidecar 컨테이너와 같은 도구의 사용을 고려하십시오.
CPU 아키텍처: W&B는 Intel(x86) CPU 아키텍처에서만 실행됩니다. ARM은 지원되지 않습니다.
사이징: Kubernetes 노드와 MySQL에 대한 CPU, 메모리, 디스크 사이징 권장 사항은 레퍼런스 아키텍처의 사이징 섹션을 참고하십시오. 요구 사항은 Models와 Weave를 각각 또는 함께 실행하는지에 따라 달라집니다.
W&B는 외부 MySQL 데이터베이스가 필요합니다.
운영(프로덕션) 환경에서는 관리형 데이터베이스 서비스를 사용할 것을 W&B에서 강력히 권장합니다:
관리형 데이터베이스 서비스는 자동 백업, 모니터링, 고가용성, 패치 적용 등을 제공하며 운영 부담을 줄여줍니다.
사이징 권장 사항 및 구성 파라미터를 포함한 전체 MySQL 요구 사항은 참조 아키텍처를 참조하세요. 데이터베이스 생성용 SQL은 베어 메탈 가이드를 확인하세요. 배포 환경의 데이터베이스 구성에 대한 질문이 있는 경우 support 또는 담당 AISE에 문의하세요.
W&B는 작업 큐 처리와 데이터 캐싱을 위해 W&B 구성 요소에서 사용하는 단일 노드 Redis 7.x 배포에 의존합니다. 개념 검증(PoC)의 테스트 및 개발 편의를 위해 W&B Self-Managed에는 프로덕션 배포 환경에는 적합하지 않은 로컬 Redis 배포가 포함되어 있습니다.
프로덕션 배포 환경의 경우, W&B는 다음 환경의 Redis 인스턴스에 연결할 수 있습니다:
W&B는 pre-signed URL 및 CORS를 지원하는 오브젝트 스토리지가 필요합니다.
프로덕션 배포 시 W&B는 다음과 같은 매니지드 오브젝트 스토리지 서비스 사용을 권장합니다:
자가 호스팅 오브젝트 스토리지 옵션에 대해서는 CORS 구성과 엔터프라이즈 대안을 포함한 자세한 설정 방법을 보려면 베어메탈 가이드 오브젝트 스토리지 섹션을 참고하십시오.
MinIO Open Source는 활성 개발 및 사전 컴파일된 바이너리 없이 유지 관리 모드에 있습니다. 프로덕션 배포의 경우, W&B는 매니지드 오브젝트 스토리지 서비스 또는 엔터프라이즈급 S3 호환 솔루션 사용을 권장합니다.
전체 요구 사항은 레퍼런스 아키텍처 오브젝트 스토리지 섹션을 참고하십시오.
- 필요한 W&B 이미지가 있는 내부 컨테이너 레지스트리에 대한 액세스 권한
- W&B Helm 차트를 위한 내부 Helm 리포지토리에 대한 액세스 권한
네트워킹 및 로드 밸런서 구성을 포함한 전체 인프라 요구 사항은 참조 아키텍처를 참조하십시오.
W&B는 에어갭 환경의 OpenShift Kubernetes 클러스터에 배포할 수 있습니다. 자세한 내용은 참조 아키텍처를 참조하고, 에어갭 OpenShift 배포에 맞게 조정할 수 있는 구체적인 구성 지침은 Operator 가이드의 OpenShift 섹션을 검토하십시오.
에어갭 배포를 성공적으로 수행하려면 에어갭 컨테이너 레지스트리에 다음 컨테이너 이미지가 준비되어 있어야 합니다.
W&B Operator의 요구 사항을 추적하고, 컨테이너 레지스트리를 최신 이미지로 정기적으로 업데이트하고 관리할 책임은 사용자에게 있습니다. 최신 필수 컨테이너 이미지 및 버전 목록은 Helm 차트를 참조하거나 support 또는 담당 AISE에게 문의하십시오.
Helm 차트 values에서 필요한 이미지와 버전의 전체 목록을 추출하려면 다음을 수행합니다.
-
W&B Helm charts 저장소에서 W&B Operator 및 Platform Helm 차트를 다운로드합니다.
-
values.yaml 파일을 확인하여 모든 컨테이너 이미지와 해당 버전을 식별합니다.
# Helm 차트에서 이미지 참조 추출
helm show values wandb/operator \
| awk -F': *' '/^[[:space:]]*repository:/{print $2}' \
| grep -E '^wandb/' \
| sort -u
추출된 목록은 다음과 유사할 수 있습니다. 이미지 버전은 달라질 수 있습니다.
wandb/anaconda2
wandb/console
wandb/frontend-nginx
wandb/local
wandb/megabinary
wandb/weave-python
wandb/weave-trace
컨테이너 이미지와 함께, 다음 Helm 차트가 내부 Helm 차트 리포지터리에 준비되어 있는지 반드시 확인해야 합니다. 아래 위치에서 다운로드하세요:
operator 차트는 Controller Manager라고도 불리는 W&B Operator를 배포하는 데 사용됩니다. platform 차트는 커스텀 리소스 정의(CRD)에 설정된 값(values)을 사용하여 W&B Platform을 배포하는 데 사용됩니다.
이제 Helm 리포지토리를 설정하여 내부 리포지토리에서 W&B Helm 차트를 가져오도록 설정합니다. Helm 리포지토리를 추가하고 업데이트하려면 다음 명령을 실행하세요:
helm repo add local-repo https://charts.yourdomain.com
helm repo update
단계 5: Kubernetes operator 설치
W&B Kubernetes operator(컨트롤러 매니저라고도 함)는 W&B 플랫폼 구성 요소를 관리합니다. 에어갭 환경에 설치하려면
내부 컨테이너 레지스트리를 사용하도록 구성해야 합니다.
이를 위해 기본 이미지 설정을 재정의하여 내부 컨테이너 레지스트리를 사용하도록 하고, 예상되는 배포 유형을 나타내기 위해 airgapped: true 키를 설정해야 합니다. 아래와 같이 values.yaml 파일을 업데이트합니다:
image:
repository: registry.yourdomain.com/library/controller
tag: 1.13.3
airgapped: true
태그를 내부 레지스트리에 등록된 사용 가능한 버전으로 교체하세요.
operator와 CRD를 설치하세요:
helm upgrade --install operator local-repo/operator -n wandb --create-namespace -f values.yaml
지원되는 값에 대한 자세한 내용은 Kubernetes Operator GitHub 리포지터리를 참고하세요.
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를 설치한 후, Custom Resource(CR)를 구성하여 내부 Helm 저장소와 컨테이너 레지스트리를 참조하도록 해야 합니다.
이 구성을 통해 Kubernetes Operator가 W&B 플랫폼의 필요한 구성 요소를 배포할 때 내부 레지스트리와 저장소를 사용하도록 보장합니다.
다음 예시 CR을 복사하여 wandb.yaml이라는 새 파일에 저장하세요.
apiVersion: apps.wandb.com/v1
kind: WeightsAndBiases
metadata:
labels:
app.kubernetes.io/instance: wandb
app.kubernetes.io/name: weightsandbiases
name: wandb
namespace: default
spec:
chart:
url: http://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:port #Ex.: s3.yourdomain.com:9000
path: bucket_name
provider: s3
region: us-east-1
mysql:
database: wandb
host: mysql.home.lab
password: password
port: 3306
user: wandb
redis:
host: redis.yourdomain.com
port: 6379
password: password
api:
enabled: true
glue:
enabled: true
executor:
enabled: true
extraEnv:
ENABLE_REGISTRY_UI: 'true'
app:
image:
repository: registry.yourdomain.com/local
tag: 0.59.2
console:
image:
repository: registry.yourdomain.com/console
tag: 2.12.2
api:
image:
repository: registry.yourdomain.com/megabinary
tag: 0.59.2
executor:
image:
repository: registry.yourdomain.com/megabinary
tag: 0.59.2
glue:
image:
repository: registry.yourdomain.com/megabinary
tag: 0.59.2
parquet:
image:
repository: registry.yourdomain.com/megabinary
tag: 0.59.2
weave:
image:
repository: registry.yourdomain.com/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
W&B 플랫폼을 배포하기 위해 Kubernetes Operator는 CR에 정의된 값을 사용하여 내부 저장소에 있는 operator-wandb Helm 차트를 구성합니다.
모든 태그와 버전을 내부 레지스트리에 등록된 버전으로 교체하십시오. 위 예시는 가장 일반적으로 사용되는 컴포넌트를 보여줍니다. 배포 요구 사항에 따라 settingsMigrationJob, weave-trace, filestream 등의 추가 컴포넌트에 대한 이미지 저장소도 구성해야 할 수 있습니다. 구성 가능한 컴포넌트의 전체 목록은 W&B Helm 저장소 values 파일을 참고하십시오.
이제 Kubernetes operator와 CR 설정이 완료되었으므로 wandb.yaml 구성을 적용하여 W&B 플랫폼을 배포합니다:
kubectl apply -f wandb.yaml
설치를 검증하려면 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 배포가 정상적으로 동작하면 다음과 같은 출력이 표시됩니다:
Default host selected: https://wandb.company-name.com
Find detailed logs for this test at: /var/folders/pn/b3g3gnc11_sbsykqkm3tx5rh0000gp/T/tmpdtdjbxua/wandb
Checking if logged in...................................................✅
Checking signed URL upload..............................................✅
Checking ability to send large payloads through proxy...................✅
Checking requests to base url...........................................✅
Checking requests made over signed URLs.................................✅
Checking CORs configuration of the bucket...............................✅
Checking wandb package version is up to date............................✅
Checking logged metrics, saving and downloading a file..................✅
Checking artifact save and download workflows...........................✅
오류가 발생하면 W&B 지원 팀에 문의하세요.
배포 과정에서는 아래의 자주 묻는 질문(FAQ)과 문제 해결 팁을 참고하세요.
다른 ingress 클래스가 있습니다. 해당 클래스를 사용해도 되나요?
네, values.yaml에서 ingress 설정을 수정하여 해당 ingress 클래스를 사용하도록 구성할 수 있습니다.
인증서 번들에 인증서가 여러 개 있습니다. 그런 경우에도 사용할 수 있나요?
values.yaml의 customCACerts 섹션에서 인증서를 여러 개의 엔트리로 분리해야 합니다.
Kubernetes operator가 사용자 개입 없이 업데이트를 적용하지 않도록 하려면 어떻게 해야 하나요? 그렇게 하는 것이 가능한가요?
W&B console에서 자동 업데이트를 끌 수 있습니다. 지원되는 버전에 대한 질문이 있으면 W&B 팀에 문의하세요. W&B는 주요 W&B Server 릴리스를 최초 출시일로부터 12개월 동안 지원합니다. Self-Managed 인스턴스를 사용하는 고객은 지원을 유지하기 위해 제때 업그레이드할 책임이 있습니다. 지원이 종료된 버전을 계속 사용하지 마세요. Release policies and processes를 참고하세요.
W&B는 Self-Managed 인스턴스를 사용하는 고객에게, 지원을 유지하고 최신 기능, 성능 향상 및 수정 사항을 받기 위해 최소한 분기마다 한 번 이상 배포를 최신 릴리스로 업데이트할 것을 강력히 권장합니다.
환경이 공개 리포지토리에 연결되어 있지 않아도 배포가 동작하나요?
구성에서 airgapped를 true로 설정하면 Kubernetes 오퍼레이터는 내부 리소스만 사용하며, 공개 리포지토리에 연결을 시도하지 않습니다.