Dev Stories

DevOpsMate (자동화 툴) 기반 SPC 기밀 K8s 구축 사례

  안녕하세요. AX프로토타입팀 김재현 입니다.

     

  이 글에서는 SPC 환경에서 DevOpsMate를 활용해 기밀 Kubernetes 클러스터를 구축한 사례를 공유드리고자 합니다. 보안 요구사항이 까다로운 환경에서도 안정적인 컨테이너 인프라를 빠르게 구성하기 위한 현실적인 접근과 그 과정에서 얻은 경험을 담았습니다.

SPC 환경에서 Kubernetes? 쉽지 않습니다.

  SPC(Secure Public Cloud) 환경은 기본적으로 기밀 컴퓨팅 기반 인프라를 전제로 하며, 보안 정책이 매우 엄격합니다. 현재 Azure SPC에서는 기밀 VM은 지원되지만, 기밀 컨테이너 서비스(AKS Confidential Node Pool)는 한국 리전에서 GA 일정은 미정입니다.


  SPC 마이그레이션 대상 시스템 중에서는 기밀성이 요구되는 컨테이너 기반 서비스가 포함되어 있었고, 이를 위해 현실적인 대안으로 Rancher 기반 기밀 Kubernetes 환경을 자체 구축하게 되었습니다.

DevOpsMate란?

  DevOpsMate 는 B2B 사업 혹은 SPC 같은 철저한 보안이 필요한 환경에서도 Kubernetes 클러스터를 신속하고 안정적으로 구축할 수 있게 도와주는 자동화 설치 도구입니다.


  KT 자동화 솔루션으로 Rancher 기반 Kubernetes 클러스터 및 오픈소스 서비스 구축을 대부분의 단계를 자동화할 수 있습니다.

01.jpg

주요 기능

  • Kubernetes 환경 자동화 설치

  • 다양한 오픈소스 어플리케이션 (ArgoCD, Prometheus 등 ) 들에 대한 구축 자동화 지원

  • 고객사별 설치 패키지 관리 기능


  DevOpsMate의 UI를 통해 클러스터 정보를 쉽게 입력하고 자동으로 설치 스크립트를 생성할 수 있습니다. 노드 정보, 클러스터 버전, 네트워크 설정 등을 UI에서 간단히 입력하면, DevOpsMate가 그 내용을 기반으로 RKE2 설치를 위한 스크립트와 설정 파일을 자동으로 만들어줍니다. 수작업으로 일일이 설치 경로를 확인하거나 각종 옵션을 붙여가며 설치하던 예전 방식에 비하면 훨씬 빠르고, 일관성 있게 구성할 수 있습니다. 무엇보다도, 실수할 여지가 줄어드는 게 정말 큰 장점이 있습니다.


2.png

인프라 및 Azure 연동 구성 

 Azure Confidential VM 기반 인프라 위에 Rancher와 DevOpsMate를 활용했고, Azure의 다양한 기능들(Azure Files, LoadBalancer 등)과도 연동해 클러스터를 SPC 환경에 구성을 추진하였습니다.

기본 환경

  • 클라우드: Azure Confidential VM

  • K8s 플랫폼: Rancher Prime v2.10.2

  • 레포지토리: Nexus

  • 자동화 도구: DevOpsMate


  기본 환경 구축이 끝난 후, DevOpsMate에서 자동으로 생성된 Ansible 기반 설치 스크립트를 사용해 본격적인 클러스터 설치를 시작했습니다. 스크립트 실행만으로 각 노드에 필요한 컴포넌트들이 설치되고, Rancher 환경이 자동으로 구성되기 때문에 수작업 없이 빠르고 일관되게 설치가 가능합니다.


3.png

Azure 연동 구성

  Azure Files는 Kubernetes에서 Persistent Volume(PV)으로 사용할 수 있도록 CSI(Container Storage Interface) 드라이버를 통해 연동했습니다. 이를 통해 쿠버네티스 워크로드에서 Azure Files의 파일 공유를 표준화된 방식으로 안정적이고 쉽게 사용할 수 있도록 구성했습니다.

  Azure Disk 또한 Kubernetes에서 블록 스토리지로 사용할 수 있도록 CSI 드라이버를 통해 연동했습니다. 이는 단일 Pod에 연결되는 고성능 디스크로, 상태 저장 애플리케이션(예: 데이터베이스)에 적합합니다. 이를 통해 워크로드에서 고가용성 및 고성능이 요구되는 스토리지 요구 사항을 충족할 수 있도록 했습니다.

02.jpg
 

  Azure LoadBalancer는 클러스터 내부 통신과 외부 서비스 접근을 모두 고려해 다음과 같은 포트 구성을 적용했습니다.

  • 6443 포트: Kubernetes API Server 접근용

  • 9345 포트: Rancher Cluster Agent 통신용

  • 80/443 포트: 애플리케이션 서비스용 (HTTP/HTTPS)


K8s 클러스터 구성은 어떻게 하였나?

  클러스터는 역할에 따라 네 가지 유형의 노드로 구성되었습니다.

  • Control Node는 kubectl을 통한 클러스터 제어와 Nexus 저장소 운영을 담당하며, 관리 도구가 배치됩니다.

  • Master Node는 kube-apiserver, kube-scheduler, etcd 등 주요 컨트롤 플레인 컴포넌트를 포함하여, 클러스터 전체의 상태를 제어하고 조율하는 핵심 노드입니다.

  • Worker Node (OSS)는 Rancher, Prometheus, ArgoCD 등 시스템 운영에 필요한 오픈소스 구성요소들이 배치되는 노드입니다.

  • Worker Node (App)는 실제 서비스 애플리케이션이 배포되는 실행 환경으로 사용됩니다.


  이처럼 역할을 분리함으로써, 운영 안정성과 관리 효율성을 높일 수 있었습니다.


5.png

마무리하며..

AKS가 안 된다면? 현실적인 대안이 필요했다

  AKS에서 기밀 컨테이너를 지원하지 않는 현실 속에서 Rancher를 통한 직접 구축은 효과적인 대응이었습니다. 기술의 한계를 인지하고 적시에 대안을 설계하는 유연성은 이 프로젝트의 핵심 성공 포인트였습니다. 

자동화의 힘은 생각보다 컸다

  DevOpsMate를 통해 설치 시간을 대폭 단축하고, 수작업으로 인한 실수도 줄일 수 있었습니다. 반복 가능한 자동화 구성은 테스트 환경, 운영 환경 간 일관성 확보에도 큰 도움이 되었습니다.

김재현

K8s 기반 플랫폼과 자동화·PoC를 다루는, 삽질도 실력이라 믿는 클라우드 엔지니어입니다.