안녕하세요! 오픈소스컨설팅 Playce Cloud Team 정진이입니다.

 

 

들어가면서

 

2023년 2월 오픈소스컨설팅에서 Playce Kube 2.0을 오픈하게 되어 설치 과정을 설명 드리려고 합니다.

 

 

Playce Kube 2.0은 Playce Kube 사이트에서 다운 받을 수 있으며 설치 프로그램에는 Deploy 서버 및 Kubernetes 구성 요소가 모두 포함되어 있습니다. Playce Kube 클러스터에서 지원되는 플랫폼은 OpenStack, AWS, GCP, Azure, Baremetal이 있으며 사용 환경에 맞춰 설치할 수 있습니다.

 

 

이번 Playce Kube 2.0은 OpenStack에서 Rocky 8.5를 사용하여 설치하는 과정을 설명 드리겠습니다.

 

1  보안 그룹 생성

 

 

첫 번째로 각 서버에 맞게 보안 그룹을 생성합니다.

    • Deploy-SG

프로토콜 방향 포트 범위 용도
TCP 인바운드 8443 Dashboard HTTPS
TCP 인바운드 9443 Deploy Keycloak
TCP 인바운드 5000 Docker Registry (HTTPS)
TCP 인바운드 80 Repository HTTP
TCP 인바운드 443 Repository HTTPS
UDP 인바운드 123 Network Time Protocol (chrony)
TCP/UDP 인바운드 53 Domain Name System (bind9)
TCP 인바운드 2049 Network File System
TCP 인바운드 22 SSH

    • Master-SG

프로토콜 방향 포트 범위 용도
TCP 인바운드 6443 Kubernetes API Server
TCP 인바운드 2379-2380 etcd server client API
TCP 인바운드 10250 Kubelet API
TCP 인바운드 10259 kube-scheduler
TCP 인바운드 10257 kube-controller-manager
TDP 인바운드 30000-32767 NodePort Service
TCP/UDP 인바운드 53 Domain Name System (bind9)
TCP 인바운드 179 Calico networking (BGP)
TCP 인바운드 22 SSH

    • Worker-SG

프로토콜 방향 포트 범위 용도
TCP 인바운드 10250 Kubelet API
TDP 인바운드 30000-32767 NodePort Service
TCP/UDP 인바운드 53 Domain Name System (bind9)
TCP 인바운드 179 Calico networking (BGP)
TCP 인바운드 22 SSH

    • Ingress-SG

프로토콜 방향 포트 범위 용도
TCP 인바운드 10250 Kubelet API
TDP 인바운드 30000-32767 NodePort Service
TCP/UDP 인바운드 53 Domain Name System (bind9)
TCP 인바운드 80 Ingress HTTP Port
TCP 인바운드 443 Ingress HTTPS Port
TCP 인바운드 179 Calico networking (BGP)

2  인스턴스 생성

 

 

외부망과 연결된 Bastion 서버와 내부망으로 이루어진 Deploy, Master, Worker 세 대의 서버를 생성합니다.

 

 

Hostname OS IP Spec
Bastion Rocky-8.5 외부망, 내부망 vCPU 8core
RAM 16GB
Disk 500GB
Deploy Rocky-8.5 내부망 vCPU 8core
RAM 16GB
Disk 50GB + 800GB
Master Rocky-8.5 내부망 vCPU 8core
RAM 16GB
Disk 50GB
Worker Rocky-8.5 내부망 vCPU 8core
RAM 16GB
Disk 50GB

3  Private Key 접속을 위한 설정

    • Bastion 서버의 Root 패스워드 변경
      Private Key File 전송 시 원격지 계정의 패스워드를 물어보기 때문에 root 권한으로 비밀번호를 변경합니다. root 권한으로 비밀번호를 변경할 경우 새로운 비밀번호와 새로운 비밀번호 재입력을 하면 되지만 일반 계정에서 비밀번호를 변경할 경우 일반 계정의 비밀번호를 알고 있어야 합니다.

# 패스워드 변경
[root@bastion-rocky ~]# passwd

    • Private Key File 전송
      Private Key File이 보관되어 있는 Windows에서 명령 프롬프트를 통해 외부 인터넷망이 연결되어 있는 Bastion 서버의 .ssh 폴더로 Private Key File을 전송합니다.

