소개
이 가이드에서는 에어갭, 연결 끊김 또는 제한된 네트워크 환경의 고객 관리형 인프라에 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 또는 로드 밸런서에서 이루어져야 합니다. W&B Server 애플리케이션은 SSL 또는 TLS 연결을 종료하지 않습니다. 가능하면 Let’s Encrypt와 같은 서비스를 사용하여 로드 밸런서에 신뢰할 수 있는 인증서를 제공하세요. Caddy 및 Cloudflare와 같은 서비스는 SSL을 관리해 줍니다. 보안 정책에서 신뢰할 수 있는 네트워크 내에서 SSL 통신이 필요한 경우, Istio 및 sidecar containers와 같은 도구 사용을 고려하세요.하드웨어 요구 사항
CPU 아키텍처: W&B는 Intel(x86) CPU 아키텍처에서만 실행되며, ARM은 지원하지 않습니다. 사이징: Kubernetes 노드와 MySQL의 CPU, 메모리, 디스크 사이징 권장 사항은 레퍼런스 아키텍처의 사이징 섹션을 참조하세요. 요구 사항은 Models와 Weave 중 하나만 실행하는지, 둘 다 실행하는지에 따라 달라집니다.MySQL 데이터베이스
W&B에는 외부 MySQL 데이터베이스가 필요합니다. 프로덕션 환경에서는 관리형 데이터베이스 서비스를 사용하는 것이 좋습니다. 관리형 데이터베이스 서비스는 자동 백업, 모니터링, 고가용성, 패치를 제공하며 운영 부담을 줄여줍니다. 사이징 권장 사항과 설정 매개변수를 포함한 MySQL 요구 사항은 레퍼런스 아키텍처를 참조하세요. 데이터베이스를 생성하는 SQL은 베어메탈 가이드를 참조하세요. 배포 환경의 데이터베이스 설정에 관한 질문은 지원팀 또는 담당 AISE에 문의하세요. Self-Managed 인스턴스용 MySQL 설정 매개변수는 레퍼런스 아키텍처의 MySQL 설정 섹션을 참조하세요.Redis
W&B는 단일 노드 Redis 7.x 배포에 의존하며, W&B의 컴포넌트는 작업 큐잉과 데이터 캐싱에 이를 사용합니다. 테스트 및 개념 증명 작업의 경우, W&B Self-Managed에는 로컬 Redis 배포가 포함됩니다. 이 번들 배포는 프로덕션 용도로는 적합하지 않습니다. 프로덕션 배포의 경우, W&B는 다음 환경의 Redis 인스턴스에 연결할 수 있습니다:- 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 오픈 소스는 유지 관리 모드로 전환되어 더 이상 활발히 개발되지 않으며, 사전 컴파일된 바이너리도 제공되지 않습니다. 프로덕션 배포에는 관리형 오브젝트 스토리지 서비스나 MinIO Enterprise (AIStor) 같은 엔터프라이즈 S3 호환 솔루션을 사용할 것을 권장합니다.
에어갭 환경 전용 요구 사항
앞서 설명한 표준 요구 사항 외에도 에어갭 배포에는 다음이 필요합니다.- 내부 컨테이너 레지스트리: 필요한 W&B 이미지가 모두 포함된 비공개 컨테이너 레지스트리(Harbor, JFrog Artifactory, Nexus 등)에 대한 액세스
- 내부 Helm 저장소: W&B Helm 차트가 포함된 비공개 Helm 차트 저장소에 대한 액세스
- 이미지 전송 수단: 인터넷에 연결된 시스템에서 에어갭 레지스트리로 컨테이너 이미지를 전송하는 방법
- 라이선스 파일: 유효한 W&B 엔터프라이즈 라이선스. 라이선스를 획득하는 방법(예: 인터넷에 연결된 머신에서 획득)은 요구 사항 페이지의 라이선스 섹션을 참조하거나 W&B 계정 팀에 문의하세요.
에어갭 환경 준비
다음 단계에 따라 W&B 컨테이너 이미지와 Helm 차트를 호스팅할 수 있도록 에어갭 환경을 준비하세요. 이 단계는 operator를 설치하거나 플랫폼을 배포하기 전에 완료해야 합니다.1단계: 내부 컨테이너 레지스트리 설정
Kubernetes 클러스터는 공개 레지스트리에서 이미지를 pull할 수 없으므로, 배포 전에 필요한 모든 컨테이너 이미지를 내부 에어갭 컨테이너 레지스트리에 준비해 두어야 합니다.W&B Operator의 요구 사항을 지속적으로 확인하고, 컨테이너 레지스트리의 이미지를 정기적으로 최신 상태로 유지하는 것은 사용자의 책임입니다. 필요한 컨테이너 이미지 및 버전의 최신 목록은 Helm 차트를 참고하거나, W&B 지원팀 또는 담당 W&B 지원 엔지니어에게 문의하세요.
핵심 W&B 컴포넌트 컨테이너
다음 핵심 이미지가 필요합니다.docker.io/wandb/controller: W&B Kubernetes Operatordocker.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 차트 저장소의 W&B Helm 차트를 다운로드하세요.
-
values.yaml파일을 살펴보고 모든 컨테이너 이미지와 해당 버전을 파악하세요.또는 다음 명령으로 버전 태그를 제외한 저장소 이름만 추출할 수도 있습니다.출력되는 저장소 목록은 다음과 비슷합니다.각 이미지의 구체적인 버전 태그를 확인하려면 앞의 첫 번째 명령(grep -E "repository:|tag:")을 사용하세요. 이 명령은 저장소 이름과 해당 버전 태그를 함께 보여 줍니다.
에어갭 레지스트리로 이미지 전송
-
인터넷에 연결된 시스템에서 필요한 이미지를 모두 pull하고 저장하세요.
셸 변수를 사용하면 버전을 일관되게 관리할 수 있습니다.다음 예시의 버전 번호를 이전 단계에서 Helm 차트를 검사해 확인한 실제 버전으로 바꾸세요. 여기에 표시된 버전은 예시일 뿐이며, 시간이 지나면 최신 버전과 달라집니다.
-
USB 드라이브나 보안 파일 전송 등 승인된 방법으로
.tar파일을 에어갭 환경에 옮기세요. -
에어갭 환경에서 이미지를 로드한 후 내부 레지스트리로 push하세요.
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을 배포합니다.
3단계: Helm 저장소 액세스 설정
이후 실행하는 설치 명령어가 차트를 찾을 수 있도록, 에어갭 환경의 로컬 Helm 클라이언트가 내부 저장소를 가리키게 설정하세요.-
에어갭 환경에서 내부 저장소를 사용하도록 Helm을 설정하세요.
-
차트를 사용할 수 있는지 확인하세요.
에어갭 환경에 W&B 배포하기
내부 레지스트리와 Helm 저장소가 준비되었으니 이제 Kubernetes Operator를 설치하고 외부 서비스를 설정한 후 W&B Platform을 배포할 수 있습니다.4단계: Kubernetes Operator 설치
W&B Kubernetes Operator(Controller Manager)는 W&B Platform 컴포넌트를 관리합니다. 에어갭 환경에 설치하려면 내부 컨테이너 레지스트리를 사용하도록 설정하세요.-
다음 내용으로
values.yaml파일을 생성하세요.repository와 tag 값을 1단계에서 내부 레지스트리로 전송한 실제 버전으로 바꾸세요. 여기에 표시된 버전(1.13.3)은 예시이며, 시간이 지나면 최신 버전과 달라질 수 있습니다. -
operator와 CRD(Custom Resource Definition)를 설치하세요.
-
operator가 실행 중인지 확인하세요.
operator 파드가
Running상태로 표시되어야 합니다.
5단계: MySQL 데이터베이스 설정
W&B Custom Resource를 설정하기 전에 외부 MySQL 데이터베이스를 설정하세요. 프로덕션 배포에서는 가능하면 관리형 데이터베이스 서비스를 사용할 것을 강력히 권장합니다. 자체 MySQL 인스턴스를 운영하는 경우에는 다음과 같이 데이터베이스와 사용자를 생성하세요. 다음 SQL 명령어를 사용하여 데이터베이스와 사용자를 생성하세요.[PASSWORD]를 안전한 비밀번호로 교체하세요:
6단계: W&B Custom Resource 설정
W&B Kubernetes Operator를 설치한 후, 내부 Helm 저장소와 컨테이너 레지스트리를 가리키도록 Custom Resource(CR)를 설정하세요. 이렇게 설정하면 Kubernetes operator가 W&B Platform의 필수 컴포넌트를 배포할 때 공개 소스에 접근하지 않고 내부 레지스트리와 저장소를 사용합니다.다음 예시 설정에 포함된 이미지 버전 태그는 시간이 지나면 최신 버전이 아니게 됩니다. 모든
tag: 값을 1단계에서 내부 레지스트리로 옮긴 실제 버전으로 바꾸세요.wandb.yaml 파일을 만드세요.
호스트 이름, 비밀번호, 태그 등 모든 자리 표시자 값을 실제 설정 값으로 바꾸세요. 위 예시에는 가장 많이 사용되는 컴포넌트가 나와 있습니다.
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는 SCC(Security Context Constraints)를 사용하여 파드 권한을 제어합니다. OpenShift는 기본적으로 파드에restricted SCC를 부여합니다. 이 SCC는 root로 실행하는 것을 금지하며 특정 사용자 ID를 사용하도록 요구합니다.
옵션 1: restricted SCC 사용(권장)
Custom Resource에 적절한 보안 컨텍스트를 지정하여 W&B 컴포넌트가 restricted SCC로 실행되도록 설정하세요.옵션 2: 맞춤형 SCC 생성(필요한 경우)
배포에restricted SCC에서 사용할 수 없는 기능이 필요하다면 다음과 같이 맞춤형 SCC를 생성하세요.
-
SCC를 적용하세요.
-
W&B 서비스 계정에 SCC를 바인딩하세요.
OpenShift Route
OpenShift는 표준 Kubernetes Ingress 대신 Route를 사용합니다. 다음과 같이 OpenShift Route를 사용하도록 W&B를 설정하세요.OpenShift 이미지 풀 설정
OpenShift 클러스터에서 인증이 필요한 내부 이미지 레지스트리를 사용하는 경우 다음 단계를 따르세요.-
이미지 풀 시크릿을 생성하세요.
-
Custom Resource에서 이 시크릿을 참조하세요.
OpenShift 전체 예제
다음 예제는 OpenShift 에어갭 배포를 위한 전체 CR을 보여줍니다.이 예제의 모든
tag: 값을 1단계에서 내부 레지스트리로 전송한 실제 버전으로 바꾸세요. 여기에 표시된 버전은 예시일 뿐이며 시간이 지나면 최신 버전과 달라집니다.보안 요구 사항에 맞는 종합적인 OpenShift 설정 예시가 필요하면 W&B 지원팀 또는 담당 W&B 지원 엔지니어에게 문의하세요.
설치 확인
W&B를 배포한 후에는 설치가 올바르게 작동하는지 확인하세요. 이를 통해 플랫폼에 접근할 수 있는지, 파드가 정상 상태인지, 배포가 내부 리소스만 사용하는지 점검할 수 있습니다. 일반 확인 단계를 먼저 수행한 다음, 이어지는 섹션에서 에어갭 환경을 위한 추가 점검을 완료하세요. 설치 확인을 위해 W&B는 W&B CLI 사용을 권장합니다.wandb verify 명령은 컴포넌트와 설정이 예상대로 작동하는지 확인하는 테스트를 실행합니다.
이 절차는 브라우저에서 첫 번째 Admin 사용자 계정을 생성한다고 가정합니다.
-
W&B CLI 설치:
-
W&B에 로그인:
예시:
-
설치 확인:
에어갭 환경 추가 확인
에어갭 배포에서는 다음 항목도 확인하세요.-
이미지 풀: 모든 파드가 내부 레지스트리에서 이미지를 정상적으로 가져왔는지 확인하세요.
모든 이미지가 내부 레지스트리를 가리키고, 모든 파드가
Running상태여야 합니다. -
외부 연결: W&B가 외부 연결을 시도하지 않는지 확인하세요. 에어갭 모드에서는 외부 연결을 시도하지 않아야 합니다.
- 라이선스 검증: W&B Console에 액세스하여 라이선스가 활성 상태인지 확인하세요.
문제 해결
이미지 풀 오류
파드가 이미지를 가져오지 못하면 다음 사항을 확인하세요.- 내부 레지스트리에 이미지가 있는지 확인하세요.
- 이미지 풀 시크릿이 올바르게 설정되어 있는지 확인하세요.
- Kubernetes 노드에서 레지스트리로 네트워크 연결이 가능한지 확인하세요.
- 레지스트리 인증 자격 증명을 확인하세요.
OpenShift SCC 오류
OpenShift에서 권한 오류로 인해 파드가 실패하는 경우:Helm 차트를 찾을 수 없음
operator가 platform 차트를 찾지 못하는 경우 다음 사항을 확인하세요.- Custom Resource에 지정된 차트 저장소 URL을 확인하세요.
- operator 파드가 내부 Helm 저장소에 연결할 수 있는지 확인하세요.
-
저장소에 차트가 있는지 확인하세요.
자주 묻는 질문
다른 ingress 클래스를 사용할 수 있나요?
예. 다음과 같이 Custom Resource의 ingress 설정을 수정하여 ingress 클래스를 설정할 수 있습니다:여러 인증서가 포함된 인증서 번들은 어떻게 처리하나요?
인증서를 나누어customCACerts 섹션에 각각 별도의 항목으로 추가하세요.
자동 업데이트를 방지하려면 어떻게 해야 하나요?
operator가 W&B를 자동으로 업데이트하지 않도록 설정하려면 다음과 같이 하세요.- operator 설치 시
airgapped: true를 설정하세요(자동 업데이트 확인이 비활성화됩니다). - Custom Resource의
spec.chart.version을 직접 수정하여 버전 업데이트를 관리하세요. - 필요한 경우 W&B System Console에서 자동 업데이트를 비활성화할 수도 있습니다.
W&B는 Self-Managed 인스턴스를 사용하는 고객에게 지원을 계속 받고 최신 기능, 성능 개선 및 버그 수정을 적용할 수 있도록 최소 분기에 한 번은 최신 릴리스로 배포를 업데이트할 것을 강력히 권장합니다. W&B는 메이저 릴리스를 최초 릴리스일로부터 12개월 동안 지원합니다. 자세한 내용은 릴리스 정책 및 프로세스를 참고하세요.
공개 저장소에 연결하지 않아도 배포가 작동하나요?
예. operator 설정에airgapped: true를 지정하면 Kubernetes operator는 내부 리소스만 사용하고 공개 저장소에 연결을 시도하지 않습니다.
에어갭 환경에서 W&B를 업데이트하려면 어떻게 하나요?
W&B를 업데이트하려면 다음 단계를 따르세요.- 인터넷에 연결된 시스템에서 새 컨테이너 이미지를 pull하세요.
- 이미지를 에어갭 레지스트리로 전송하세요.
- 새 Helm 차트를 내부 저장소에 업로드하세요.
-
Custom Resource에서
spec.chart.version과 이미지 태그를 업데이트하세요. - 업데이트한 Custom Resource를 적용하세요. 그러면 operator가 W&B 컴포넌트를 롤링 업데이트합니다.
다음 단계
배포가 완료되면 다음 작업을 진행하세요.- 사용자 인증 설정: SSO 또는 기타 인증 방법을 설정하세요.
- 모니터링 설정: W&B 인스턴스와 인프라에 대한 모니터링을 설정하세요.
- 업데이트 계획 수립: Server 업그레이드 프로세스를 검토하고 업데이트 주기를 정하세요.
- 백업 설정: MySQL 데이터베이스 백업 절차를 마련하세요.
- 프로세스 문서화: 에어갭 환경에 맞는 업데이트 절차를 런북으로 작성하세요.
도움 받기
배포 중 문제가 발생하면 다음을 참고하세요.- 인프라 관련 안내는 레퍼런스 아키텍처를 참조하세요.
- 설정에 대한 자세한 내용은 Operator 가이드를 확인하세요.
- W&B 지원팀 또는 담당 W&B 지원 엔지니어에게 문의하세요.
- OpenShift 관련 문제는 Red Hat OpenShift 문서를 참조하세요.