Playce Kube Installation
Playce Kube를 구축하기 위해 필요한 성능은(전체 설치의 경우) 최소 8기의 Barmetal / VM을 포함하는 서버 8기(4Core 16GB이상, 300GB Storage(deploy 서버의 경우 최소 500GB 이상, 1TB 추천)와 연결가능한 네트워크 환경, CSI로 사용할 NAS(Deploy서버에서 NFS 사용가능) 등이 필요한데요.
패키지는 오픈소스로 구성되어 있어, git에 공개 되어 있고, 그 경로는 Playce Kube github입니다. 설치는 간단하게 이루어지며, 인터넷이 되지 않는 환경을 위한 OS필수 Repository와 Container Images와 기타 Utillity를 다운로드 한뒤 이를 이용해 Deploy서버를 구축후, Kubespray를 이용해 Kubernetes의 구축을 하게 됩니다. Kubernetes를 이용해 사용하게될 서비스들은 helm을 이용하여 구축 및 연동 되게 됩니다. 시간은 Repository의 다운로드에 따라 많이 달라집니다.

서버 준비
서버는 노트북 2기로 구성 예정입니다. 다만 메모리 용량이 조금 되는 노트북으로 준비를 했는데요. 이제는 쓰지 않는 구형 노트북 2기로 어떻게 6개 서버를 만들기 위해서 libvirt를 이용할 예정입니다. 생성하게 되는 VM Server는 Deploy 서버 1ea, Control-plane 3ea, Woker 2ea입니다. 노트북은 8core 32Gb의 용량이고 deploy, control-plane은 2core 6GB, worker는 4core 16GB로 구성합니다. 구성된 총 용량은 CPU 16core, Memory 64GB입니다. (보유한 장비의 성능에 따라 조금씩 조정하면 되겠습니다.)
네트워크는 무선으로 연결된 네트워크( 공유기(Router)를 이용한 Network - External )와 유선으로 연결된 네트워크( hub를 이용한 Network - Internal ) 입니다. 공유기는 당연히 인터넷이 되는 Line입니다.
만약 AWS나 보안이 뛰어난 환경이라면, 방화벽설정을 추가로 해주어야 합니다. 방화벽 Port정보
OS는 Ubuntu 22.04으로 설치했고, 각 서버는 ssh-key를 공유하게 설정하여 root계정에서 자유롭게 이동이 가능합니다. (Test용으로 한 구성이라 상용에서는 별도 계정을 생성해서 sudo권한으로 진행하시길 바라겠습니다.)
저는 사실 집에 NAS가 있지만, 노트북 1기에 용량이 충분해서 해당 노트북을 NFS구성하여 공용 스토리지로 사용하겠습니다.
VM환경의 구축 상세 설정은 ___에 남기겠습니다.

서버 정보는 IP Address우선으로 정리 하면 아래의 표와 같은데요. 동일하게 구성하시거나 구축 환경에 맞추어 수정하여 구성하시면 되겠습니다. 2core 6GB, worker는 4core 16GB
구분 | IP Address | CPU | Memory | Storage |
Deploy | Ext: 10.1.1.11/16 Int: 10.0.0.11/24 GW: 10.1.1.254 DNS: 8.8.8.8 |
2core | 6GB | 1000GB |
Control-Plane | Ext: 10.1.1.21 - 23/16 Int: 10.0.0.21 - 23/24 GW: 10.1.0.1 DNS: 8.8.8.8 |
2core | 6GB | 50GB |
Worker | Ext: 10.1.1.31 - 32/16 Int: 10.0.0.31 - 32/24 GW: 10.1.0.1 DNS: 8.8.8.8 |
4core | 16GB | 50GB |
Playce Kube 구축 준비 ( Deploy 서버 구축 )
서버와 네트워크가 잘 구축되었고, 서버의 접속등이 password없이 잘 된다면 정상적으로 준비가 되었는데요. 만약 대규모 서버 구성시에는 각 서버별로 Ping과 ssh접속은 전부 해보셔야 합니다. 여기까지 준비가 되면 별도의 어려움 없이 구축이 됩니다. 이제 Deploy서버를 준비하도록 하겠습니다.
Playce Kube를 구축 할 준비가 끝나면, 구축을 위한 파일들을 다운로드 합니다. Playce Kube는 인터넷이 되지 않는 Enterprise환경을 기본으로 하므로, Repository와 컨테이너 이미지 등을 모두 제공합니다. git과 웹저장소를 이용해 파일들을 다운로드를 하게 됩니다. 다운로드된 파일은 다음과 같습니다. 설치파일 경로
- OS Repository
- Container Images
- Registry
- Deploy Installer
- Playce Kube Installer
OS별 Repository가 달라 필요한 파일들이 다르지만 제공하는 Repository의 경로는 다음과 같습니다. 용량이 상당하므로 디스크에 용량을 충분히 확보하여야 합니다.
*OS Repository를 포함하고 있어 상당히 큰 용량을 다운로드 합니다.
- Playce Kube Installer 파일
https://repo.playcecloud.io/PlayceCloud.Kube.v2.0.0.tar
- Deploy Installer
https://repo.playcecloud.io/PlayceCloudData.DeployBase.v2.0.0.tar.gz
- Container Images
https://repo.playcecloud.io/PlayceCloudData.K8SRepo.v2.0.0.tar
- Registry
https://repo.playcecloud.io/PlayceCloudData.K8SRegistry.v2.0.0.tar
- OS Repository
CentOS: https://repo.playcecloud.io/PlayceCloudData.OSRepo.centos7.v2.0.0.tar
Rocky Linux: https://repo.playcecloud.io/PlayceCloudData.OSRepo.rocky8.v2.0.0.tar
Ubuntu 20.04: https://repo.playcecloud.io/PlayceCloudData.OSRepo.focal.v2.0.0.tar
Ubuntu 22.04: https://s3.ap-northeast-2.amazonaws.com/repo.playcecloud.io/PlayceCloudData.OSRepo.jammy.v2.0.0.tar
Source File의 저장경로는 /playcecloud/srcdata 입니다.
### Make Directory
mkdir -p /playcecloud/srcdata
### Source Download
curl -L -k https://repo.playcecloud.io/PlayceCloud.Kube.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloud.Kube.v2.0.0.tar
curl -L -k https://repo.playcecloud.io/PlayceCloudData.DeployBase.v2.0.0.tar.gz -o /playcecloud/srcdata/PlayceCloudData.DeployBase.v2.0.0.tar
curl -L -k https://repo.playcecloud.io/PlayceCloudData.K8SRegistry.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRegistry.v2.0.0.tar
curl -L -k https://repo.playcecloud.io/PlayceCloudData.K8SRepo.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.K8SRepo.v2.0.0.tar
curl -L -k https://s3.ap-northeast-2.amazonaws.com/repo.playcecloud.io/PlayceCloudData.OSRepo.jammy.v2.0.0.tar -o /playcecloud/srcdata/PlayceCloudData.OSRepo.jammy.v2.0.0.tar
### Source untar
tar xpf /playcecloud/srcdata/PlayceCloud.Kube.v2.0.0.tar -C /playcecloud/
Deploy 서버의 구성을 하기 위해 설정 파일을 확인합니다. 이중 'PLAYCE_DEPLOY'의 설정은 다른 서버와 통신하기 위한 Deploy 서버의 IP Address를 지정합니다. ( shell Script에서 지정되지 않을시 직접 IP Address 설정 )
### 설정 파일 복사
cp /playcecloud/playcekube/playcecloud.conf.example /playcecloud/playcecloud.conf
### 설정 파일 정보 cat /playcecloud/playcecloud.conf
##############################
# Playce 옵션
##############################
# 설치될 디렉터리 경로
PLAYCE_DIR=/playcecloud
# 설정파일이 있는 경로
PLAYCE_CONFDIR=${PLAYCE_DIR}/conf
# 데이터파일이 있는 경로
PLAYCE_DATADIR=${PLAYCE_DIR}/data
# 도메인 이름 설정
PLAYCE_DOMAIN=playce.cloud
# Deploy IP - 외부 연결용으로 구성된 IP Address 입니다. 스크립트로 안될경우 수동 입력
# PLAYCE_DEPLOY=$(ip -4 -o a | grep -Ev "\slo\s" | head -n 1 | awk '{ print $4 }' | sed 's/\(.*\)\/.*/\1/')
PLAYCE_DEPLOY=10.1.1.11
UPSTREAM_DNS=8.8.8.8
PLAYCEOPENSTACK_VERSION=v1.0
PLAYCEKUBE_VERSION=v2.0
RANCHER_SECRET=
Deploy 서버 구축 준비가 되면 아래의 명령어를 이용해 Deploy 서버를 구성합니다. 대용량의 파일등을 압축 해제하고 Docker를 이용해 이미지등을 저장하는 과정을 거치게 되고, 서버의 성능에 따라 구축 시간이 달라집니다. (다운로드 받은 tar파일은 약 300GB이상으로 해당 파일의 압축해제 시간 이상 소요 됩니다.)
### Deploy Server 구축
/playcecloud/playcekube/bin/install_playcekube
실행을 하게 되면 아래의 표처럼 프로그레스 상황이 나오게 됩니다. (압축 해제 과정에서 시간이 오래 걸리긴하지만 다른 쉘을 열어서, ps혹은 top으로 확인시 정상적으로 움직이고 있음을 확인 할 수 있습니다.)
# ip -4 -o a | grep -Ev "\slo\s" | head -n 1 | awk '{ print $4 }' | sed 's/\(.*\)\/.*/\1/' 192.168.11.237 root@deploy:/playcecloud# /playcecloud/playcekube/bin/install_playcekube [INFO] ######## PlayceCloud data PlayceCloudData.OSRepo.jammy.v2.0.0.tar untar start ######## Estimated: [==================================================] Progess: [tar: This does not look like a tar archive tar: Skipping to next header tar: Exiting with failure status due to previous errors ] [INFO] ######## PlayceCloud data PlayceCloudData.OSRepo.jammy.v2.0.0.tar untar end ######## [INFO] ######## PlayceCloud data PlayceCloudData.K8SRepo.v2.0.0.tar untar start ######## Estimated: [==================================================] Progess: [>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> |
![]() |
정상적으로 구축이 완료 되면 'docker ps' 로 구축된 내역을 확인 할 수 있습니다.
### docker container 프로세서 확인
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 에서 사용하는 컨테이너 이미지 레포지토리 서버입니다
클러스터 설치 env파일 수정
Deploy 서버가 구성되면, Kubernetes의 설정과 Server의 정보를 입력하게 됩니다. 입력한 정보를 이용해 Kubernetes배포 툴인 Kubespray를 이용해 Kubernetes를 구축하게 됩니다. Kubespary의 설정 정보는 상당히 많지만, 최적의 구성으로 준비되어 있고, 각 설정별로 자유롭게 설정할수있습니다.
### 설정을 위한 Env파일 복사
cp -rp /playcecloud/playcekube/kubespray/kubespray-sample.env /playcecloud/data/kubespray/envfiles/playcekube_kubespray.env
### 설정 파일 정보 cat /playcecloud/data/kubespray/envfiles/playcekube_kubespray.env
# playcekube_kubespray
# env file
#MODE [DEPLOY, UPGRADE, RESET, SCALE, REMOVE-NODE, JUST-INVENTORY]
MODE=DEPLOY
# inventory config
CREATE_INVENTORY=true
FORCE_CREATE_INVENTORY=true
ANSIBLE_USER=root
ANSIBLE_PASSWD=vmffpdltm
#BECOME_USER=rocky
#BECOME_PASSWD=
# cluster config
CLUSTER_NAME=k8s
#CLUSTER_RUNTIME=containerd
#SERVICE_NETWORK=10.233.0.0/18
#POD_NETWORK=10.233.64.0/18
#KUBERNETES_VERSION=v1.22.5
# network config
#NETWORK_MODE [public,private]
NETWORK_MODE=private
PRIVATE_DNS=10.0.0.11
PRIVATE_REPO=repository.local.cloud
PRIVATE_REGISTRY=registry.local.cloud:5000
PRIVATE_NTP=10.0.0.11
#PROXY_SERVER=10.0.0.11:3128
# vip config
#MASTER_VIP=192.168.10.101
#MASTER_SANS=master.test.com,master-api.local.cloud
#INGRESS_VIP=192.168.10.102
# hosts config
MASTERS=playcekube-master01:10.0.0.21,playcekube-master02:10.0.0.22,playcekube-master03:10.0.0.23
WORKERS=playcekube-worker01:10.0.0.31,playcekube-worker02:10.0.0.32
INGRESSES=playcekube-worker01,playcekube-worker02
#LOGGING=
#INFRA=
#CICD=
#LIMIT_NODES=
각 설정별로 자세히 정보를 나열한다면, 다음과 같습니다.
변수 | 설명 |
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 시 추가/삭제 되는 호스트 네임. 구분자는 , |
Kubernetes 설치
### 인증서 변경
cp -rf ~/.ssh/id_rsa /playcecloud/playcekube/kubespray/kubespray_ssh
cp -rf ~/.ssh/id_rsa.pub /playcecloud/playcekube/kubespray/kubespray_ssh.pub
## 인증서는 저와 동일하게 구축하셨다면 id_rsa.pub이 없을 수 있습니다. ssh-keygen으로 생성 혹은 접속계정의 것을 사용하셔야 합니다.
## ex: cp -rf /home/cloud/id_rsa.pub /playcecloud/playcekube/kubespray/kubespray_ssh.pub
## ex: cp -rf /home/cloud/authorized_keys /playcecloud/playcekube/kubespray/kubespray_ssh.pub
### Kubernetes 구축
/playcecloud/playcekube/bin/playcekube_kubespray.sh -f /playcecloud/data/kubespray/envfiles/playcekube_kubespray.env
설치는 서버의 구성에 따라 다르지만 짧게는 20분, 길게는 1시간 정도가 소요되고, ansible이 정상적으로 완료 된다면, 구축이 성공적으로 완료됩니다.
그리고 중간에 ansible-playbook이 끝난것처럼 한번 나오는데 이게 끝난게 아니고 아래 이미지 처럼 다른 부분이 다시 시작 됩니다. 완료라고 나올때까지 조금 더 기다립니다.


더이상 화면이 움직이지는 않고, 여차 저차 설치가 완료 된 것 같습니다. 그럼 구축 된 kubernetes를 확인해볼까요?
### 구축 완료 확인
kubectl get pod
error: You must be logged in to the server (the server has asked for the client to provide credentials)
첫번째 명령어부터 이상합니다. 위의 화면처럼 아무것도 보이지 않네요. 서버에 물어보라는데 모두 아시겠지만 서버는 대답을 해주지 않습니다. 나쁜 친구네요. 그럼 설치가 되지 않은걸까요? kubectl 설정부터 확인해보겠습니다. 아래처럼 kubectl의 설정은 정상적으로 들어가 있는것 같습니다. 그럼 천천히 context정보부터 확인을 해보고 사용해보도록 하죠.
### kubectl 설정 확인
cat ~/.kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority: /playcecloud/data/kubespray/inventory/k8s/k8s-ca.crt
server: https://10.222.0.84:6443
name: k8s
contexts:
- context:
cluster: k8s
namespace: default
user: k8s-admin
name: admin@k8s
current-context: ""
kind: Config
preferences: {}
users:
- name: k8s-admin
user:
client-certificate: /playcecloud/data/kubespray/inventory/k8s/k8s-admin.crt
client-key: /playcecloud/data/kubespray/inventory/k8s/k8s-admin.key
### 사용 가능한 유저 확인
kubectl config get-users
NAME
k8s-admin
### 사용가능한 contexts 확인
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
admin@k8s k8s k8s-admin default
### contexts 적용
kubectl config use-context admin@k8s
Switched to context "admin@k8s".
### 적용 확인
kubectl config current-context
admin@k8s
### kubernetes 정보 확인
kubectl get nodes
NAME STATUS ROLES AGE VERSION
playcekube-master01 Ready control-plane,master 24m v1.22.8
playcekube-master02 Ready control-plane,master 23m v1.22.8
playcekube-master03 Ready control-plane,master 22m v1.22.8
playcekube-worker01 Ready ingress 21m v1.22.8
playcekube-worker02 Ready ingress 21m v1.22.8
kubectl get pod -A
NAMESPACE NAME READY STATUS RESTARTS AGE
cattle-system cattle-cluster-agent-679697c475-9l4p6 1/1 Running 0 13m
cattle-system cattle-cluster-agent-679697c475-q5s4d 1/1 Running 0 15m
kube-system calico-kube-controllers-b8d4d8984-82xn7 1/1 Running 0 19m
kube-system calico-node-8qf8n 1/1 Running 0 20m
kube-system calico-node-92vqx 1/1 Running 0 20m
kube-system calico-node-l42l9 1/1 Running 0 20m
kube-system calico-node-sn89s 1/1 Running 0 20m
kube-system calico-node-zx9z6 1/1 Running 0 20m
kube-system coredns-66fcfddbbd-q74d5 1/1 Running 0 19m
kube-system coredns-66fcfddbbd-s6gzd 1/1 Running 0 18m
kube-system dns-autoscaler-cf845685b-kgvb8 1/1 Running 0 18m
kube-system etcd-playcekube-master01 1/1 Running 0 24m
kube-system etcd-playcekube-master02 1/1 Running 0 24m
kube-system etcd-playcekube-master03 1/1 Running 0 22m
kube-system kube-apiserver-playcekube-master01 1/1 Running 0 24m
kube-system kube-apiserver-playcekube-master02 1/1 Running 1 (23m ago) 24m
kube-system kube-apiserver-playcekube-master03 1/1 Running 1 (22m ago) 22m
kube-system kube-controller-manager-playcekube-master01 1/1 Running 2 24m
kube-system kube-controller-manager-playcekube-master02 1/1 Running 1 24m
kube-system kube-controller-manager-playcekube-master03 1/1 Running 1 21m
kube-system kube-proxy-49fkr 1/1 Running 0 21m
kube-system kube-proxy-92htk 1/1 Running 0 21m
kube-system kube-proxy-f4tw7 1/1 Running 0 21m
kube-system kube-proxy-rgh8j 1/1 Running 0 21m
kube-system kube-proxy-s6gk2 1/1 Running 0 21m
kube-system kube-scheduler-playcekube-master01 1/1 Running 2 24m
kube-system kube-scheduler-playcekube-master02 1/1 Running 2 (15m ago) 24m
kube-system kube-scheduler-playcekube-master03 1/1 Running 1 22m
kube-system metrics-server-7855bfbc9b-9q4k5 1/1 Running 0 17m
kube-system nginx-proxy-playcekube-worker01 1/1 Running 0 21m
kube-system nginx-proxy-playcekube-worker02 1/1 Running 0 21m
playcekube csi-nfs-controller-6f796f9bc9-z4slw 3/3 Running 0 16m
playcekube csi-nfs-node-25z8k 3/3 Running 0 16m
playcekube csi-nfs-node-4mk8d 3/3 Running 0 16m
playcekube csi-nfs-node-6lhhm 3/3 Running 0 16m
playcekube csi-nfs-node-jghps 3/3 Running 0 16m
playcekube csi-nfs-node-mlqg9 3/3 Running 0 16m
playcekube ingress-nginx-controller-dmgwr 1/1 Running 0 17m
playcekube ingress-nginx-controller-qv92f 1/1 Running 0 17m
kubectl get all
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.233.0.1 <none> 443/TCP 25m
위에서처럼 계정 정보를 선택하면 모든 정보가 보이고, node 상태또한 Ready상태로 정상적으로 설치가 되었음을 알 수 있습니다. 오랜시간 설치를 했는데 다행히 성공적으로 끝난거 같네요.
Add-on 설치
Kubernetes는 손쉽게 설치가 되었고, Kubernetes를 사용한 CI/CD, Service Mesh, Monitoring, Backup 등을 Helm을 이용하여 구성합니다. 각 어플리케이션의 구조는 상호 연계구조로 되어 있고 상황에 따라 자유롭게 사용할수 있지만, Playce Kube에서는 샘플을 제공하여, 바로 사용할수있고 예제를 통해 좀더 빠른 접근을 도와줍니다.
Add-on을 사용하기 위해 helm으로 설치 가능한 Repository를 확인합니다.
### helm list 확인
helm search repo
helm으로 설치되어 있는 부분을 확인합니다. ( Kubernetes설치시 - metrics-server, ingress-nginx, csi-driver-nfs는 기본설치 됩니다.)
### helm으로 구축된 기능확인
helm list -A
Playce Kube에서 제공하는 addon설치/제거 방법은 스크립트로 제공되고 설치/제거를 위한 스크립트는 '/playcecloud/playcekube/kube-packages'의 package별로 구분되어 각 경로의 install-${addon_name}-chart.sh 로 제공 됩니다. 목록을 보게 되면, 구성도에 있는 모든 패키지를 지원한다는 것을 알수 있습니다.
### addon 설치/삭제 지원 스크립트
ls -l /playcecloud/playcekube/kube-packages/*/install*.sh
설치는 의존성에 따라 특정 addon은 설치의 우선순위가 있고, 구동에 필요한 기본 성능에 따라 테스트로 소규모 구축시 설치는 되지만, 정상적으로 구동되지 않고, 미실행 혹은 지속하서 재기동이 될 수 있습니다. 이 부분이 제일 중요한데요.
그럼 어떤것을 먼저 설치해야 하나 .. 하고 고민이 될겁니다. 하지만 메뉴얼의 '2. 설치 방법 및 순서'의 첫출에
"각 애드온 들 에 대한 인증을 적용하기 위해 keycloak 설치가 사전 진행 되어야 합니다."
라고 자세히 읽어보면 써있네요. 저처럼 헤메지 않기를 바랍니다.
저는 기본을 지키기 위해 keyclock을 우선 설치 해보도록 하겠습니다.
### keyclock 설치
/playcecloud/playcekube/kube-packages/keycloak/install-helm-charts.sh
/playcecloud/playcekube/kube-packages/oauth2-proxy/install-helm-charts.sh
이렇게 Playce Kube를 이용해서 Enterprise환경의 Kubernetes를 설치 해봤는데요. 상당히 쉽습니다. 이렇게 Kubernetes가 쉬웠나 싶을 정도인데요. 매일 kubernetes.io를 보면서 왜 안되지 .. 왜 안되지 했던 자신이 약간 부끄러울 정도입니다. 제 블로그를 쭉 따라오신 분도 정상적으로 설치가 되셨기를 바랍니다. 이제 추가로 CI/CD등과 서비스를 실제로 만들어서 올릴 예정인데요. 전부 구성되면 무엇을 올려봐야 하나하고 고민이 될정도이네요. 아마 엔터프라이즈 환경에서 구축중이신분들은 약 2주정도 계획하고 작업을 하실텐데 쉽게 구축하세요.. 다운로드 시간빼면 너무 편하네요.
이제 구축된 Playce Kube를 통해서 나머지 Add-on을 설치 하면서 Kubernetes 운영 환경을 지속해서 완성해 보도록 하겠습니다. 블로그가 반응이 좋으면 외부에 오픈도 해볼게요. 많이 망가트려 주세요. 금방 복구해보겠습니다.
'kubernetes' 카테고리의 다른 글
Playce Kube - 설치 확인 (0) | 2023.05.13 |
---|---|
Playce Kube - 서버 준비 (0) | 2023.02.21 |
Playce Kube - System Design (0) | 2023.01.14 |
Playce Kube - 구조 (0) | 2022.08.29 |
Kubernetes 구조 (2) | 2021.03.03 |