# scp [옵션] [파일명] [원격지 계정]@[원격지 IP]:[파일이 저장될 경로]

    • Private Key File 전송 확인
      Bastion 서버에서 ls -al 명령어로 .ssh 폴더로 Private Key File이 전송되었는지 확인합니다.

# Private Key File 전송 확인
[root@bastion-rocky ~]# ls -al .ssh

ls 옵션 의미
-a .(점)을 포함한 경로 안의 모든 파일과 디렉토리 표시
-l 지정한 디렉토리의 내용을 자세히 출력

    • Private Key File 권한 변경
      SSH Private Key는 중요한 정보이기 때에 소유자 외 다른 이가 읽을 수 있으면 에러가 생기므로 소유자만 읽고 쓸 수 있도록 권한을 변경합니다.

# Private Key File 권한 변경
[root@bastion-rocky ~]# chmod 600 .ssh/test-key.pem

# Private Key File 권한 변경 확인
[root@bastion-rocky ~]# ls -al .ssh

    • sshd_config 파일 설정 변경
      SSH 공개키 인증을 사용하기 위해서 sshd_config 파일 #PubkeyAuthentication yes 부분의 주석을 제거합니다.

# sshd_config 파일 설정 변경
[root@bastion-rocky ~]# vi /etc/ssh/sshd_config
PubkeyAuthentication yes 주석 제거

# sshd 서비스 재시작
[root@bastion-rocky ~]# systemctl restart sshd.service

    • 다른 인스턴스 접속 확인
      SSH를 통해 Bastion 서버에서 Deploy, Master, Worker 서버로 접속이 되는지 확인합니다.

# Deploy 서버 접속
[root@bastion-rocky ~]# ssh -i .ssh/test-key.pem root@10.252.3.29

# Master 서버 접속
[root@bastion-rocky ~]# ssh -i .ssh/test-key.pem root@10.252.0.173

# Worker 서버 접속
[root@bastion-rocky ~]# ssh -i .ssh/test-key.pem root@10.252.1.53

4  Bastion 서버에 설치 파일과 체크섬 다운로드

    • Playce Cloud 디렉토리 생성
      Playce Kube 설치 파일과 데이터 파일을 다운 받을 디렉토리를 생성합니다. mkdir 명령어의 -p 옵션은 디렉토리를 생성할 때 상위(부모) 디렉토리가 없을 경우 함께 생성합니다.

[root@bastion-rocky ~]# mkdir -p /playcecloud/srcdata

    • 설치 파일과 데이터 파일 다운로드
      curl 명령어로 설치 파일과 데이터 파일을 다운 받습니다. K8SRegistry 데이터 파일과 OSRepo 데이터 파일이 각각 19.9GB와 14.0GB로 다른 파일에 비해 크기가 커서 다운 받는 시간이 다소 오래 소요될 수 있습니다.

# PlayceCloud.Kube.v2.0.tar 설치 파일 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar

# PlayceCloudData.DeployBase.v2.0.tar 데이터 파일 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.DeployBase.v2.0.tar -o /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.tar

# PlayceCloudData.K8SRegistry.v2.0.tar 데이터 파일 다운로드 
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRegistry.v2.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.tar

# PlayceCloudData.K8SRepo.v2.0.tar 데이터 파일 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRepo.v2.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.tar

# PlayceCloudData.OSRepo.rocky8.v2.0.tar 데이터 파일 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.OSRepo.rocky8.v2.0.tar -o /playcecloud/srcdata/PlayceCloudData.OSRepo.rocky8.v2.0.tar

    • 체크섬 다운로드
      오류 정정을 위한 체크섬 파일을 다운로드 합니다. MD5와 SHA256 둘 중 하나를 선택하여 다운로드 합니다. 

# PlayceCloud.Kube.v2.0.tar 체크섬 다운로드 
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar.MD5SUMS
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloud.Kube.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar.SHA256SUMS

# PlayceCloudData.DeployBase.v2.0.tar 체크섬 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.DeployBase.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.tar.MD5SUMS
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.DeployBase.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.tar.SHA256SUMS

# PlayceCloudData.K8SRegistry.v2.0.tar 체크섬 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRegistry.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.tar.MD5SUMS
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRegistry.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.tar.SHA256SUMS

