안녕하세요! 오픈소스컨설팅 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 권한으로 비밀번호를 변경할 경우 새로운 비밀번호와 새로운 비밀번호 재입력을 하면 되지만 일반 계정에서 비밀번호를 변경할 경우 일반 계정의 비밀번호를 알고 있어야 합니다.
- Bastion 서버의 Root 패스워드 변경
# 패스워드 변경
[root@bastion-rocky ~]# passwd
-
- Private Key File 전송
Private Key File이 보관되어 있는 Windows에서 명령 프롬프트를 통해 외부 인터넷망이 연결되어 있는 Bastion 서버의 .ssh 폴더로 Private Key File을 전송합니다.
- Private Key File 전송
# scp [옵션] [파일명] [원격지 계정]@[원격지 IP]:[파일이 저장될 경로]
-
- Private Key File 전송 확인
Bastion 서버에서 ls -al 명령어로 .ssh 폴더로 Private Key File이 전송되었는지 확인합니다.
- Private Key File 전송 확인
# Private Key File 전송 확인
[root@bastion-rocky ~]# ls -al .ssh
ls 옵션 | 의미 |
---|---|
-a | .(점)을 포함한 경로 안의 모든 파일과 디렉토리 표시 |
-l | 지정한 디렉토리의 내용을 자세히 출력 |
-
- Private Key File 권한 변경
SSH Private Key는 중요한 정보이기 때에 소유자 외 다른 이가 읽을 수 있으면 에러가 생기므로 소유자만 읽고 쓸 수 있도록 권한을 변경합니다.
- Private Key File 권한 변경
# 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 파일 설정 변경
# 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 옵션은 디렉토리를 생성할 때 상위(부모) 디렉토리가 없을 경우 함께 생성합니다.
- Playce Cloud 디렉토리 생성
[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 서버에 연결합니다.
- 볼륨 생성과 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 옵션은 디렉토리를 생성할 때 상위(부모) 디렉토리가 없을 경우 함께 생성합니다.
- Playce Cloud 디렉토리 생성
# 디렉토리 생성
[root@deploy-rocky ~]# mkdir -p /playcecloud
-
- Deploy 서버에 마운트
위에서 생성한 /dev/vdb1 디스크를 /playcecloud와 mount 명령어를 사용해 연결합니다. 그 후 df 명령어로 mount가 되었는지 확인합니다.
- Deploy 서버에 마운트
# 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 옵션을 사용하여 폴더 전체를 전송합니다.
- Bastion 서버에서 Deploy 서버로 설치 파일, 데이터 파일, 체크섬 전송
# 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 설정
# 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 설치를 진행합니다. 설치하는데 약간의 시간이 소요됩니다.
- Deploy 서버에 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 서비스가 설치되었는지 확인합니다.
- Playce Kube 서비스 설치 확인
# 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 파일 삭제 (백업)
# 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 파일에 붙여넣습니다.
- 개인키와 공개키를 kubespray_ssh와 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, 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 역시 설정에 맞게 변경합니다.
- k8s.env 설정 파일 생성
# 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에서 백업 복원 시 사용하는 저장소
-
- 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 지원 도구
-
- argo-cd : CD 도구
-
- Addons List
-
- Addons 확인
Addons는 Kubenetes 클러스터의 기능을 구현 및 확장하는 역할을 합니다. helm search repo 명령과 ls -l /playcecloud/playcekube/kube-packages 명령으로 설치할 Addons 리스트와 비교 확인합니다.
- 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 설치 확인
# helm chart 설치 확인
[root@deploy-rocky ~]# helm list -A
-
- Addons 설치 리스트 확인
설치할 Addons 리스트를 확인합니다.
- Addons 설치 리스트 확인
# Addons 설치 리스트 확인
[root@deploy-rocky ~]# ls -l /playcecloud/playcekube/kube-packages/*/install*.sh
-
- Addons 설치
가장 먼저 keycloak을 설치합니다. keycloak 설치가 선행되어야 oauth2-proxy가 설치됩니다.
- Addons 설치
# 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을 확인합니다.
- 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 로드 밸런서 생성
-
- Worker 로드 밸런서 주소와 Addons 접속 경로 등록
브라우저 접속을 위해 Worker 로드 밸런서 주소와 Addons 접속 경로를 등록합니다. 내 컴퓨터 검색창에서 관리자 권한으로 메모장을 실행하고 Windows – System32 – drivers – etc – hosts 파일을 엽니다. hosts 파일 하단에 Worker 로드 밸런서 주소와 Addons 접속 경로를 차례대로 입력한 후 저장합니다.
- Worker 로드 밸런서 주소와 Addons 접속 경로 등록
-
- Keycloak 브라우저 접속
Keycloak은 애플리케이션과 서비스에 초점을 둔 Identity and Access Management에 통합 인증(SSO)을 허용하는 오픈 소스 소프트웨어 제품입니다.
- Keycloak 브라우저 접속
-
- Grafana 브라우저 접속
Grafana는 멀티플랫폼 분석 및 시각화 웹 애플리케이션으로 지원되는 데이터 소스에 연결하면 웹의 차트, 그래프, 경보를 제공합니다.
- Grafana 브라우저 접속
-
- Gitea 브라우저 접속
Gitea는 Git를 사용하는 소프트웨어 개발 버전 제어뿐만 아니라 버그 추적, 코드 리뷰, 칸반 보드, 티켓, 위키와 같은 다른 협업 기능을 호스팅하기 위한 구축 소프트웨어 패키지입니다.
- Gitea 브라우저 접속
-
- Harbor 브라우저 접속
Harbor는 콘텐츠를 저장, 서명 및 검색하는 클라우드 네이티브 레지스트리 프로젝트인 오픈 소스입니다.
- Harbor 브라우저 접속
-
- Tekton 브라우저 접속
Tekton은 지속적 통합 및 배포(CI/CD) 시스템을 만들 수 있는 강력하면서도 유연한 Kubernetes 기반 오픈소스 프레임워크입니다.
- Tekton 브라우저 접속
-
- argo 브라우저 접속
argo는 컨테이너 기반으로 빅데이터 분석, CI/CD, 머신러닝 파이프라인을 만들때 유용하게 사용할 수 있는 오픈 소스 워크플로우 솔루션입니다.
- argo 브라우저 접속
-
- LINKERD 브라우저 접속
Linkerd는 쿠버네티스의 service mesh로 코드를 변경하지 않고도 런타임 디버깅, 관찰 가능성, 안정성 및 보안을 제공하여 서비스를 더 쉽고 안전하게 실행할 수 있습니다. 아이디와 비밀번호를 입력 후 로그인하면 아래와 같은 화면을 확인할 수 있습니다.
- LINKERD 브라우저 접속
-
- Open Distro 브라우저 접속
Open Distro for Elasticsearch는 Elasticsearch 및 Kibana에 오픈 소스 코드를 활용하며 Elasticsearch와 Kibana 외에 일련의 고급 보안, 이벤트 모니터링 및 알림, 성능 분석 및 SQL 쿼리 기능도 포함하고 있습니다.
- Open Distro 브라우저 접속
마치며.
여기까지 OpenStack에서 Playce Kube 2.0을 설치해 보았습니다.
처음 설치하는 분도 쉽게 따라할 수 있을 만큼 상세하게 설명했는데 어떠셨나요?
Playce Kube 2.0은 Kubernetes를 기반으로 애플리케이션을 손쉽게 배포하고 자동화된 운영 관리를 제공하는 PaaS 솔루션입니다.
다양한 컴포넌트를 유기적으로 결합한 최적의 플랫폼으로 유연한 클라우드 네이티브 애플리케이션을 위한 환경을 제공하는 오픈소스컨설팅의 Playce Kube 2.0을 지금 만나보시기 바랍니다.
오픈소스컨설팅 Playce Cloud Team 정진이 입니다. 배우고 지식을 나누며 함께 성장하고 싶습니다.
Search
Recent Post
Atlassian Rovo 정식 출시 – 새로운 팀원을
- 2024년 11월 13일
- 1 min read
[Team ’24 Europe] 다음 시대의 Teamwork은?
- 2024년 10월 29일
- 2 min read
Jira, Confluence Cloud Rest API 제대로 사용하기
- 2024년 10월 24일
- 5 min read
VMware 시장 변화에 대응할 방법은? 정답은 여기에!
- 2024년 09월 30일
- 1 min read
dangerouslySetInnerHTML을 아시나요? – 프론트엔드에서의 XSS (교차 스크립트
- 2024년 09월 27일
- 2 min read
Comments
Archives
- November 2024
- October 2024
- September 2024
- August 2024
- July 2024
- June 2024
- May 2024
- April 2024
- March 2024
- February 2024
- January 2024
- December 2023
- November 2023
- October 2023
- September 2023
- August 2023
- July 2023
- June 2023
- May 2023
- April 2023
- March 2023
- February 2023
- January 2023
- December 2022
- November 2022
- October 2022
- September 2022
- August 2022
- July 2022
- June 2022
- May 2022
- April 2022
- March 2022
- February 2022
- January 2022
- December 2021
- November 2021
- October 2021
- September 2021
- August 2021
- July 2021
- May 2021
- March 2021
- February 2021
- January 2021
- November 2020
- October 2020
- September 2020
- August 2020
- May 2020
- April 2020
- March 2020
- February 2020
- January 2020
- December 2019
- November 2019
- October 2019
- September 2019
- August 2019
- July 2019
- June 2019
- May 2019
- April 2019
- February 2019
- January 2019
- December 2018
- November 2018
- September 2018
- August 2018
- July 2018
- February 2017
- January 2017
- November 2014
- March 2014