Document toolboxDocument toolbox

2. 설치 가이드

Playce Kube

 

 


 

소개

이 문서는 Playce Kube Platform 설치 및 구성 프로세스에 대해 이해를 돕고자 작성된 문서입니다.

 

아키텍처

 

 

 

설치

1. Playce Kube 설치 프로그램 개요

Playce Kube 설치 프로그램은 일련의 대상 및 종속 항목을 사용하여 클러스터를 설치 및 구성 관리 합니다.

설치 프로그램에는 달성해야 할 대상 세트가 있으며, 각 대상에는 종속 항목 세트가 있습니다.

각 대상은 고유한 종속 항목에만 관련되므로 여러 대상이 병렬로 수행되도록 설치 프로그램이 작동 할 수 있습니다.

 

설치 프로그램에서 생성된 주요 요소는 Deploy, Master, Worker 노드의 구성 파일 입니다.

이 세가지 구성과 올바르게 구성된 인프라를 사용하면 Playce Kube Platform 클러스터를 시작 할 수 있습니다.

 

Playce Kube 2.0 에서는 다음 플랫폼에서 클러스터를 설치 할 수 있습니다.

  1. 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

  • OS Repository

  • Kubernetes Repository

  • Helm Chart Repository

  • Jenkins Plugins Download

모든 Kubernetes 클러스터 노드

TCP

인바운드

443

Repository HTTPS

  • OS Repository

  • Kubernetes Repository

  • Helm Chart Repository

  • Jenkins Plugins Download

모든 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

 

git과 Web Client로 다운로드 가능합니다. OS Repo 는 사용하는 OS 만 다운로드 받으면 됩니다

아래 상세 절차는 Ubuntu jammy OS 로 다운로드 받을 때의 샘플 절차입니다.

 

패키지 다운로드 상세 절차

  1. Playce Cloud 소스 파일 디렉터리를 생성 합니다.

    mkdir -p /playcecloud/srcdata

     

  2. 설치 파일 및 체크섬 다운로드 합니다.

    • 설치 파일 다운로드

      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. 다운로드 확인 및 체크섬 확인

    1. 다운로드 확인

    2. 체크섬 확인

 

3.4 deploy 서버 설치

  1. root 사용자로 deploy 서버에 로그인 합니다.

  2. deploy 서버에서 사전에 생성한 Playce Kube 패키지 파일이 있는 디렉터리 경로로 이동 합니다.

     

  3. 설치 파일 압축 해제 및 확인

    • 압축 해제

       

    • 설치 버전 확인

       

  4. PlayceKube 설치 전 설정 파일 구성

    • playcecloud.conf 복사

       

    • playcecloud.conf 파일 수정
      환경에 맞게 설정 값을 변경 해야 합니다. 아래 <표 3.4.5 playcecloud.conf> 참조

       

  5. deploy 서버 설치

     

  6. 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_DIR 상대 경로 자동 설정

PLAYCE_DOMAIN

Playce Cloud 제품에서 사용할 기본 도메인 주소
Playce Kube 에서는 <서비스명>.<클러스터명>.<PLAYCE_DOMAIN> 주소로 인그레스 도메인 설정이 자동으로 됩니다

PLAYCE_DEPLOY

deploy 서버의 IP로 클러스터와 통신하게 될 IP주소
자동으로 젤 처음 나오는 장치의 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 접속을 하기 위한 사전 준비가 필요할 수 있습니다

 

  1. 확인 사항

    • SSH 접속 계정이 root 인지 여부

    • SSH 접속 시 패스워드 인증을 사용하는지 여부

  2. 준비 사항

    • 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를 적용해야 원활한 사용이 가능합니다

 

  1. .env 설정 파일 생성

     

  2. 클러스터 설치

     

  3. 클러스터 설치 확인

    • 클러스터가 설치 되고 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 및 관련 이미지 레지스트리를 기본 제공 함으로써 쉽게 설치할 수 있도록 지원 합니다

 

  1. helm chart 레포지토리를 확인합니다

    결과 예제

  2. helm chart 설치를 확인합니다.

    결과 예제

     

addons 설치 방법

Playce Kube 에서 제공되는 Helm chart 는 Helm 에서 제공하는 cli 로 쉽게 설치 할 수 있습니다
또한, 미리 준비된 설치 스크립트로 설치된 클러스터에 더 적절한 설정으로 설치할 수 있도록 지원합니다

  1. 설치 리스트 확인

     

  2. 설치 방법 및 순서

    • 각 애드온 들 에 대한 인증을 적용하기 위해 keycloak 설치가 사전 진행 되어야 합니다.

    • keycloak 설치

       

    • velero (백업) 설치

       

    • 모니터링 설치

       

    • 로깅 설치

       

    • gitea 설치

       

    • harbor 설치

       

    • tekton-pipeline 설치

       

    • argo-cd 설치

       

    • linkerd2 (서비스매시) 설치

 

문제 해결(FAQ)

https://github.com/playcecloud/playcekube/issues