# PlayceCloudData.K8SRepo.v2.0.tar 체크섬 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRepo.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.tar.MD5SUMS
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.K8SRepo.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.tar.SHA256SUMS

# PlayceCloudData.OSRepo.jammy.v2.0.tar 체크섬 다운로드
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.OSRepo.rocky8.v2.0.tar.MD5SUMS -o /playcecloud/srcdata/PlayceCloudData.OSRepo.rocky8.v2.0.tar.MD5SUMS
[root@bastion-rocky ~]# curl -L http://download.playcecloud.io:13300/playcekube/PlayceCloudData.OSRepo.rocky8.v2.0.tar.SHA256SUMS -o /playcecloud/srcdata/PlayceCloudData.OSRepo.rocky8.v2.0.tar.SHA256SUMS

    • 설치 파일, 데이터 파일, 체크섬 다운로드 확인
      설치 파일, 데이터 파일, 체크섬이 올바른 경로에 다운로드 되었는지 확인합니다.

# 파일 다운로드 확인
[root@bastion-rocky ~]# ls -l /playcecloud/srcdata/

5  Deploy 서버 볼륨 확장

    • 볼륨 생성과 Deploy 서버 연결
      Deploy 서버의 디스크 용량이 50GB 밖에 되지 않으므로 Playce Kube 설치를 위한 800GB 용량의 볼륨을 생성한 뒤 Deploy 서버에 연결합니다.

    • 디스크 파티셔닝
      디스크 파티션 작업은 디스크 드라이브의 기억 공간을 “파티션”이라 알려진 별도의 데이터 영역으로 분할하는 것을 말합니다.

# 디바이스 정보 확인
[root@deploy-rocky ~]# lsblk

# 디스크 파티셔닝
[root@deploy-rocky ~]# fdisk /dev/vdb

# 디스트 파티셔닝 확인
[root@deploy-rocky ~]# lsblk

    • 파일시스템 포맷
      파일 시스템이란 드라이브에 데이터를 기록할 때 해당 데이터의 위치나 파일명의 형식 등을 결정하는 체계를 의미합니다. 어떤 파일 시스템으로 포맷하느냐에 따라 운영체제 호환성이나 단일 파일의 최대용량, 해당 드라이브의 최대 크기 등이 달라집니다. ext4는 리눅스의 저널링 파일 시스템 중 하나로, ext3 파일 시스템의 향상된 버전입니다.

# ext4 파일 시스템 포맷
[root@deploy-rocky ~]# mkfs.ext4 /dev/vdb1

    • Playce Cloud 디렉토리 생성
      Bastion 서버로부터 Playce Kube 설치 파일과 데이터 파일을 전송 받을 디렉토리를 생성합니다. mkdir 명령어의 -p 옵션은 디렉토리를 생성할 때 상위(부모) 디렉토리가 없을 경우 함께 생성합니다.

# 디렉토리 생성
[root@deploy-rocky ~]# mkdir -p /playcecloud

    • Deploy 서버에 마운트
      위에서 생성한 /dev/vdb1 디스크를 /playcecloud와 mount 명령어를 사용해 연결합니다. 그 후 df 명령어로 mount가 되었는지 확인합니다.

# Deploy 서버에 마운트
[root@deploy-rocky ~]# mount /dev/vdb1 /playcecloud

# 마운트 확인
[root@deploy-rocky ~]# df -Th

df 옵션 의미
-T 파일의 Type 항목을 출력
-h 사람이 읽기 쉬운 형태(단위)로 출력 (K, M, G)

6  Deploy 서버에 Playce Kube 설치

    • Bastion 서버에서 Deploy 서버로 설치 파일, 데이터 파일, 체크섬 전송
      파일 전송을 위해 Deploy 서버의 비밀번호를 변경한 후 scp 명령어를 사용해 파일을 전송합니다. 이때 -r 옵션을 사용하여 폴더 전체를 전송합니다.

# Deploy 서버 패스워드 변경
[root@deploy-rocky ~]# passwd

# Bastion 서버에서 설치 파일, 데이터 파일, 체크섬 전송
[root@bastion-rocky ~]# scp -r /playcecloud/srcdata root@10.252.3.29:/playcecloud

    • 파일 전송 확인
      ls -l 명령어를 통해 /playcecloud/srcdata 폴더에 설치 파일, 데이터 파일, 체크섬이 모두 전송됐는지 확인합니다.

