오픈소스 인사이트
home
오픈소스 기술 동향
home
🚀

인프라 복잡성을 낮추는 OpenShift SNO 클러스터 최적화 구축 전략

7 more properties

🤔 OpenShift 배포를 준비하며 가장 먼저 마주하는 난관은 무엇인가요?

OpenShift 배포를 준비하며 가장 먼저 마주하는 난관은 무엇인가요? 수많은 YAML 파일, 까다로운 네트워크 선행 조건, 그리고 반복되는 설치 오류로 인한 리소스 낭비일 것입니다. 'OpenShift는 무겁고 어렵다'는 편견을 깨고, 단일 노드만으로도 엔터프라이즈급의 강력한 쿠버네티스 환경을 효율적으로 구축할 수 있다면 어떨까요?
RedHat에서 제공하는 OCP Assisted Installer는 이러한 복잡한 과정을 비약적으로 단순화했습니다. 로드밸런서나 복잡한 물리 네트워크 구성에 얽매일 필요 없이, 검증된 인프라 환경 위에서 핵심적인 설치 워크플로우에만 집중하세요.
이번 글에서는 복잡한 설정은 걷어내고, Assisted Installer를 활용해 OpenShift 컴퓨팅을 가장 간결하게 구성하는 핵심 실무 가이드를 공유합니다.
이번 글은 OpenShift 클러스터를 구성할 때 단일 노드로 소규모 테스트 환경을 구축하거나, 적은 노드로 컴팩트하게 클러스터를 구축할 수 있는 방법에 초점을 두었습니다.
따라서 SNO(Single Node Openshift)를 구상해 보았으며, Assisted Installer를 통해 폐쇄환경, 통신가능 환경 모두 구축을 검증해 보았습니다.

🤖 SNO (Single Node Openshift) 란? 

이름 그대로 단 1대의 서버(Node)에 OpenShift 클러스터의 모든 기능을 집약해 놓은 구성 방식입니다.
일반적인 OpenShift 클러스터는 마스터 노드 3대와 워커 노드가 별도로 존재해야 하지만, SNO는 이를 1대로 압축했습니다.

1. SNO의 핵심 특징

•
엣지 컴퓨팅(Edge Computing): 공장, 매장, 원격지 등 물리적 공간이 좁고 서버를 여러 대 두기 어려운 환경.
•
컴팩트한 리소스: 최소한의 하드웨어 자원으로 OpenShift의 모든 기능(컨트롤 플레인, 워커 노드 역할 통합)을 사용할 수 있습니다.
•
완벽한 쿠버네티스 환경: 규모만 작을 뿐, 멀티 노드 OpenShift와 동일한 API와 기능을 제공합니다.

2. 왜 SNO를 사용할까? (주요 사용 사례)

•
소규모 테스트 및 개발: 개발자 개인 PC 환경이나 소규모 팀의 테스트 서버로 저비용 고효율 환경 구축.
•
간소화된 구성: 복잡한 클러스터 네트워크 설정이나 다수의 서버 유지보수 비용을 들이지 않고 쿠버네티스 기반의 인프라를 운영해야 할 때 적합합니다.
이번 구축은 "외부 통신이 가능한 환경"을 기준으로 작성하였으며 SNO 설치는 레드햇에서 제공하는 assisted-installer를 사용하여 설치합니다.
아래 링크를 통해 assisted installer의 웹 페이지에 접속할 수 있습니다.

✨ OpenShift 설치시 환경 구성 참고사항

1. OpenShift 설치 권장 요구 사항 확인 필요

CPU: 최소 8코어/ MEM: 최소 16GB/ 디스크: 최소 120GB , 추가하는 오퍼레이터에 따라 리소스 확장 필요 (CPU 코어, 메모리, 디스크)
1.
본 환경은 VM 환경으로 내부 DNS 통신용 서버 1대, SNO 서버 1대로 구성하였습니다.
•
내부 DNS & Bastion 겸용 서버 IP : 192.168.8.220
•
SNO(Single Node Openshift)서버 IP : 192.168.8.231

2. VM 생성시 요구 사항

•
VM 생성 > VM 편집 > CPU > 하드웨어 가상화 활성화 체크 (Virtualization Operator 설치시 필요)
VM 옵션 > 부팅옵션 > 가상 시스템 부팅에 사용할 펌웨어 선택: EFI >
1.
고급 > 구성 매개 변수: disk.EnableUUID = TRUE 추가 (이 설정이 없으면 노드들이 자신의 디스크를 고유하게 식별하지 못해 설치 진행이 안될 수 있습니다.)
2.
VM 환경에 설치시 해당 VM의 MAC 주소정보를 알아야 합니다.
◦
MAC 주소 확인 : VM 생성 > VM 시작 > 네트워크 어댑터 1 > MAC 주소 또는 콘솔에서 확인
◦
만약 물리 서버에서 각각 노드 설치시, 대상서버의 NIC의 MAC 주소를 알아야 하며, Assisted Installer 웹에서 제공받은 ISO 파일을 USB 등으로 제작해 서버에 연결하여 설치합니다.

🎊 본격적인 SNO 설치

