[Openshift] OCP 싱글 노드 설치 - SNO Install
Openshift SNO는 엣지 컴퓨팅 워크로드를 위해 설계된 단일 노드 클러스터입니다. 하나의 노드만으로 동작하기 때문에 일반 Openshift 대비 설치에 필요한 리소스가 적습니다. 즉, 약간의 성능을 갖춘 일반 노트북에서도 테스트 용도로 충분히 운영할 수 있습니다.
이 글에서는 개인 사용자나 개발자가 Openshift를 간편하게 경험해볼 수 있도록, SNO(Single Node Openshift)를 설치하는 방법을 안내합니다. 본 문서는 Openshift 4.13을 기준으로 작성되었습니다.
SNO 설치 사전 요구사항
bastion 서버 설치
Openshift 클러스터를 관리하기 위한 운영 체제가 필요합니다. 이 bastion 서버는 SSH를 통해 Openshift 노드에 접속할 수 있어야 하며, DNS 서버 역할도 수행하게 됩니다.
클러스터 이름 및 도메인 준비
설치 전 클러스터 이름과 도메인을 지정합니다. 이 두 정보가 합쳐져 최종 엔드포인트 주소가 됩니다.
클러스터 이름:
sno
도메인 주소:
example.com
예를 들어 위처럼 지정하면, Openshift 마스터의 API 주소는 api.sno.example.com
이 됩니다.
DNS 서버 준비
Openshift는 IP가 아닌 도메인 이름 기반으로 통신합니다. 따라서 사전에 도메인 네임 서버가 설정되어 있어야 합니다.
Usage | FQDN | Description |
---|---|---|
Kubernetes API | api.sno.example.com | 쿠버네티스 API 주소 |
Internal API | api-int.sno.example.com | 노드간 통신에 사용되는 API 주소 |
Ingress route | *.apps.sno.example.com | 어플리케이션 연결에 사용될 도메인 주소 |
도메인 네임 서버 설정에 관련된 부분은 DNS 서버 설치를 참고하실 수 있습니다.
서브스크립션 준비
Openshift 설치를 위해서는 유효한 Red Hat 서브스크립션이 필요합니다. 개인 학습용이라면 Red Hat Developer 프로그램에 가입하여 60일 체험판 서브스크립션을 사용할 수 있습니다.
개발자 등록을 위해서 개발자 등록을 참고하실 수 있습니다.
SNO 설치용 가상 머신 생성
예시로 VMware Workstation에서 다음과 같은 사양으로 가상 머신을 생성합니다. 이때 운영 체제는 CoreOS 이미지 설치 시 자동으로 구성되므로, 초기에는 빈 머신만 생성해 두면 됩니다.
SNO 설치 단계
SNO 설치는 크게 두 단계로 나뉩니다. 첫 번째는 Red Hat 사이트에서 CoreOS 설치 이미지를 생성하는 단계이며, 두 번째는 생성된 이미지를 이용해 가상 머신을 부팅하고 설치를 마무리하는 단계입니다. 모든 설정은 CoreOS 이미지 생성 시 입력되며, 설치는 웹 콘솔에서 진행됩니다.
1. OCP 설치 이미지 생성
홈페이지 이동: https://console.redhat.com/openshift/assisted-installer/clusters
"Create New Cluster"를 클릭하고 클러스터 정보를 입력한 뒤 "Next"를 눌러 진행합니다.
설치하려는 정보에 맞게 빈칸을 채운 뒤 아래 “Next”버튼을 눌러 다음 단계로 넘어갑니다.
네트워크 정보 입력
DNS: bastion 서버에 구성한 DNS 주소인
192.168.243.169
입력Machine Network: 클러스터에 사용할 네트워크 대역 및 게이트웨이 설정 (예: VMware 사용 시 부여할 IP 대역)
노드 정보 입력
Openshift가 설치될 노드의 IP 주소 및 MAC 주소를 입력합니다. MAC 주소는 실제 장비 또는 VM 설정에서 확인할 수 있습니다.
VMwarew Workstation 맥 주소 확인 (Optional)
추가적인 기능은 체크하지 않고 Next 버튼을 눌러 다음으로 넘어갑니다.
ISO 이미지 생성
Provisioning type: 이미지 방식 선택
SSH public key: bastion 서버의 공개키를 복사하여 입력합니다. (공개키가 없다면ssh-keygen
으로 생성)
[root@bastion ~]# cat ~/.ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDn8uLwnat3XRQCLPb0QvsoGWcx0xHhivC9M3EzRlp4cH2f9ZiolAE8c1LEm1qhiYg+p8/PVYoSX+h3sPVVb25A122i0XR/MMTtcqwP60h2FAMYX1QWBcLsXGKNslnMHSNmCGfDe0Jiaqx...BO4nk/J1NYMAH7LIPNI/hjv67W+XxGKPffNjkVFqDW4Ml33/f7v00b3nJBsl+Ucs= root@bastion
"Generate Discovery ISO"를 클릭하여 설치 이미지를 생성하고, 해당 ISO 파일을 다운로드합니다.
ISO 파일을 다운로드 합니다.
2. RHCOS 설치
다운로드한 ISO 파일을 이용하여 RHCOS를 설치합니다.아래 예제는 VMware Workstation에서 설치하는 화면입니다.
CD를 넣고 서버를 부팅하면 자동으로 설치가 진행됩니다.
여기까지 하면 가상 머신에서 작업하는 부분이 모두 끝납니다. 다시 console.redhat.com으로 돌아가서 설치를 마무리 합니다.
조금 기다리면 레드햇 콘솔 화면의 Host Inventory 부분에 노드가 표시됩니다.“Next” 버튼을 눌러 다음 화면으로 넘어갑니다.
Storage 부분도 그냥 “Next” 버튼을 눌러 넘어갑니다.
네트워크 설정하는 부분이 나오지만 여기도 기본값으로 두고 “Next”버튼을 눌러 다음으로 넘어갑니다.
최종 정보를 확인 후 “Install cluster” 버튼을 눌러 설치를 진행합니다.
설치가 시작되면 아래와 같은 화면이 출력됩니다.“View Cluster events”버튼을 눌러 진행 과정을 확인하실 수 있습니다.
3. OC 클라이언트 설치 (Bastion 서버에서 진행)
OC 클라이언트는 Openshift 클러스터와 상호작용하기 위한 필수 도구입니다. 클러스터 버전에 맞는 버전을 다운로드해야 하며, 다음 경로에서 최신 버전을 받을 수 있습니다.
주소: https://console.redhat.com/openshift/downloads
참고: 설치 버전이 최신이 아닌 경우 OC 다운로드 사이트를 이용하실 수 있습니다. 다음 사이트에서 openshift-client-linux-<version>.tar.gz 를 받으시면 됩니다.
wget 명령을 이용해 bastion 서버에 바로 oc 클라이언트 최신 버전을 다운로드합니다.
[root@bastion ~]# mkdir sno [root@bastion ~]# cd sno/ [root@bastion sno]# wget https://mirror.openshift.com/pub/openshift-v4/x86_64/clients/ocp/stable/openshift-client-linux.tar.gz ... [root@bastion sno]# ls openshift-client-linux.tar.gz
압축 해제 및 /usr/bin 디렉터리에 저장
[root@bastion sno]# tar xvf openshift-client-linux.tar.gz -C /usr/bin/ README.md oc kubectl
oc 클라이언트 버전 확인
[root@bastion sno]# oc version Client Version: 4.13.8 Kustomize Version: v4.5.7
oc 클라이언트 명령어 자동 완성 등록
[root@bastion sno]# oc completion bash > /etc/bash_completion.d/openshift [root@bastion sno]# su -
4. Openshift 로그인 (Bastion 서버에서 진행)
설치가 진행 중인 콘솔 화면에서 로그인 정보를 확인할 수 있습니다. 제공된 kubeconfig 파일을 이용하거나 kubeadmin 사용자로 로그인할 수 있습니다.
kubeconfig 파일은 설치 진행 바 아래 “Download kubeconfig”를 클릭하여 다운로드할 수 있습니다.
bastion 서버에 접속 후 kubeadmin 사용자와 제공된 패스워드를 활용해서 로그인합니다.
[root@bastion ~]# oc login -u kubeadmin -p Xo5Pk-hpfMd-VQxkr-p6Tzb <https://api.sno.example.com:6443> The server uses a certificate signed by an unknown authority. You can bypass the certificate check, but any data you send to the server could be intercepted by others. Use insecure connections? (y/n): y WARNING: Using insecure TLS client config. Setting this option is not supported! Login successful. You have access to 68 projects, the list has been suppressed. You can list all projects with 'oc projects' Using project "default". Welcome! See 'oc help' to get started.
로그인 후 클러스터 노드 정보를 확인합니다.
[root@bastion ~]# oc get node NAME STATUS ROLES AGE VERSION api-int.sno.example.com Ready control-plane,master,worker 48m v1.26.6+73ac561
설치가 되는데 1시간 정도가 소요되었습니다. 콘솔 화면에서 정상적으로 설치된 로그를 확인할 수 있습니다.
클러스터 노드 접속 테스트bastion 서버에서 ssh key를 이용하여 클러스터 노드로 접속할 수 있습니다.
[root@bastion ~]# ssh -i ~/.ssh/id_rsa core@api-int.sno.example.com ... [core@api-int ~]$ [core@api-int ~]$ sudo -i [root@api-int ~]# systemctl status kubelet ● kubelet.service - Kubernetes Kubelet Loaded: loaded (/etc/systemd/system/kubelet.service; enabled; preset: disabled) Drop-In: /etc/systemd/system/kubelet.service.d └─01-kubens.conf, 10-mco-default-madv.conf, 20-logging.conf, 20-nodenet.conf Active: active (running) since Sun 2023-11-05 07:35:17 UTC; 31min ago Main PID: 2782 (kubelet) Tasks: 24 (limit: 101602) Memory: 357.0M CPU: 5min 32.801s CGroup: /system.slice/kubelet.service └─2782 /usr/bin/kubelet --config=/etc/kubernetes/kubelet.conf --bootstrap-kubeconfig=/etc/kubernetes/kubeconfig --kubeconfig=/var/lib/kubelet/kubeconfig --container-runtime-endpoint=/var/run/crio/crio.sock --runtime-cgroups=/system.slice/crio.service --nod>
마무리
SNO를 활용하면 많은 시스템 자원 없이도 Openshift 기능 및 애플리케이션 배포 테스트를 쉽게 해볼 수 있는 장점이 있습니다. 어플리케이션만 빠르게 배포해 보고 싶은 개발자분들은 SNO 설치 보다 redhat-openshift-playground를 활용하시면 설치 없이 바로 사용해 보실 수 있습니다. 플레이그라운드에서는 다양한 연습도 제공하고 있습니다.
댓글
댓글 쓰기