# Deploy-Rocky에서 파일 전송 확인
[root@deploy-rocky ~]# ls -l /playcecloud/srcdata

    • 체크섬 확인
      MD5 체크섬으로 설치 파일과 데이터 파일에 오류가 있는지 확인합니다. MD5 또는 SHA256 체크섬 둘 중 하나로 확인합니다. OSRepo 파일의 용량이 클 경우 체크섬 확인 시간이 늘어날 수 있습니다.

# 체크섬 파일이 있는 폴더로 이동
[root@deploy-rocky ~]# cd /playcecloud/srcdata/

# MD5SUMS 체크섬 확인
[root@deploy-rocky srcdata]# cat PlayceCloud.Kube.v2.0.tar.MD5SUMS | md5sum --check

[root@deploy-rocky srcdata]# cat PlayceCloudData.DeployBase.v2.0.tar.MD5SUMS | md5sum --check

[root@deploy-rocky srcdata]# cat PlayceCloudData.K8SRegistry.v2.0.tar.MD5SUMS | md5sum --check

[root@deploy-rocky srcdata]# cat PlayceCloudData.K8SRepo.v2.0.tar.MD5SUMS | md5sum --check

[root@deploy-rocky srcdata]# cat PlayceCloudData.OSRepo.rocky8.v2.0.tar.MD5SUMS | md5sum --check

    • 설치 파일 압축 해제
      tar 명령어로 PlayceCloud.Kube.v2.0.tar 파일을 압축 해제합니다.

# PlayceCloud.Kube.v2.0.tar 설치 파일 압축 해제
[root@deploy-rocky ~]# tar xpf /playcecloud/srcdata/PlayceCloud.Kube.v2.0.tar -C /playcecloud

# /playcecloud 확인
[root@deploy-rocky ~]# ls -l /playcecloud

# /playcecloud/playcekube 확인
[root@deploy-rocky ~]# ls -l /playcecloud/playcekube/

# Playce Kube 버전 확인
[root@deploy-rocky ~]# cat /playcecloud/playcekube/release.txt

tar 옵션 의미
-x 파일 압축 해제
-p 파일 사용 권한에 대한 정보 출력
-f 압축될 파일명 지정
-C 대상 디렉토리 지정

    • playcecloud.conf 설정
      playcecloud.conf 설정 파일을 올바른 경로에 복사하고 내용을 확인합니다. PLAYCE_DOMAIN 부분과 UPSTREAM_DNS 부분을 확인하며 PLAYCE_DEPLOY가 자동으로 Deploy 서버 IP를 설정하는지 확인합니다.

# playcecloud.conf.example 파일 복사
[root@deploy-rocky ~]# cp /playcecloud/playcekube/playcecloud.conf.example /playcecloud/playcecloud.conf

# playcecloud.conf 파일 복사 확인
[root@deploy-rocky ~]# ls -l /playcecloud/

# playcecloud.conf 파일 설정 확인
[root@deploy-rocky ~]# cat /playcecloud/playcecloud.conf

# PLAYCE_DEPLOY가 Deploy-VM IP를 자동으로 설정하는지 확인
[root@deploy-rocky ~]# ip -4 -o a | grep -Ev "\slo\s" | head -n 1 | awk '{ print $4 }' | sed 's/\(.*\)\/.*/\1/'

    • Deploy 서버에 Playce Kube 설치
      Playce Kube 설치를 진행합니다. 설치하는데 약간의 시간이 소요됩니다.

# Playce Kube 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/bin/install_playcekube

    • Playce Kube 서비스 설치 확인
      systemctl status chronyd 명령을 통해 NTP(systemd) 상태가 active인지 확인하고, docker ps 명령을 통해 playcekube_rancher, playcecloud_keycloak, playcecloud_nfs, playcecloud_repository, playcecloud_bind9, playcecloud_registry 서비스가 설치되었는지 확인합니다.

# NTP(systemd) 상태 확인
[root@deploy-rocky ~]# systemctl status chronyd

# Playce Kube 서비스 설치 확인
[root@deploy-rocky ~]# docker ps

# PORTS 리슨 상태 비교 확인
[root@deploy-rocky ~]# ss -nap | grep docker-proxy

