2. 설치 가이드

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. 데이터 파일 및 체크섬 다운로드

    • 데이터 파일 다운로드

      curl -L http://repo.playcecloud.io/PlayceCloudData.DeployBase.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.0.tar curl -L http://repo.playcecloud.io/PlayceCloudData.K8SRegistry.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.0.tar curl -L http://repo.playcecloud.io/PlayceCloudData.K8SRepo.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.0.tar curl -L http://repo.playcecloud.io/PlayceCloudData.OSRepo.jammy.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.OSRepo.jammy.v2.0.0.tar
    • 체크섬 파일 다운로드

      curl -I http://repo.playcecloud.io/PlayceCloudData.DeployBase.v2.0.0.tar | grep "meta-md5" | awk '{ print $2 }' | tr -d '\r' > /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.0.tar.MD5SUMS curl -I http://repo.playcecloud.io/PlayceCloudData.K8SRegistry.v2.0.0.tar | grep "meta-md5" | awk '{ print $2 }' | tr -d '\r' > /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.0.tar.MD5SUMS curl -I http://repo.playcecloud.io/PlayceCloudData.K8SRepo.v2.0.0.tar | grep "meta-md5" | awk '{ print $2 }' | tr -d '\r' > /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.0.tar.MD5SUMS curl -I http://repo.playcecloud.io/PlayceCloudData.OSRepo.jammy.v2.0.0.tar | grep "meta-md5" | awk '{ print $2 }' | tr -d '\r' > /playcecloud/srcdata/PlayceCloudData.OSRepo.jammy.v2.0.0.tar.MD5SUMS

       

  4. 다운로드 확인 및 체크섬 확인

    1. 다운로드 확인

      # ls -l total 568613720 -rw-r--r-- 1 root root 20438016 Jan 27 21:57 PlayceCloud.Kube.v2.0.0.tar -rw-r--r-- 1 root root 62 Jan 27 21:57 PlayceCloud.Kube.v2.0.0.tar.MD5SUMS -rw------- 1 root root 904217927 Jan 27 22:02 PlayceCloudData.DeployBase.v2.0.0.tar.gz -rw-r--r-- 1 root root 96 Jan 27 22:20 PlayceCloudData.DeployBase.v2.0.0.tar.gz.MD5SUMS -rw-r--r-- 1 root root 20104178688 Jan 27 22:29 PlayceCloudData.K8SRegistry.v2.0.0.tar -rw-r--r-- 1 root root 73 Jan 27 22:33 PlayceCloudData.K8SRegistry.v2.0.0.tar.MD5SUMS -rw-r--r-- 1 root root 2911168512 Jan 27 21:57 PlayceCloudData.K8SRepo.v2.0.0.tar -rw-r--r-- 1 root root 69 Jan 27 21:57 PlayceCloudData.K8SRepo.v2.0.0.tar.MD5SUMS -rw-r--r-- 1 root root 206721367040 Jan 27 19:53 PlayceCloudData.OSRepo.jammy.v2.0.0.tar -rw-r--r-- 1 root root 74 Jan 27 20:26 PlayceCloudData.OSRepo.jammy.v2.0.0.tar.MD5SUMS
    2. 체크섬 확인

      # echo $(cat PlayceCloud.Kube.v2.0.0.tar.MD5SUMS) *PlayceCloud.Kube.v2.0.0.tar | md5sum --check PlayceCloud.Kube.v2.0.0.tar: OK # echo $(cat PlayceCloudData.DeployBase.v2.0.0.tar.MD5SUMS) *PlayceCloudData.DeployBase.v2.0.0.tar | md5sum --check PlayceCloudData.DeployBase.v2.0.0.tar: OK # echo $(cat PlayceCloudData.K8SRegistry.v2.0.0.tar.MD5SUMS) *PlayceCloudData.K8SRegistry.v2.0.0.tar | md5sum --check PlayceCloudData.K8SRegistry.v2.0.0.tar: OK # echo $(cat PlayceCloudData.K8SRepo.v2.0.0.tar.MD5SUMS) *PlayceCloudData.K8SRepo.v2.0.0.tar | md5sum --check PlayceCloudData.K8SRepo.v2.0.0.tar: OK # echo $(cat PlayceCloudData.OSRepo.jammy.v2.0.0.tar.MD5SUMS) *PlayceCloudData.OSRepo.jammy.v2.0.0.tar | md5sum --check PlayceCloudData.OSRepo.jammy.v2.0.0.tar: OK

 

3.4 deploy 서버 설치

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

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

    cd /playcecloud/srcdata/

     

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

    • 압축 해제

      tar xpf /playcecloud/srcdata/PlayceCloud.Kube.v2.0.0.tar -C /playcecloud/

       

    • 설치 버전 확인

      # cat /playcecloud/playcekube/release.txt name: Playce Kube version: v2.0.0 release-date: 2023-01-29

       

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

    • playcecloud.conf 복사

      cp /playcecloud/playcekube/playcecloud.conf.example /playcecloud/playcecloud.conf

       

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

      # PlayceCloud config env 파일 샘플 파일 설명입니다. ############################## # Playce 옵션 ############################## # 설치될 디렉터리 경로 PLAYCE_DIR=/playcecloud # 설정파일이 있는 경로 PLAYCE_CONFDIR=${PLAYCE_DIR}/conf # 데이터파일이 있는 경로 PLAYCE_DATADIR=${PLAYCE_DIR}/data # 도메인 이름 설정 PLAYCE_DOMAIN=playce.cloud # Deploy IP # PLAYCE_DEPLOY=$(ip -4 -o a | grep -Ev "\slo\s" | head -n 1 | awk '{ print $4 }' | sed 's/\(.*\)\/.*/\1/') PLAYCE_DEPLOY= 127.0.0.1 UPSTREAM_DNS=8.8.8.8 PLAYCEOPENSTACK_VERSION=v1.0 PLAYCEKUBE_VERSION=v2.0 RANCHER_SECRET=

       

  5. deploy 서버 설치

    /playcecloud/playcekube/bin/install_playcekube

     

  6. deploy 서버 설치 확인
    설치 요소를 확인합니다. Playce Kube 서비스들은 docker 서비스로 동작합니다. (ntp 제외)

    # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ba87ab96aeb rancher/rancher:v2.6.6 "entrypoint.sh" 3 minutes ago Up About a minute 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp playcekube_rancher b1cf173b02f2 quay.io/keycloak/keycloak:18.0.2 "/opt/keycloak/bin/k…" 3 minutes ago Up 3 minutes 8080/tcp, 8443/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp playcecloud_keycloak e53628899cb3 itsthenetwork/nfs-server-alpine:12 "/usr/bin/nfsd.sh" 3 minutes ago Up 3 minutes 0.0.0.0:2049->2049/tcp, :::2049->2049/tcp playcecloud_nfs 7004a1f0b8ad nginx:1.20.2 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp playcecloud_repository f1a486b46d61 ubuntu/bind9:9.16-21.10_edge "docker-entrypoint.sh" 3 minutes ago Up 3 minutes 0.0.0.0:53->53/tcp, 0.0.0.0:53->53/udp, :::53->53/tcp, :::53->53/udp, 953/tcp playcecloud_bind9 86a0c2d9f060 registry:2.7.1 "/entrypoint.sh /etc…" 3 minutes ago Up 3 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp playcecloud_registry

     

    • 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 에서 사용하는 컨테이너 이미지 레포

    •