이제 Assisted-Installer 웹 페이지에 접속하여 Create Cluster를 클릭합니다.
기본적인 클러스터 이름, 도메인 주소, OpenShift 버전, 아키텍처 등을 선택합니다.
풀 시크릿 정보를 확인합니다. 기본적인 정보가 들어가 있으므로 필요에 따라 수정할 수 있습니다.
수정이 필요 없으면 넘어갑니다. * 풀 시크릿 정보는 레드햇 웹 사이트에서 다운로드 받을 수 있습니다.
설치할 대상 플랫폼을 선택합니다. 저는 ESXI 상의 VM에 설치하여서 별도로 선택하지 않았습니다.
클러스터를 구성할 노드의 수를 선택합니다.
•
Single Node Openshift를 (SNO)를 설치할 계획이라면 "1"을 선택하고,
•
만약 3-Node Compact를 구성할 경우 "3"을 선택합니다.
•
3-Node Compact란? Node01 ~03이 컨트롤플레인 + 워커노드의 역할을 동일하게 적용하되, Node01만 부트스트랩 역할을 추가로 가집니다.
이번 글에서는 SNO를 설치할 계획이므로 "1" 을 선택합니다.
호스트의 네트워크는 Static IP를 선택하고 다음을 누릅니다.
네트워크 설정에서 네트워크 스택 타입을 IPv4를 선택하고, 내부 DNS서버, 외부 DNS서버를 입력합니다. 여러 DNS 기재 시 구분은 “,” 콤마로 합니다.
SNO Host의 IP를 설정하고 서브넷을 입력합니다, 마찬가지로 기본 게이트웨이 설정을 입력합니다.
SNO의 Static 네트워크 설정을 완료합니다. (MAC 주소는 ESXI 콘솔에서 확인한 정보를 기입합니다.)
SNO 설치시 추가해야할 Operator을 체크합니다.
여기에서는 Openshift virtualization과 Openshift AI Operator을 설치합니다.
다음과 같이 Operator 의 세부사항을 체크합니다. 현재 Virtualization, AI Operator  하위 항목이 체크되어 있습니다.
체크가 완료되면 다음을 클릭합니다.
Host discovery의 Add host를 클릭하여 사전 설정이 적용된 ISO 이미지를 다운받습니다.
Provisioning type을 Full image file로 선택하고, Bastion(DNS서버)의 root 계정의 id_rsa.pub의 값을 SSH public key 의 빈칸에 추가합니다.
다음 Generate Discovery ISO를 눌러 이미지를 다운받습니다.
이미지가 다운로드된 모습
현재 VM환경에 SNO를 설치할 것이므로 해당 ISO 를 사전에 생성한 VM에 마운트 합니다.
ISO 가 마운트되고 VM을 시작하면 CoreOS가 설치되는것을 확인할 수 있습니다.
설치가 완료되고 수초 ~ 수분 기다리게 되면 아래와 같이 웹 페이지의 Host Inventory에 VM의 정보가 확인됩니다.
VM의 정보를 자세히 확인합니다.
특이사항이 없으면 다음을 누르고 설치를 진행합니다.
Lunch Openshift Console을 눌러 내부 DNS에 추가할 FQDN과 클라이언트 PC에서 Web console 을 보기 위한 도메인 정보를 설정합니다.
아래 도메인 주소는 내부 DNS 서버에 기록합니다. (/var/named/dk-ocp.example.com.zone)
다음은 SNO 노드와 통신이 가능한 Bastion 서버에서 DNS 설정을 수행합니다.
# cat /etc/named.conf // // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { any; }; /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; geoip-directory "/usr/share/GeoIP"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "dk-ocp.example.com" IN { type master; file "dk-ocp.example.com.zone"; allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
JavaScript
복사
마찬가지로 웹 페이지에서 확인한 API IP, Ingress IP 정보를 DNS 존 파일에 기록합니다.
SNO 특성 상 기본적으로 API IP, Ingress IP가 동일하게 설정됩니다.
# cat /var/named/dk-ocp.example.com.zone $TTL 1D @ IN SOA dk-ocp.example.com. admin.example.com. ( 2024052202 ; 시리얼 번호 증가 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS dk-ocp.example.com. ; Bastion 노드 (DNS 서버 자신) dk-ocp.example.com. IN A 192.168.8.220 ; SNO 노드 API IP api.dk-lustre.example.com A 192.168.8.231 *.apps.dk-lustre.example.com A 192.168.8.231 # systemctl restart named
JavaScript
복사
아래 도메인 주소를 Bastion(DNS서버)의 /etc/hosts 에 기록합니다.
또 Web console 에 접속할 클라이언트 PC(클라이언트PC 윈도우OS)에도 기록합니다.
C:\Windows\System32\drivers\etc\hosts
설치가 완료되면 Web console URL을 클릭하고 Username/Password 를 복사한뒤 Web console 에 기입합니다.
Web console 에 접속한 뒤 설치된 Operator을 확인합니다.
Web console 접속 및 Operator  확인
설치 완료 후 Web console 에 접속하면,  사전에 구성한 Operator 들이 정상적으로 동작하는 것을 확인할 수 있습니다.
이제 OpenShift Virtualization을 활용해 가상머신(VM)을 통합 관리하고, OpenShift AI를 통해 AI 모델 학습 및 추론 환경을 즉시 배포하여 운영할 수 있는 준비가 끝났습니다.

👌마치며

이번 가이드에서는 통신 가능한 환경을 기준으로 OpenShift를 Single Node로 가장 간결하게 구축하는 방법을 살펴보았습니다.
다음 편에서는 실제 기업 인프라 환경에서 가장 요구가 많은 외부 통신이 차단된 '완전 폐쇄 환경(Disconnected)'에서 3-Node Compact 클러스터 구축을 다룰 예정입니다. 폐쇄망 환경에서의 리포지토리 구성과 이미지 미러링 등 복잡한 구성 없이 원클릭으로 설치할 수 있는, 한층 더 실용적인 내용을 준비했으니 많은 관심 부탁드립니다.

🧾 참고 자료

지현 프로
Linux OS 및 x86 Infra 업무를 담당하고 있어요 😄