7  SSH 접속을 위한 인증키 복사

    • kubespray_ssh와 kubespray_ssh.pub 파일 삭제 (백업)
      Deploy 서버에서 Master 서버와 Worker 서버로 SSH 키를 가지고 접속하기 위한 준비가 필요합니다. 우선 /playcecloud/playcekube/kubespray에 있는 kubespray_ssh 파일과 kubespray_ssh.pub 파일을 kubespray_ssh.backup 파일과 kubespray_ssh.pub.backup 파일로 파일명을 변경하여 백업합니다.

# kubespray_ssh와 kubespray_ssh.pub 파일 확인
[root@deploy-rocky ~]# ls -al /playcecloud/playcekube/kubespray/

# kubespray_ssh와 kubespray_ssh.pub 파일 백업 
[root@deploy-rocky ~]# mv /playcecloud/playcekube/kubespray/kubespray_ssh /playcecloud/playcekube/kubespray/kubespray_ssh.backup
[root@deploy-rocky ~]# mv /playcecloud/playcekube/kubespray/kubespray_ssh.pub /playcecloud/playcekube/kubespray/kubespray_ssh.pub.backup

# kubespray_ssh와 kubespray_ssh.pub 파일 백업 확인
[root@deploy-rocky ~]# ls -al /playcecloud/playcekube/kubespray/

    • 개인키와 공개키를 kubespray_ssh와 kubespray_ssh.pub로 복사
      Bastion 서버의 .ssh 폴더에 있는 개인키를 Deploy 서버의 /playcecloud/playcekube/kubespray 폴더에 kubespray_ssh 파일로 전송합니다. 공개키는 오픈스택 Compute – 키 페어에서 복사한 뒤 vi 편집기를 사용하여 kubespray_ssh.pub 파일에 붙여넣습니다.

# Bastion 서버에서 Deploy 서버로 개인키 전송
[root@bastion-rocky ~]# scp -i .ssh/test-key.pem .ssh/test-key.pem 10.252.3.29:/playcecloud/playcekube/kubespray/kubespray_ssh

# Deploy 서버에서 vi 편집기로 공개키 저장 
[root@deploy-rocky ~]# vi /playcecloud/playcekube/kubespray/kubespray_ssh.pub

# kubespray_ssh와 kubespray_ssh.pub 파일 확인
[root@deploy-rocky ~]# ls -al /playcecloud/playcekube/kubespray/kubespray_*

    • Deploy 서버에서 Master, Worker 서버로 접속 확인
      SSH 키를 사용하여 Deploy 서버에서 Master, Worker 서버로 접속하여 연결이 되는지 확인합니다.

# Deploy 서버에서 Master 서버로 SSH 접속 확인
[root@deploy-rocky ~]# ssh -i /playcecloud/playcekube/kubespray/kubespray_ssh root@10.252.0.173

# Deploy 서버에서 Worker 서버로 SSH 접속 확인
[root@deploy-rocky ~]# ssh -i /playcecloud/playcekube/kubespray/kubespray_ssh root@10.252.1.53

8  클러스터 설치 및 구성

    • k8s.env 설정 파일 생성
      /playcecloud/playcekube/kubespray 폴더에 있는 kubespray-sample.env 파일을 /playcecloud/data/kubespray/envfiles 폴더의 k8s.env 파일로 복사합니다. vi 편집기를 사용하여 k8s.env 파일의 내용을 수정합니다. SSH 키를 사용하므로 ANSIBLE_PASSWD는 주석 처리하고 PRIVATE_DNS와 PRIVATE_NTP 주소는 Deploy 서버의 IP로 변경합니다. # hosts config의 MASTERS, WORKERS, INGRESSES 역시 설정에 맞게 변경합니다.

# kubespray-sample.env 파일을 k8s.env 파일로 복사
[root@deploy-rocky ~]# cp -rp /playcecloud/playcekube/kubespray/kubespray-sample.env /playcecloud/data/kubespray/envfiles/k8s.env

# k8s.env 파일 내용 수정
[root@deploy-rocky ~]# vi /playcecloud/data/kubespray/envfiles/k8s.env

    • 클러스터 설치 쉘 실행

