2. 설치 가이드
Playce Kube
- 1 Playce Kube
- 1.1 소개
- 1.2 아키텍처
- 1.3 설치
- 1.3.1 1. Playce Kube 설치 프로그램 개요
- 1.3.2 2. Playce Kube 설치 프로세스
- 1.3.3 3. Playce Kube 설치
- 1.3.3.1 3.1 사전 요구 사항
- 1.3.3.2 3.2 설치 준비
- 1.3.3.3 3.3 설치 패키지 다운로드
- 1.3.3.4 3.4 deploy 서버 설치
- 1.3.3.5 3.5 클러스터 설치 사전 준비 사항
- 1.3.3.6 3.6 클러스터 설치 및 구성
- 1.3.3.7 3.7 애드온 설치
- 1.3.3.7.1 helm chart 레포지토리 확인 및 설치된 리스트 확인
- 1.3.3.7.2 addons 설치 방법
- 1.4 문제 해결(FAQ)
소개
이 문서는 Playce Kube Platform 설치 및 구성 프로세스에 대해 이해를 돕고자 작성된 문서입니다.
아키텍처
설치
1. Playce Kube 설치 프로그램 개요
Playce Kube 설치 프로그램은 일련의 대상 및 종속 항목을 사용하여 클러스터를 설치 및 구성 관리 합니다.
설치 프로그램에는 달성해야 할 대상 세트가 있으며, 각 대상에는 종속 항목 세트가 있습니다.
각 대상은 고유한 종속 항목에만 관련되므로 여러 대상이 병렬로 수행되도록 설치 프로그램이 작동 할 수 있습니다.
설치 프로그램에서 생성된 주요 요소는 Deploy, Master, Worker 노드의 구성 파일 입니다.
이 세가지 구성과 올바르게 구성된 인프라를 사용하면 Playce Kube Platform 클러스터를 시작 할 수 있습니다.
Playce Kube 2.0 에서는 다음 플랫폼에서 클러스터를 설치 할 수 있습니다.
Playce Kube 클러스터에서 지원되는 플랫폼
Openstack
AWS
GCP
Azure
Baremetal
2. Playce Kube 설치 프로세스
Playce Kube 설치 시 Playce Kube 사이트에서 설치 프로그램을 다운로드 합니다. 설치 프로그램에는 Deploy 및 Kubernetes 구성 요소가 모두 들어가 있습니다
다음 다이어그램에는 설치 프로세스의 흐름을 보여줍니다.
3. Playce Kube 설치
3.1 사전 요구 사항
아래는 Playce Kube 가 지원하는 권장 사양 내용 입니다. 설치/사용 전 반드시 확인이 필요합니다.
자세한 요구 사항은 아래 에서 확인 할 수 있습니다.
방화벽 정보
방화벽 포트는 사전에 허용되어 있어야 합니다.
deploy
프로토콜 | 방향 | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 인바운드 | 8443 | 대시보드 HTTPS (현재 rancher) | Web Client |
TCP | 인바운드 | 9443 | Deploy Keycloak | 대시보드 |
TCP | 인바운드 | 5000 | Docker Registry (HTTPS) | 모든 Kubernetes 클러스터 노드 |
TCP | 인바운드 | 80 | Repository HTTP
| 모든 Kubernetes 클러스터 노드 |
TCP | 인바운드 | 443 | Repository HTTPS
| 모든 Kubernetes 클러스터 노드 |
UDP | 인바운드 | 123 | Network Time Protocol (chrony) | 모든 Kubernetes 클러스터 노드 |
TCP/UDP | 인바운드 | 53 | Domain Name System (bind9) | 모든 Kubernetes 클러스터 노드 |
TCP | 인바운드 | 2049 | Network File System | 모든 Kubernetes 클러스터 노드 |
Kubernetes master
프로토콜 | 방향 | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 인바운드 | 6443 | 쿠버네티스 API 서버 | Kubernetes 마스터 노드 |
TCP | 인바운드 | 2379-2380 | etcd 서버 클라이언트 API | Kubernetes 마스터 노드. kube-apiserver, etcd |
TCP | 인바운드 | 10250 | Kubelet API | 모든 Kubernetes 클러스터 노드. Self |
TCP | 인바운드 | 10259 | kube-scheduler | Kubernetes 마스터 노드. Self |
TCP | 인바운드 | 10257 | kube-controller-manager | Kubernetes 마스터 노드. Self |
TCP | 인바운드 | 30000-32767 | NodePort 서비스 | 모든 Kubernetes 클러스터 노드 |
TCP/UDP | 인바운드 | 53 | Domain Name System (coredns) | 모든 Kubernetes 클러스터 노드 |
TCP | 인바운드 | 179 | Calico networking (BGP) | 모든 Kubernetes 클러스터 노드 |
Kubernetes worker
프로토콜 | 방향 | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 인바운드 | 10250 | Kubelet API | 모든 Kubernetes 클러스터 노드. Self |
TCP | 인바운드 | 30000-32767 | NodePort 서비스 | 모든 Kubernetes 클러스터 노드 |
TCP/UDP | 인바운드 | 53 | Domain Name System (coredns) | 모든 Kubernetes 클러스터 노드 |
TCP | 인바운드 | 179 | Calico networking (BGP) | 모든 Kubernetes 클러스터 노드 |
Kubernetes ingress 추가 포트
프로토콜 | 방향 | 포트 범위 | 용도 | 사용 주체 |
---|---|---|---|---|
TCP | 인바운드 | 80 | Ingress HTTP 포트 | Web Client |
TCP | 인바운드 | 443 | Ingress HTTPS 포트 | Web Client |
최소/권장 사양
PlayceKube 구성을 위해 최소/권장 사양은 아래와 같습니다.
항목 | 최소 사양 | 권장 사양 |
---|---|---|
CPU | 8 Core | 8 Core |
Memory | 16 GB | 16 GB |
HDD | 200 GB 500 GB (deploy) | 200 GB 800 GB (deploy) |
지원되는 운영 체제
PlayceKube는 다음 호스트 운영 체제(OS)를 지원합니다.
CentOS 7
Rocky Linux 8
Ubuntu focal(20.xx)
Ubuntu jammy(22.xx)
네트워크
Playce Kube 에서는 다음의 주요 네트워크에 액세스 해야 합니다.
deploy 서버에는 최소 두 개의 1Gbps 네트워크 인터페이스 카드가 필요합니다. 하나는 프로비저닝 또는 컨트롤 플레인 네트워크 용 이고, 다른 하나는 외부 네트워크 용입니다. 다수의 노드를 프로비저닝 하는 경우에는 프로비저닝 네트워크 트래픽에 대비해 10Gbps 인터페이스를 사용하는 것이 좋습니다.
프로비저닝 또는 컨트롤 플레인 네트워크
deploy에서 노드에 프로비저닝 하고, Ansible 구성을 실행할 때 SSH를 통해 해당 노드에 액세스하는 데 사용하는 네트워크 입니다. 이 네트워크에서는 deploy 서버에서 master,worker 노드로의 SSH 액세스도 가능합니다.
외부 네트워크
Playce Kube Platform 레포지토리, 컨테이너 이미지 소스, DNS 서버 또는 NTP 서버와 같은 기타 서버에 액세스 할 수 있습니다. 워크스테이션 에서 정상적으로 deploy에 액세스 할 때 이 네트워크를 사용합니다.
네트워크를 계획할 때 다음 지침을 검토하십시오.
프로비저닝 네트워크에는 현재 환경 크기에 맞는 IP범위가 필요합니다.
3.2 설치 준비
Playce Kube 설치를 위해선 패키지 및 데이터 파일 다운로드 외 별도의 사전 작업이 필요치 않습니다
3.3 설치 패키지 다운로드
Playce Kube 를 설치하기 전에 사전에 패키지 파일을 다운로드 받아야 합니다.
파일 정보
파일명 | 파일 사이즈 | 다운로드 시간 | ||
Byte | Giga Byte | 12.5 MB/s | 62.5 MB/s | |
PlayceCloud.Kube.v2.0.0.tar | 20438016 | 0.02 | 0h 0m 1.5s | 0h 0m 0.3s |
PlayceCloudData.DeployBase.v2.0.0.tar.gz | 904217927 | 0.84 | 0h 1m 8.9s | 0h 0m 13.7s |
PlayceCloudData.K8SRepo.v2.0.0.tar | 2911168512 | 2.71 | 0h 3m 42.1s | 0h 0m 44.4s |
PlayceCloudData.K8SRegistry.v2.0.0.tar | 20104178688 | 18.72 | 0h 25m 33.8s | 0h 5m 6.7s |
PlayceCloudData.OSRepo.centos7.v2.0.0.tar | 34864709632 | 32.47 | 0h 44m 19.9s | 0h 8m 51.9s |
PlayceCloudData.OSRepo.rocky8.v2.0.0.tar | 15175487488 | 14.13 | 0h 19m 17.7s | 0h 3m 51.5s |
PlayceCloudData.OSRepo.focal.v2.0.0.tar | 301558744064 | 280.85 | 6h 23m 27.1s | 1h 16m 41.4s |
PlayceCloudData.OSRepo.jammy.v2.0.0.tar | 206721367040 | 192.52 | 4h 22m 51.5s | 0h 52m 34.3s |
설치 파일 정보
데이터 파일 정보
http://repo.playcecloud.io/PlayceCloudData.DeployBase.v2.0.0.tar.gz
http://repo.playcecloud.io/PlayceCloudData.K8SRepo.v2.0.0.tar
http://repo.playcecloud.io/PlayceCloudData.K8SRegistry.v2.0.0.tar
http://repo.playcecloud.io/PlayceCloudData.OSRepo.centos7.v2.0.0.tar
http://repo.playcecloud.io/PlayceCloudData.OSRepo.rocky8.v2.0.0.tar
http://repo.playcecloud.io/PlayceCloudData.OSRepo.focal.v2.0.0.tar
http://repo.playcecloud.io/PlayceCloudData.OSRepo.jammy.v2.0.0.tar
git과 Web Client로 다운로드 가능합니다. OS Repo 는 사용하는 OS 만 다운로드 받으면 됩니다
아래 상세 절차는 Ubuntu jammy OS 로 다운로드 받을 때의 샘플 절차입니다.
패키지 다운로드 상세 절차
Playce Cloud 소스 파일 디렉터리를 생성 합니다.
mkdir -p /playcecloud/srcdata
설치 파일 및 체크섬 다운로드 합니다.
설치 파일 다운로드
curl -L http://repo.playcecloud.io/PlayceCloud.Kube.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.0.tar
체크섬 파일 다운로드
curl -I http://repo.playcecloud.io/PlayceCloud.Kube.v2.0.0.tar | grep "meta-md5" | awk '{ print $2 }' | tr -d '\r' > /playcecloud/srcdata/PlayceCloud.Kube.v2.0.0.tar.MD5SUMS
데이터 파일 및 체크섬 다운로드
데이터 파일 다운로드
체크섬 파일 다운로드
다운로드 확인 및 체크섬 확인
다운로드 확인
체크섬 확인
3.4 deploy 서버 설치
root 사용자로 deploy 서버에 로그인 합니다.
deploy 서버에서 사전에 생성한 Playce Kube 패키지 파일이 있는 디렉터리 경로로 이동 합니다.
설치 파일 압축 해제 및 확인
압축 해제
설치 버전 확인
PlayceKube 설치 전 설정 파일 구성
playcecloud.conf 복사
playcecloud.conf 파일 수정
환경에 맞게 설정 값을 변경 해야 합니다. 아래 <표 3.4.5 playcecloud.conf> 참조
deploy 서버 설치
deploy 서버 설치 확인
설치 요소를 확인합니다. Playce Kube 서비스들은 docker 서비스로 동작합니다. (ntp 제외)playcekube_rancher : Playce Kube 의 Kubernetes 클러스터를 관리하는 대시보드입니다
playcelcoud_keycloak : Playce Kube 의 인증을 담당하는 시스템입니다. playcekube_rancher 용
playcecloud_nfs : Playce Kube 에서 Persistent Volume 을 사용할 수 있도록 기본적으로 제공하는 NFS 서버입니다
playcecloud_repository : Playce Kube 에서 사용하는 각종 레포지토리 서버입니다. (os repo, kuberentes binaries, helm chart, jenkins plugins)
playcecloud_bind9 : Playce Kube 에서 사용하는 DNS 서버입니다. 클러스터 설치 시 해당 정보가 자동으로 설정됩니다
playcecloud_registry : Playce Kube 에서 사용하는 컨테이너 이미지 레포
지토리 서버입니다
<표 3.4.5 playcecloud.conf>
환경 변수 | 설명 |
---|---|
PLAYCE_DIR | Playce Cloud 제품 설치 위치. 기본 /playcecloud 권장 |
PLAYCE_CONFDIR | Playce Cloud 제품의 config 디렉터리 위치 PLAYCE_DIR 상대 경로 자동 설정 |
PLAYCE_DATADIR | Playce Cloud 제품의 data 디렉터리 위치 |
PLAYCE_DOMAIN | Playce Cloud 제품에서 사용할 기본 도메인 주소 |
PLAYCE_DEPLOY | deploy 서버의 IP로 클러스터와 통신하게 될 IP주소 |
UPSTREAM_DNS | PLAYCE_DOMAIN 도메인 외의 도메인을 처리할 네임 서버 주소 |
PLAYCEOPENSTACK_VERSION | Playce Openstack 제품 버전. 수정 하지 않음 |
PLAYCEKUBE_VERSION | Playce Kube 제품 버전. 수정 하지 않음 |
RANCHER_SECRET | Rancher 에서 사용하는 API secret. 자동으로 설정 되므로 수정 하지 않음 |
<표 3.4.5 playcecloud.conf>
3.5 클러스터 설치 사전 준비 사항
기본적으로는 클러스터가 설치될 서버만 있으면 되지만 SSH 접속을 하기 위한 사전 준비가 필요할 수 있습니다
확인 사항
SSH 접속 계정이 root 인지 여부
SSH 접속 시 패스워드 인증을 사용하는지 여부
준비 사항
SSH 접속 시 root 가 아닐 경우
playcekube_kubespray.env
파일 설정에서 ANSIBLE_USER 값을 해당 계정으로 입력 하며 sudo 권한으로 root 권한 획득이 가능해야 한다.root 권한 획득 시 패스워드 입력이 필요한 경우
playcekube_kubespray.env
파일 설정에서 BECOME_PASSWD 값을 입력
SSH 접속 시 패스워드 인증을 사용할 경우
playcekube_kubespray.env
파일 설정에서 ANSIBLE_PASSWD 값을 입력
SSH 접속 시 인증키를 통한 접속일 경우
playcekube_kubespray.env
파일에서 ANSIBLE_PASSWD 값은 주석 처리기존 인증키가 있을 경우 해당 인증키를 아래의 경로 및 파일 명 으로 변경하여 사용
개인 키 : /playcecloud/playcekube/kubespray/kubespray_ssh
공개 키 : /playcecloud/playcekube/kubespray/kubespray_ssh.pub
3.6 클러스터 설치 및 구성
Playce Kube 클러스터는 .env
파일을 기본으로 환경 구성을 합니다. playcekube/bin/playcekube_kubespray.sh
를 실행하여 배포 합니다.
절차
.env
확장자의 환경 설정 파일 생성 안내
권장 생성 위치는 /playcecloud/data/kubespray/envfiles/ 이며 /playcecloud/playcekube/kubespray/kubespray-sample.env 에 샘플 파일이 있습니다각각의 설정에서 하위 매개변수 세트를 통해 사용 방법을 정의할 수 있습니다. 다음 표에는 하위 매개변수에 대한 정보가 나와 있습니다
매개변수 | 설명 |
---|---|
MODE | DEPLOY, UPGRADE, RESET=클러스터삭제, SCALE=노드추가, REMOVE-NODE=노드삭제, JUST-INVENTORY=인벤토리만생성 |
CREATE_INVENTORY | 인벤토리 파일을 생성할지 여부 |
FORCE_CREATE_INVENTORY | 강제로 인벤토리 디렉터리를 생성할지 여부 |
ANSIBLE_USER | 클러스터 노드 접속 계정 |
ANSIBLE_PASSWD | 클러스터 노드 접속 패스워드 (ssh key가 이미 복사되어 있으면 생략가능) |
BECOME_USER | root (관리자 권한이 필요합니다). ANSIBLE_USER 가 root 일 경우 불필요 |
BECOME_PASSWD | ANSIBLE_USER 가 sudo 로 root가 되기 위한 패스워드. ANSIBLE_USER 가 root 일 경우 불필요 |
CLUSTER_NAME | 클러스터 이름 |
CLUSTER_RUNTIME | 클러스터 런타임 종류 |
SERVICE_NETWORK | 서비스 네트워크 |
POD_NETWORK | 파드 네트워크 |
PRIVATE_DNS | DNS 서버 주소. 일반적으로 deploy 서버 IP |
PRIVATE_REPO | 사설 레포지토리 서버 주소. 일반적으로 repository.local.cloud |
PRIVATE_REGISTRY | 사설 컨테이너 이미지 서버 주소. 일반적으로 registry.local.cloud:5000 |
PRIVATE_NTP | NTP 서버 주소. 일반적으로 deploy 서버 IP |
MASTER_VIP | 클러스터 Kubernetes API 인증서의 SAN 정보에 추가 된다 |
MASTER_SANS | 클러스터 Kubernetes API 인증서의 SAN 정보에 추가 된다 |
INGRESS_VIP | 클러스터 인그레스 인증서의 SAN 정보에 추가 된다 |
MASTERS | 마스터 노드의 호스트 정보. <host name>:<host ip> 구분자는 , |
WORKERS | 워커 노드의 호스트 정보. <host name>:<host ip> 구분자는 , |
INGRESSES | 인그레스 노드의 호스트 네임. 노드에 Label 추가. 구분자는 , |
LOGGING | 로깅 노드의 호스트 네임. 노드에 Label 추가. 구분자는 , |
INFRA | 인프라 노드의 호스트 네임. 노드에 Label 추가. 구분자는 , |
CICD | CI/CD 노드의 호스트 네임. 노드에 Label 추가. 구분자는 , |
LIMIT_NODES | SCALE,REMOVE-NODE 시 추가/삭제 되는 호스트 네임. 구분자는 , |
중요
NTP 및 DNS 는 deploy 서버의 IP를 적용해야 원활한 사용이 가능합니다
.env
설정 파일 생성클러스터 설치
클러스터 설치 확인
클러스터가 설치 되고 metrics-server, ingress, csi-nfs driver, storage class가 생성되며 rancher에 자동으로 등록 됩니다
rancher 에서 Kubernetes 클러스터를 관리하거나 deploy 서버에 kubernetes context가 자동 생성되어 kubectl 명령으로도 클러스터를 관리 할 수 있습니다
3.7 애드온 설치
지원 애드온 리스트
metrics-server : kubectl top 커맨드 및 HPA 사용시에 사용 되는 메트릭 수집서버 (기본 설치)
ingress-nginx : nginx 로 구성되어 있는 ingress 서버 (기본 설치)
csi-driver-nfs : nfs 용 csi 드라이버 (기본 설치)
keycloak : 쿠버네티스 OpenId 연결용 인증 서버
oauth2-proxy : 인증 제공자와 어플리케이션을 연결시켜주는 프록시 서버
gatekeeper : 쿠버네티스 환경에서 정책 제어를 할 수 있도록 특화된 솔루션. OPA 엔진 사용
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 지원 도구
helm chart 레포지토리 확인 및 설치된 리스트 확인
Playce Kube 에서는 사용할 수 있는 Helm chart 및 관련 이미지 레지스트리를 기본 제공 함으로써 쉽게 설치할 수 있도록 지원 합니다
helm chart 레포지토리를 확인합니다
결과 예제
helm chart 설치를 확인합니다.
결과 예제
addons 설치 방법
Playce Kube 에서 제공되는 Helm chart 는 Helm 에서 제공하는 cli 로 쉽게 설치 할 수 있습니다
또한, 미리 준비된 설치 스크립트로 설치된 클러스터에 더 적절한 설정으로 설치할 수 있도록 지원합니다
설치 리스트 확인
설치 방법 및 순서
각 애드온 들 에 대한 인증을 적용하기 위해 keycloak 설치가 사전 진행 되어야 합니다.
keycloak 설치
velero (백업) 설치
모니터링 설치
로깅 설치
gitea 설치
harbor 설치
tekton-pipeline 설치
argo-cd 설치
linkerd2 (서비스매시) 설치
문제 해결(FAQ)
https://github.com/playcecloud/playcekube/issues