문서 목차
에어갭(Air-Gapped) 배포
외부 인터넷 접속이 차단된 격리 환경에서 ORKESTRIX를 배포하는 방법을 설명합니다.
QUANTUM C&S
외부 인터넷 접속이 차단된 격리 환경에서 ORKESTRIX를 배포하는 방법을 설명합니다.
개요
에어갭 환경에서는 외부 저장소(pkgs.k8s.io, Docker Hub 등)에 직접 접근할 수 없습니다. ORKESTRIX는 필요한 패키지, 컨테이너 이미지, Helm 차트를 미리 수집하여 내부 저장소(Nexus)를 통해 설치하는 방식을 지원합니다.
배포 흐름
1. 인터넷이 연결된 환경에서 수집(Collect)
└─ OS 패키지 (.deb / .rpm)
└─ 컨테이너 이미지
└─ Helm 차트
└─ 바이너리 파일
2. 수집한 아티팩트를 에어갭 환경으로 전송
3. 에어갭 환경에 내부 저장소(Nexus) 구성
4. 내부 저장소를 통해 ORKESTRIX 설치
수집 단계 설정
인터넷이 연결된 환경에서, 수집 전용 서버([qks-pkg-server] 인벤토리 그룹) 1대를 지정합니다.
[qks-pkg-server]
<수집을 실행할 노드>
ubuntu.yaml에서 수집할 항목을 선택합니다(여러 개 동시 지정 가능):
qks_collector_gathering_charts: true # Helm 차트
qks_collector_gathering_images: true # 컨테이너 이미지
qks_collector_gathering_packages: true # OS 패키지 (.deb/.rpm)
qks_collector_gathering_files: true # 바이너리 파일
qks_collector_gathering_buckets: false # S3 오브젝트(Nexus/Harbor 초기 데이터)
qks_collector_gathering_sources: false # Git 소스 클론(일부 컴포넌트 빌드용)
qks_collector_gathering_deployer: false # 에어갭 대상 서버용 Ansible 실행환경 자체(최초 1회, 아래 설명 참고)
buckets/sources/deployer 3개 항목은 특정 컴포넌트(Nexus, qks-service, qks-minio 등)에만 필요한 부가 수집 유형이며, 이번 문서의 검증 범위(Helm Chart 기준 charts/images/packages/files 흐름)에는 포함되지 않았습니다. 필요한 경우에만 켜서 사용하세요.
deployer는 조금 특별한 항목으로, 컨테이너/차트가 아니라 에어갭 대상 서버에서 Ansible 자체를 실행하기 위한 Python/Ansible 실행환경을 만들어줍니다(에어갭 환경엔 Ansible을 설치할 인터넷도 없으므로, 이 실행환경부터 먼저 반입해야 합니다). 수집 후 생성되는 qks.k8s.deployer-<배포판><버전>.tar.gz와 .sh 스크립트를 에어갭 서버로 옮겨 실행하면 그 서버에 Ansible 실행환경이 구성됩니다.
수집 실행
컴포넌트를 하나씩 지정해서 수집합니다(전체를 한 번에 수집하려면 all 지정):
./install.sh ubuntu plays/qks-collector.yaml "-e qks_collector_gathering_component=<컴포넌트명>"
수집된 데이터는 data/offline/<컴포넌트명>/{charts,images,...}/ 아래에 저장됩니다.
에어갭 환경 설치 실행
수집한 데이터가 있는 상태에서, 오프라인 모드로 해당 컴포넌트를 설치합니다:
./install.sh ubuntu plays/qks-<컴포넌트명>.yaml "-e qks_offline_enabled=true"
qks_offline_enabled=true가 적용되면, 수집 서버에 있던 데이터가 대상 노드로 자동 배포된 뒤(qks-common/offline 롤), Helm이 온라인 저장소가 아니라 이 로컬 파일을 사용해 설치를 진행합니다:
# 실제 실행되는 helm 명령 예시 (온라인 저장소 이름이 아니라 로컬 파일 경로가 지정됨)
helm upgrade -i ... <release> '/data/qks/offline/<컴포넌트명>/charts/<차트파일>.tgz'
qks_package_repository_enabled: true)까지 함께 켜야 합니다. 이 페이지는 개별 컴포넌트의 Helm Chart 오프라인 설치 흐름을 기준으로 검증되었으며, OS 패키지 오프라인 설치 흐름은 별도 검증이 필요합니다.