# 클러스터 설치 쉘 실행
[root@deploy-rocky ~]# /playcecloud/playcekube/bin/playcekube_kubespray.sh -f /playcecloud/data/kubespray/envfiles/k8s.env

    • 클러스터 설치 확인
      kubectl config use-context admin@k8s 명령으로 context를 admin@k8s로 변경하고 kubectl get node -o wide와 kubectl get pod -A로 Node와 Pod의 상태를 확인합니다. kubectl get node -o wide 명령으로 master node와 worker node의 STATUS가 Ready 상태인지 확인하고 kubectl get pod -A 명령으로 모든 Pod의 STATUS가 Running 상태인지 확인합니다.

# context 변경 
[root@deploy-rocky ~]# kubectl config use-context admin@k8s

# Node 확인
[root@deploy-rocky ~]# kubectl get node -o wide

# Pod 확인
[root@deploy-rocky ~]# kubectl get pod -A

9  Addons 설치

    • Addons List
        • metrics-server : kubectl top 커맨드 및 HPA 이용 시 사용되는 메트릭 수집 서버 (기본 설치)

        • ingress-nginx : nginx로 구성되어 있는 ingress 서버 (기본 설치)

        • csi-driver : nfs용 csi 드라이버 (기본 설치)

        • keycloak : 쿠버네티스 OpenID 연결용 인증 서버

        • oauth2-proxy : 인증 제공자와 애플리케이션을 연결하는 프록시 서버

        • prometheus (kube-prometheus-stack) : 모니터링 데이터 저장/검색 시스템

        • velero : 백업 솔루션
            • minio : Object Storage 서버. velero에서 백업 복원 시 사용하는 저장소

        • opendistro-es (elasticsearch) : 로그 데이터 저장/검색 시스템

        • gitea : git 형상 관리 서버

        • gitlab : git 형상 관리 및 CI/CD 지원 서버 (옵션 제공)

        • harbor : 이미지/Helm chart 저장소. 이미지 취약점 검색 기능 제공

        • tekton : tekton-pipeline CI 지원 도구

        • jenkins : CI/CD 지원 도구 (옵션 제공)

        • argo-cd : CD 도구
            • argo-rollouts : 배포 전략 확장용 argo-cd 지원 도구

            • argo-events : 이벤트 기반 워크플로 자동화 프레임워크. argo-cd 지원 도구

    • Addons 확인
      Addons는 Kubenetes 클러스터의 기능을 구현 및 확장하는 역할을 합니다. helm search repo 명령과 ls -l /playcecloud/playcekube/kube-packages 명령으로 설치할 Addons 리스트와 비교 확인합니다.

# helm chart repo 확인
[root@deploy-rocky ~]# helm search repo

# kube-packages 디렉토리 확인
[root@deploy-rocky ~]# ls -l /playcecloud/playcekube/kube-packages

    • helm chart 설치 확인
      helm list -A 명령으로 helm chart 설치를 확인합니다.

# helm chart 설치 확인
[root@deploy-rocky ~]# helm list -A

    • Addons 설치 리스트 확인
      설치할 Addons 리스트를 확인합니다.

# Addons 설치 리스트 확인 
[root@deploy-rocky ~]# ls -l /playcecloud/playcekube/kube-packages/*/install*.sh

    • Addons 설치
      가장 먼저 keycloak을 설치합니다. keycloak 설치가 선행되어야 oauth2-proxy가 설치됩니다.

# keycloak 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/keycloak/install-helm-charts.sh 

# oauth2-proxy 설치 
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/oauth2-proxy/install-helm-charts.sh 

# prometheus 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/prometheus/install-helm-charts.sh  

# velero 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/minio/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/velero/install-helm-charts.sh

# gitea 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/gitea/install-helm-charts.sh  

# harbor 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/harbor/install-helm-charts.sh 

# tekton 설치 
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/tekton/install-helm-charts.sh 

# argo-cd 설치 
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/argo-cd/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/argo-rollouts/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/argo-events/install-helm-charts.sh

# linkerd2 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/linkerd2/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/linkerd-viz/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/linkerd-jaeger/install-helm-charts.sh
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/linkerd-multicluster/install-helm-charts.sh

# opendistro-es 설치
[root@deploy-rocky ~]# /playcecloud/playcekube/kube-packages/opendistro-es/install-helm-charts.sh

    • ingress node에 설치된 Addons 확인
      kubectl get ingress -A 명령으로 ingress node에 설치된 Addons을 확인합니다.

