소개
- 보안이 중요한 정부 시설
- 엄격한 네트워크 격리가 필요한 금융 기관
- 규정 준수 요구 사항이 있는 의료 기관
- 산업 제어 시스템(ICS) 환경
- 기밀 네트워크를 사용하는 연구 시설
사전 요구 사항
버전 요구사항
SSL/TLS 요구 사항
하드웨어 요구 사항
MySQL 데이터베이스
Redis
- AWS Elasticache
- Google Cloud Memory Store
- Azure Cache for Redis
- 사용자의 클라우드 또는 온프레미스 인프라에서 호스팅되는 Redis 배포
객체 저장소
- Amazon S3: 업계 최고 수준의 확장성, 데이터 가용성, 보안, 성능을 제공하는 객체 저장소 서비스입니다.
- Google Cloud Storage: 비정형 데이터를 대규모로 저장하기 위한 관리형 서비스입니다.
- Azure Blob Storage: 대량의 비정형 데이터를 저장하기 위한 클라우드 기반 객체 저장소 솔루션입니다.
- CoreWeave AI Object Storage: AI 워크로드에 최적화된 고성능 S3 호환 객체 저장소 서비스입니다.
- 엔터프라이즈 S3 호환 저장소: MinIO Enterprise (AIStor), NetApp StorageGRID, 또는 기타 엔터프라이즈급 솔루션
MinIO Open Source는 활성 개발이나 사전 컴파일된 바이너리 없이 유지 관리 모드에 있습니다. 프로덕션 배포의 경우 W&B는 관리형 객체 저장소 서비스 또는 MinIO Enterprise (AIStor)와 같은 엔터프라이즈 S3 호환 솔루션 사용을 권장합니다.
에어갭 환경별 요구 사항
- 내부 컨테이너 레지스트리: 필요한 모든 W&B 이미지가 포함된 프라이빗 컨테이너 레지스트리(Harbor, JFrog Artifactory, Nexus 등)에 대한 액세스
- 내부 Helm 저장소: W&B Helm 차트가 있는 프라이빗 Helm 차트 저장소에 대한 액세스
- 이미지 전송 기능: 인터넷에 연결된 시스템에서 에어갭 레지스트리로 컨테이너 이미지를 전송할 수 있는 방법
- 라이선스 파일: 유효한 W&B 엔터프라이즈 라이선스. 라이선스를 획득하려면(예: 인터넷에 연결된 시스템에서) Requirements 페이지의 License 섹션을 참조하거나 W&B account team에 문의하세요.
에어갭 환경 준비하기
Step 1: 내부 컨테이너 레지스트리 설정
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- 메트릭 수집용 Prometheusquay.io/prometheus-operator/prometheus-config-reloader- Prometheus 종속성
전체 이미지 목록 조회
-
인터넷에 연결된 시스템에서 W&B Helm charts 저장소로부터 W&B Helm 차트를 다운로드합니다.
-
values.yaml파일을 확인해 모든 컨테이너 이미지와 해당 버전을 파악합니다.또는 다음 명령을 사용해 저장소 이름만 추출할 수 있습니다(버전 태그 제외).저장소 목록은 다음과 비슷하게 표시됩니다.각 이미지의 정확한 버전 태그를 조회하려면 위의 첫 번째 명령(grep -E "repository:|tag:")을 사용하세요. 그러면 저장소 이름과 해당 버전 태그가 함께 표시됩니다.
air-gapped 레지스트리로 이미지 전송
-
인터넷에 연결된 시스템에서 필요한 모든 이미지를 pull한 다음 저장합니다.
버전을 일관되게 관리하려면 셸 변수를 사용하세요:아래 예시의 버전 번호는 위의 step 2에서 Helm 차트를 검사해 확인한 실제 버전으로 바꾸세요. 여기에 표시된 버전은 예시일 뿐이며, 시간이 지나면 더 이상 최신이 아니게 됩니다.
-
승인된 방법(USB 드라이브, 보안 파일 전송 등)을 사용해
.tar파일을 air-gapped 환경으로 전송합니다. -
air-gapped 환경에서 이미지를 로드한 뒤 내부 레지스트리에 push합니다:
Step 2: 내부 Helm 차트 저장소 설정
-
인터넷에 연결된 시스템에서 chart를 다운로드합니다:
-
.tgzchart 파일을 에어갭 환경으로 전송한 다음, 저장소 절차에 따라 내부 Helm 저장소에 업로드합니다.operatorchart는 W&B Kubernetes Operator(Controller Manager)를 배포합니다.operator-wandbchart는 Custom Resource(CR)에 설정된 값을 사용해 W&B Platform을 배포합니다.
step 3: Helm 저장소 접근 설정
-
에어갭 환경에서 Helm이 내부 저장소를 사용하도록 설정합니다:
-
차트를 사용할 수 있는지 확인합니다:
에어갭 환경에 W&B 배포
Step 4: Kubernetes Operator 설치
-
다음 내용으로
values.yaml파일을 생성합니다:저장소와 태그는 Step 1에서 내부 레지스트리로 전송한 실제 버전으로 바꾸세요. 여기 표시된 버전(1.13.3)은 예시이며, 시간이 지나면 더 이상 최신 버전이 아닐 수 있습니다. -
Operator와 Custom Resource Definition(CRD)을 설치합니다:
-
Operator가 실행 중인지 확인합니다:
Operator 파드가
Running상태로 표시되어야 합니다.
Step 5: MySQL 데이터베이스 설정
SOME_PASSWORD는 원하는 안전한 비밀번호로 바꾸세요:
Step 6: W&B Custom Resource 설정
아래 예시 설정에는 곧 구식이 될 이미지 버전 태그가 포함되어 있습니다. 모든
tag: 값을 Step 1에서 내부 레지스트리로 옮긴 실제 버전으로 바꾸세요.wandb.yaml 파일을 만드세요:
모든 플레이스홀더 값(호스트 이름, 비밀번호, 태그 등)을 실제 설정 값으로 바꾸세요. 위 예시에는 가장 일반적으로 사용되는 컴포넌트가 나와 있습니다.
settingsMigrationJobweave-tracefilestreamflat-runs-table
Step 7: W&B 플랫폼 배포
-
W&B Custom Resource를 적용해 플랫폼을 배포합니다:
-
배포 진행 상황을 모니터링합니다:
Operator가 필요한 모든 컴포넌트를 생성하므로 배포에 몇 분 정도 걸릴 수 있습니다.
OpenShift 설정
OpenShift 보안 컨텍스트 제약 조건
restricted SCC를 할당하므로, 루트로 실행할 수 없으며 특정 사용자 ID가 필요합니다.
옵션 1: restricted SCC 사용(권장)
옵션 2: 맞춤형 SCC 만들기(필요한 경우)
restricted SCC에서 제공하지 않는 기능이 필요하면 맞춤형 SCC를 만드세요:
-
SCC를 적용합니다:
-
W&B 서비스 계정에 SCC를 바인딩합니다:
OpenShift Routes
OpenShift 이미지 풀 설정
-
이미지 풀 시크릿을 생성합니다:
-
Custom Resource에서 시크릿을 레퍼런스합니다:
OpenShift 전체 예제
이 예제의 모든
tag: 값은 Step 1에서 내부 레지스트리로 전송한 실제 버전으로 바꾸세요. 여기에 표시된 버전은 예시이며 곧 더 이상 최신이 아니게 됩니다.보안 요구 사항에 맞는 포괄적인 OpenShift 설정 예시가 필요하면 W&B 지원팀 또는 배정된 W&B 지원 엔지니어에게 문의하세요.
설치를 확인하세요
verify 명령어는 모든 컴포넌트와 설정을 확인하는 여러 테스트를 실행합니다.
이 단계에서는 첫 번째 관리자 사용자 계정이 브라우저에서 생성되었다고 가정합니다.
- W&B CLI를 설치합니다:
- W&B에 로그인합니다:
- 설치를 확인하세요:
추가 에어갭 검증
-
이미지 pull: 모든 파드가 내부 레지스트리에서 이미지를 성공적으로 pull했는지 확인합니다:
모든 이미지는 내부 레지스트리를 가리켜야 하며, 모든 파드는
Running상태여야 합니다. -
외부 연결: W&B가 외부 연결을 시도하지 않는지 확인합니다(에어갭 모드에서는 외부 연결을 시도하면 안 됩니다):
- 라이선스 검증: W&B 콘솔에 접속해 라이선스가 활성 상태인지 확인합니다.
문제 해결
이미지 pull 오류
- 내부 레지스트리에 이미지가 있는지 확인
- 이미지 풀 시크릿이 올바르게 설정되어 있는지 확인
- Kubernetes 노드에서 레지스트리까지 네트워크로 연결되는지 확인
-
레지스트리 인증 자격 증명을 확인
OpenShift SCC 오류
Helm chart를 찾을 수 없음
- Custom Resource의 chart 저장소 URL을 확인합니다.
- Operator 파드가 내부 Helm 저장소에 접속할 수 있는지 확인합니다.
-
저장소에 chart가 있는지 확인합니다.
자주 묻는 질문
다른 인그레스 클래스를 사용할 수 있나요?
여러 인증서가 포함된 인증서 번들은 어떻게 처리하나요?
customCACerts 섹션에서 여러 항목으로 나누세요:
자동 업데이트를 방지하려면 어떻게 해야 하나요?
- Operator 설치에서
airgapped: true를 설정합니다(이렇게 하면 자동 업데이트 확인이 비활성화됩니다). - Custom Resource에서
spec.chart.version을 수동으로 업데이트해 버전 업데이트를 제어합니다. - 필요한 경우 W&B System Console에서 자동 업데이트를 비활성화합니다.
W&B는 Self-Managed 인스턴스를 사용하는 고객에게 지원을 유지하고 최신 특성, 성능 개선, 수정 사항을 받기 위해 최소 분기마다 한 번 이상 배포를 최신 릴리스로 업데이트할 것을 강력히 권장합니다. W&B는 메이저 릴리스를 최초 릴리스 날짜로부터 12개월 동안 지원합니다. 자세한 내용은 릴리스 정책 및 프로세스를 참고하세요.
배포는 공개 리포지토리에 연결하지 않아도 작동하나요?
airgapped: true를 지정하면 Kubernetes Operator는 내부 리소스만 사용하고 공개 리포지토리에 연결을 시도하지 않습니다.
에어갭 환경에서 W&B를 어떻게 업데이트하나요?
- 인터넷에 연결된 시스템에서 새 컨테이너 이미지를 가져옵니다
- 이미지를 에어갭 레지스트리로 전송합니다
- 새 Helm chart를 내부 저장소에 업로드합니다
-
Custom Resource에서
spec.chart.version및 이미지 태그를 업데이트합니다 - 업데이트된 Custom Resource를 적용합니다 Operator가 W&B 컴포넌트에 대해 롤링 업데이트를 수행합니다.
다음 단계
- 사용자 인증 구성: SSO 또는 기타 인증 방법을 설정합니다.
- 모니터링 설정: W&B 인스턴스와 인프라에 대한 모니터링을 구성합니다.
- 업데이트 계획 수립: Server upgrade process를 검토하고 업데이트 주기를 수립합니다.
- 백업 구성: MySQL 데이터베이스용 백업 절차를 수립합니다.
- 프로세스 문서화: 특정 에어갭 업데이트 절차를 위한 운영 절차서를 작성합니다.
도움 받기
- 인프라 관련 지침은 레퍼런스 아키텍처를 검토하세요
- 설정 관련 세부 사항은 Operator guide에서 확인하세요
- W&B 지원팀 또는 배정된 W&B 지원 엔지니어에게 문의하세요
- OpenShift 관련 문제는 Red Hat OpenShift 문서를 참조하세요