[root@deploy-rocky ~]# kubectl get ingress -A | grep -v "ADDRESS" | awk '{ print "curl -o /dev/null -sL -w \"%{http_code} https://"$4"\n\" --resolve "$4":443:"$5" https://"$4 }' | bash

    • 브라우저 접속을 위한 Worker 로드 밸런서 생성
      브라우저 접속을 위해 Worker 서버와 연결되는 Worker 로드 밸런서를 생성합니다. 포트는 80, 443을 생성하고 Floating IP 주소와 연결하여 인터넷 접속이 가능하도록 합니다.

    • Worker 로드 밸런서 주소와 Addons 접속 경로 등록
      브라우저 접속을 위해 Worker 로드 밸런서 주소와 Addons 접속 경로를 등록합니다. 내 컴퓨터 검색창에서 관리자 권한으로 메모장을 실행하고 Windows – System32 – drivers – etc – hosts 파일을 엽니다. hosts 파일 하단에 Worker 로드 밸런서 주소와 Addons 접속 경로를 차례대로 입력한 후 저장합니다.

    • Keycloak 브라우저 접속
      Keycloak은 애플리케이션과 서비스에 초점을 둔 Identity and Access Management에 통합 인증(SSO)을 허용하는 오픈 소스 소프트웨어 제품입니다. 

    • Grafana 브라우저 접속
      Grafana는 멀티플랫폼 분석 및 시각화 웹 애플리케이션으로 지원되는 데이터 소스에 연결하면 웹의 차트, 그래프, 경보를 제공합니다. 

    • Gitea 브라우저 접속
      Gitea는 Git를 사용하는 소프트웨어 개발 버전 제어뿐만 아니라 버그 추적, 코드 리뷰, 칸반 보드, 티켓, 위키와 같은 다른 협업 기능을 호스팅하기 위한 구축 소프트웨어 패키지입니다.

    • Harbor 브라우저 접속
      Harbor는 콘텐츠를 저장, 서명 및 검색하는 클라우드 네이티브 레지스트리 프로젝트인 오픈 소스입니다.

    • Tekton 브라우저 접속
      Tekton은 지속적 통합 및 배포(CI/CD) 시스템을 만들 수 있는 강력하면서도 유연한 Kubernetes 기반 오픈소스 프레임워크입니다. 

    • argo 브라우저 접속
      argo는 컨테이너 기반으로 빅데이터 분석, CI/CD, 머신러닝 파이프라인을 만들때 유용하게 사용할 수 있는 오픈 소스 워크플로우 솔루션입니다.

    • LINKERD 브라우저 접속
      Linkerd는 쿠버네티스의 service mesh로 코드를 변경하지 않고도 런타임 디버깅, 관찰 가능성, 안정성 및 보안을 제공하여 서비스를 더 쉽고 안전하게 실행할 수 있습니다. 아이디와 비밀번호를 입력 후 로그인하면 아래와 같은 화면을 확인할 수 있습니다.

    • Open Distro 브라우저 접속
      Open Distro for Elasticsearch는 Elasticsearch 및 Kibana에 오픈 소스 코드를 활용하며 Elasticsearch와 Kibana 외에 일련의 고급 보안, 이벤트 모니터링 및 알림, 성능 분석 및 SQL 쿼리 기능도 포함하고 있습니다.

마치며.

 

 

여기까지 OpenStack에서 Playce Kube 2.0을 설치해 보았습니다.

 

 

처음 설치하는 분도 쉽게 따라할 수 있을 만큼 상세하게 설명했는데 어떠셨나요?

 

Playce Kube 2.0은 Kubernetes를 기반으로 애플리케이션을 손쉽게 배포하고 자동화된 운영 관리를 제공하는 PaaS 솔루션입니다.

 

 

다양한 컴포넌트를 유기적으로 결합한 최적의 플랫폼으로 유연한 클라우드 네이티브 애플리케이션을 위한 환경을 제공하는 오픈소스컨설팅의 Playce Kube 2.0을 지금 만나보시기 바랍니다.

오픈소스컨설팅 Playce Cloud Team 정진이 입니다. 배우고 지식을 나누며 함께 성장하고 싶습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *