현재 K-PaaS (구 PaaS-TA)는 국내 IT 서비스 경쟁력 강화를 목표로, 한국지능정보사회진흥원(NIA)의 지원으로 다양한 국내 업체와 협업을 통해 만든 개방형 클라우드 플랫폼입니다. <내용 출처 : K-PaaS 공식 홈페이지>
해당 글은 K-PaaS 공식 홈페이지 및 K-PaaS github에 올라온 메뉴얼을 기반으로 작성되었으며,
공식 메뉴얼에 나와있지 않은 내용과 설치하면서 도움이 될 내용을 추가하여 작성하였습니다.
[개 요]
✅종 류 : 엔지니어링
✅난이도 : ⭐⭐⭐
✅내용요약 : 오픈 클라우드 플랫폼 K-PaaS CP (Container Platform) 단독형(single) 1.5.x 버전 설치
✅관련직무 : 시스템&클라우드 엔지니어
해당 글을 작성하면서 참고하였던 K-PaaS github 메뉴얼 링크입니다.
CP-cluster 설치 메뉴얼 : https://github.com/K-PaaS/container-platform/blob/master/install-guide/standalone/cp-cluster-install-single.md
CP-Portal 설치 메뉴얼 : https://github.com/K-PaaS/container-platform/blob/master/install-guide/portal/cp-portal-standalone-guide.md
CP-Portal 사용 가이드 : https://github.com/K-PaaS/container-platform/blob/master/use-guide/portal/container-platform-portal-guide.md#-5233-namespace-%EC%83%9D%EC%84%B1
-
컨테이너 플랫폼 (CP, Container Platform)
– K-PaaS 컨테이너 플랫폼은 단독 배포를 통해 독립된 쿠버네티스 환경을 제공하며, 개발자는 손쉽게 쿠버네티스 클러스터를 구축하여 어디서나 최신 애플리케이션을 구축하고 관리할 수 있습니다.
– K-PaaS 컨테이너 플랫폼은 컨테이너 오케스트레이션 플랫폼으로 클라우드 기반의 서비스 개발 및 운영에 필요한 부가 서비스를 제공합니다.
-
K-PaaS 지원 IaaS 환경
Private Cloud | Openstack (Pike~Xena) |
VMware vSphere(v7.0) | |
Cloudit | |
CONTRABASS | |
Public Cloud | AWS |
MS Azure | |
Google Cloud Platform | |
NHN Cloud | |
Naver Cloud | |
KT Cloud |
- 시스템 구성도
HA Control Plane, ETCD Stacked, Rook-Ceph 스토리지 구성도
- OS 환경
K-PaaS CP 1.5.x 버전 설치에 필요한 OS 환경 정보는 아래와 같습니다.
해당 OS 환경 외 다른 환경에서 설치를 진행하는것은 권유하지 않습니다.
지원 OS | 버전 |
ubuntu | 22.04 |
- 설치 환경
설치 클라우드는 iwinv 클라우드 환경을 이용하였으며,
실제 운영환경에서 사용할것을 가정했을때 최소 사양으로 구성하여 설치 진행하였습니다.
Control Plane 노드 3대
Hostname | Public IP | Private IP |
master01 | 115.68.248.xxx | 10.101.0.11 |
master02 | 115.68.248.xxx | 10.101.0.4 |
master03 | 115.68.249.xxx | 10.101.0.25 |
Worker 노드 3대
Hostname | Public IP | Private IP |
worker01 | 115.68.249.xxx | 10.101.0.3 |
worker02 | 115.68.249.xxx | 10.101.0.6 |
worker03 | 115.68.249.xx | 10.101.0.30 |
Load Balance 2대
Hostname | Public IP | Private IP |
LB01 | 115.68.249.xxx | 10.101.0.20 |
LB02 | 115.68.249.xxx | 10.101.0.15 |
로드밸런서의 경우, 이용하는 클라우드 업체에서 제공해주는 로드밸런서 상품이 있다면 해당 로드밸런서에서 셋팅이 가능합니다.
이용하는 클라우드 업체에서 제공하는 로드밸런서 상품이 없거나, private cloud 환경에서 설치를 진행하는 경우에는 인스턴스를 생성하여 로드밸런서로 사용합니다.
-
스토리지
K-PaaS 설치 시 스토리지 설정은 필수입니다.
K-PaaS에서 지원하는 스토리지는 아래와 같습니다.
이번 설치 환경에서 저는 Rook-ceph 스토리지 방식으로 설치를 진행하였습니다.
스토리지 | 설명 |
NFS 서버 | NFS용 인스턴스를 생성하여 NFS 서버를 구축합니다. |
Rook-Ceph | kubernetes 환경 위에 가상 스토리지인 ceph를 배포하여 사용하게 해주는 방식입니다. 사전 정의하는 환경변수에 rook-ceph 설정 시 배포 과정에서 클러스터 내 pod로 rook-ceph의 구성 요소가 자동으로 설치됩니다. 단, rook-ceph으로 스토리지를 구성할 때, Root Volume 외에 추가 Volume을 각 워커 노드에 사전 할당해야 합니다. |
-
방화벽 설정
K-PaaS 컨테이너 플랫폼 설치 시 방화벽에서 오픈되어야 할 포트는 아래와 같습니다.
Control Plane 노드
프로토콜 | 포트 | 설명 |
TCP | 111 | NFS PortMapper |
TCP | 2049 | NFS |
TCP | 2379-2380 | etcd server client API |
TCP | 6443 | Kubernetes API Server |
TCP | 10250 | Kubelet API |
TCP | 10251 | kube-scheduler |
TCP | 10252 | kube-controller-manager |
TCP | 10255 | Read-Only Kubelet API |
TCP | 4789 |
Calico networking VXLAN |
Worker 노드
프로토콜 | 포트 | 설명 |
TCP | 111 | NFS PortMapper |
TCP | 2049 | NFS |
TCP | 10250 | Kubelet API |
TCP | 10255 | Read-Only Kubelet API |
TCP | 3000-32767 | NodePort Services |
TCP | 4789 | Calico networking VXLAN |
1. 사전 작업
1-1. 방화벽 disable (모든 서버에서 진행한다.)
저는 설치하기 전 수월한 테스트를 위해 모든 방화벽을 disable 해주었습니다.
# systemctl stop ufw # systemctl disable ufw |
방화벽을 사용하기 위해서는 위에 작성한 포트를 모두 오픈해주어야 합니다.
1-2. hostname 변경 (각 노드에 접속하여 진행한다.)
hostname을 변경해줍니다.
# hostnamectl set-hostname master01 # hostnamectl set-hostname master02 # hostnamectl set-hostname master03 # hostnamectl set-hostname worker01 # hostnamectl set-hostname worker02 # hostnamectl set-hostname worker03 # hostnamectl set-hostname LB01 # hostnamectl set-hostname LB02 |
1-3. /etc/hosts 등록 (모든 서버에서 진행한다.)
모든 서버에 hosts 등록 작업을 진행합니다.
# vi /etc/hosts 10.101.0.11 master01 10.101.0.4 master02 10.101.0.25 master03 10.101.0.3 worker01 10.101.0.6 worker02 10.101.0.30 worker03 10.101.0.20 LB01 10.101.0.15 LB02 |
1-4. apt update && apt upgrade (모든 서버에서 진행한다.)
모든 서버에서 apt update && apt upgrade 작업을 진행합니다.
# apt update && apt upgrade |
2. 로드밸런서 구성
로드밸런서 HA 구성의 경우 2개 로드밸런서 인스턴스(LB01, LB02)에 Keepalived, HAProxy 설치 및 설정 작업을 진행합니다.
2-1. keepalived 설치 및 설정
keepalived를 설치합니다.
# apt-get install -y keepalived |
/etc/sysctl.conf 설정파일을 echo 명령어를 통해 아래와 같이 변경 후 적용합니다.
# echo ‘net.ipv4.ip_nonlocal_bind=1’ >> /etc/sysctl.conf # echo ‘net.ipv4.ip_forward=1’ >> /etc/sysctl.conf # sysctl -p |
Keepalived.conf 파일을 아래와 같이 설정합니다.
LB01 서버를 마스터로 설정하였고, LB02 서버를 백업으로 설정하였습니다.
VIP IP의 경우 별도의 IP로 지정하여 설정하였습니다.
[LB01 서버 설정] # vi /etc/keepalived/keepalived.conf vrrp_instance VI_1 { state MASTER interface ens3 virtual_router_id 51 priority 200 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 10.101.0.22 } }
[LB02 서버 설정] |
Keepalived 데몬을 재시작합니다.
# systemctl restart keepalived |
LB01 서버에서 ip addr 명령어를 통해 VIP IP가 정상적으로 올라왔는지 확인합니다.
inet 10.101.0.22/32 IP가 정상적으로 올라온것이 확인되었습니다.
root@LB01:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether fa:16:3e:ae:35:90 brd ff:ff:ff:ff:ff:ff altname enp0s3 inet 10.101.0.20/21 metric 100 brd 10.101.7.255 scope global dynamic ens3 valid_lft 55229sec preferred_lft 55229sec inet 10.101.0.22/32 scope global ens3 valid_lft forever preferred_lft forever inet6 fe80::f816:3eff:feae:3590/64 scope link valid_lft forever preferred_lft forever |
2-2. HAProxy 설치 및 설정 진행
HAProxy를 설치합니다.
# apt-get install -y haproxy |
haproxy.cfg 파일의 맨 하단에 아래 내용을 추가합니다.
haproxy.cfg 설정은 LB01, LB02 동일하게 설정한다.
VIP의 경우 Keepalived.conf 파일에 작성했던 로드밸런서 VIP IP를 작성하면 되고,
MASTER_NODE_IP의 경우 각 Control Plane 노드의 Private IP를 작성하면 됩니다.
# vi /etc/haproxy/haproxy.cfg listen kubernetes-apiserver-https bind {{VIP}}:6443 mode tcp option log-health-checks timeout client 3h timeout server 3h server master1 {{MASTER_NODE_IP1}}:6443 check check-ssl verify none inter 10000 server master2 {{MASTER_NODE_IP2}}:6443 check check-ssl verify none inter 10000 server master3 {{MASTER_NODE_IP3}}:6443 check check-ssl verify none inter 10000 balance roundrobin
listen kubernetes-apiserver-https |
HAProxy 데몬을 재시작합니다.
# systemctl restart haproxy |
3. SSH Key 생성 및 배포
cp-cluster 및 cp-portal 설치 작업은 Install 인스턴스 또는 Control Plane 노드에서 진행됩니다.
따라서 Install 인스턴스 또는 Control Plane 노드에서 모든 노드에 접속하기 위해 SSH Key가 인벤토리의 모든 서버들에 복사되어야 합니다.
해당 글에서는 따로 Install 인스턴스를 생성하지 않고 Control Plane 노드에서 설치를 진행하였습니다.
3-1. RSA 공개키 생성 (Install 인스턴스 또는 Control Plane 노드에서 진행한다. 해당 글에서는 master01 서버에서 진행하였음.)
모든 설치작업은 ubuntu 계정에서 진행됩니다.
root 계정이 아닌 ubuntu 계정의 RSA 공개키를 생성해야합니다.
# ssh-keygen -t rsa -m PEM
|
3-2. 출력된 공개키 복사
master01 서버에서 생성한 공개키를 복사한다.
# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADQABAAABgQDViUs5hoOw1bm+UNffZCK05hSdOJVqiKDVq/2pkhjST2sjMGgDjKD ecVhEv8Ot3poXOwWDoqiGhgk3rEsOo2erf1a4ELVFlGvyhFcgUbRlLIF5iDIKnO1Ipn+4RF0t168Ub7dHxRIXpFGj/o/P1tKNgN8SIuVQanRqP0Do/z thx2XWDNqdyH246A34/ilt+ZbySNhO9qIUMmR4vulZzEQfm7z9m1VgSUVtp3avxac6ui59SU5OigxufBNdLqDThp+xPYMMOhcLnBzY1V6X+k96 3I87JCzWybLL26Jg8kyDQk8tZ+tfjZM/8fl/HNTXU8im7ti7DbGwbwORgfPU90RSHS17gpFpSxlE5Nzc02ru+RPPXE4ejmRhoaLUtJz0QW5UkvrQo39 wThZq1+N2ihLPLkKHB0W75BgxWRKKXrKOVLev+NXQkJN1fB9rGvUh1E7HVLb8NzSq/kKUKuve2iHR0Q8T3vlQlsY6RXmbBdZWC82OcO0H H7nk7+/y4Acc/DM= ubuntu@master01 |
3-3. authorized_keys 파일에 공개키 복사 (모든 서버에서 진행한다. master01 서버도 포함)
# vi .ssh/authorized_keys hgk3rEsOo2erf1a4ELVFlGvyhFcgUbRlLIF5iDIKnO1Ipn+4RF0t168Ub7dHxRIXpFGj/o/P1tKNgN8SIuVQanRqP0Do/zthx2XWDNqdyH246A34/ilt+Z bySNhO9qIUMmR4vulZzEQfm7z9m1VgSUVtp3avxac6ui59SU5OigxufBNdLqDThp+xPYMMOhcLnBzY1V6X+k963I87JCzWybLL26Jg8kyDQk8tZ +tfjZM/8fl/HNTXU8im7ti7DbGwbwORgfPU90RSHS17gpFpSxlE5Nzc02ru+RPPXE4ejmRhoaLUtJz0QW5UkvrQo39wThZq1+N2ihLPLkKHB0W75B gxWRKKXrKOVLev+NXQkJN1fB9rGvUh1E7HVLb8NzSq/kKUKuve2iHR0Q8T3vlQlsY6RXmbBdZWC82OcO0HH7nk7+/y4Acc/DM= ubuntu@master01 |
4. cluster 설치
여기서부터는 Install 인스턴스 또는 Control Plane 노드에서만 진행합니다.
해당 글에서는 master01 서버에서 설치를 진행하였습니다.
4-1. cp-cluster deployment 다운로드 및 변수 설정
K-PaaS cp-cluster 설치에 필요한 deployment를 git clone 명령어를 통해 다운로드합니다.
# git clone https://github.com/K-PaaS/cp-deployment.git -b Branch_v1.5.x |
cp-cluster 설치 경로로 이동합니다.
# cd ~/cp-deployment/single |
cp-cluster-vars.sh 파일에 설치에 필요한 환경변수를 사전에 정의하고, 쉘 스크립트를 통해 설치를 진행합니다.
# vi cp-cluster-vars.sh
#!/bin/bash # Master Node Count Variable (eg. 1, 3, 5 …) # if KUBE_CONTROL_HOSTS > 1 (eg. external, stacked) # if KUBE_CONTROL_HOSTS > 1 # if ETCD_TYPE=external # Master Node Info Variable # Worker Node Count Variable # Worker Node Info Variable # Storage Variable (eg. nfs, rook-ceph) # if STORATE_TYPE=nfs # MetalLB Variable (eg. 192.168.0.150-192.168.0.160) # MetalLB Ingress Nginx Controller LoadBalancer Service External IP |
Control Plane 환경변수
환경변수 | 설명 | 비고 |
KUBE_Control_HOSTS | Control Plane 노드 갯수 | |
ETCD_TYPE |
ETCD 배포 방식 |
KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 |
LOADBALANCER_DOMAIN | 로드밸런서의 VIP IP 또는 Domain 정보 | KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 |
ETCD{n}_NODE_HOSTNAME | ETCD n번 노드의 호스트명 | KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 ETCD_TYPE 값이 external 일 경우 설정 KUBE_CONTROL_HOSTS 값만큼 설정 |
ETCD{n}_NODE_HOSTNAME | ETCD n번 노드의 Private IP | KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 ETCD_TYPE 값이 external 일 경우 설정 KUBE_CONTROL_HOSTS 값만큼 설정 |
MASTER1_NODE_HOSTNAME | Control Plane 1번 노드의 호스트명 | |
MASTER1_NODE_PUBLIC_IP | Control Plane 1번 노드의 Public IP | Control Plane 1번 노드만 Public IP 정보 필요 |
MASTER1_NODE_PRIVATE_IP | Control Plane 1번 노드의 Private IP | |
MASTER{n}_NODE_HOSTNAME | Control Plane n번 노드의 호스트명 | KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 KUBE_CONTROL_HOSTS 값만큼 설정 |
MASTER{n}_NODE_ PRIVATE_IP | Control Plane n번 노드의 Private IP | KUBE_CONTROL_HOSTS 값이 2 이상일 경우 설정 KUBE_CONTROL_HOSTS 값만큼 설정 |
Worker 노드의 환경변수
환경변수 | 설명 | 비고 |
KUBE_WORKER_HOSTS | Worker 노드의 갯수 | |
WORKER1_NODE_HOSTNAME | Worker 1번 노드의 호스트명 | |
WORKER1_NODE_PRIVATE_IP | Worker 1번 노드의 Private IP | |
WORKER{n}_NODE_ HOSTNAME | Worker n번 노드의 호스트명 | KUBE_WORKER_HOSTS 값만큼 설정 |
WORKER{n}_NODE_PRIVATE_IP | Worker n번 노드의 Private IP | KUBE_WORKER_HOSTS 값만큼 설정 |
Storage 환경변수
환경변수 | 설명 | 비고 |
STORAGE_TYPE | Storage 정보 nfs : NFS 스토리지 rook-ceph : Rook Ceph 스토리지 |
|
NFS_SERVER_PRIVATE_IP | NFS Server 인스턴스의 Private IP | STORAGE_TYPE 값 nfs 일 경우 설정 |
LoadBalancer 환경변수
환경변수 | 설명 | 비고 |
METALLB_IP_RANGE | MetalLB에서 사용할 Private IP 대역 | Control Plane 노드와 동일한 네트워크 서브넷 대역 설정 |
INGRESS_NGINX_PRIVATE_IP | MetalLB를 통해 Ingress Nginx Controller Service에서 사용할 Private IP | METALLB_IP_RANGE 값과 중복되지 않도록 설정 |
※ METALLB_IP_RANGE 추가 설명
METALLB_IP_RANGE 에 설정한 대역의 IP는 추후 배포하는 애플리케이션의 서비스가 LoadBalancer 타입으로 지정될 시 해당 IP 대역이 순차적으로 할당됩니다.
예시) 클러스터 내 노드의 서브넷이’192.168.0.0/16’일 경우
METALLB_IP_RANGE=192.168.0.5-192.168.0.10
※ INGRESS_NGINX_PRIVATE_IP 추가 설명
INGRESS_NGINX_PRIVATE_IP 값은 MetalLB에서 사용하는 Private IP 이기는 하나 컨테이너 플랫폼 구성 요소의 외부 통신을 위해 고정된 IP값을 지정하여 설정합니다.
IP값은 서브넷에서 사용 중인 다른 Private IP와 겹치지 않아야 하며 METALLB_IP_RANGE 대역과도 겹치지 않도록 지정해야 합니다.
추가로 외부 통신을 위해서는 INGRESS_NGINX_PRIVATE_IP에 설정한 IP와 동일한 인터페이스를 생성 후 Floating IP를 할당하여 Control Plane VM의 인터페이스에 허용된 주소쌍으로 등록 하여야 합니다. (OpenStack 기준)
예시) METAL_IP_RANGE=192.168.0.5~192.168.0.10
INGRESS_NGINX_PRIVATE_IP=192.168.0.30
4-3. cp-cluster 설치 스크립트 실행
쉘 스크립트를 통해 설치에 필요한 패키지들을 설치하고, 설정한 환경변수를 바탕으로 Ansible playbook을 통한 cp-cluster가 설치됩니다.
# source deploy-cp-cluster.sh |
cp-cluster 설치가 완료되었다면 아래와 같은 화면이 확인됩니다.
cp-cluster 설치 중 설치 로그들을 확인하고 싶거나, 설치가 잘 되지 않고 error가 발생헀을 시 error로그를 확인하고 싶다면 로그 경로는 아래와 같습니다.
# ~/cp-deployment/standalone/deploy-result.log |
4-4. cp-cluster 설치 확인
설치가 정상적으로 되었다면, 노드 및 kube-system 네임스페이스의 Pod를 확인하여 cp-cluster 설치가 잘 되었는지를 확인합니다.
# kubectl get node |
# kubectl get pods -n kube-system |
5. cp-portal 배포
5-1. cp-portal deployment 파일 다운로드
cp-cluster 설치가 완료되었으면, cp-portal을 배포할 차례입니다.
파일을 다운로드 할 경로를 생성해주고, wget 명령어로 deployment 압축 파일을 다운로드합니다.
파일 다운로드 후 압축을 해제합니다.
# mkdir -p ~/workspace/container-platform # cd ~/workspace/container-platform # wget –content-disposition https://nextcloud.k-paas.org/index.php/s/SSo9H3qjLsFn3ob/download # ls ~/workspace/container-platform cp-portal-deployment-v1.5.0.tar.gz # tar -xvf cp-portal-deployment-v1.5.0.tar.gz |
5-2. cp-portal 변수 정의
cp-portal-vars.sh 파일에 설치에 필요한 변수를 정의합니다.
포탈 기본 배포 프로토콜은 http이며 인증서를 통해 https 설정을 원한다면 K-PaaS git hub 메뉴얼을 참고하시면 됩니다.
해당 글에서는 http 방식으로 설치를 진행하였습니다.
# cd ~/workspace/container-platform/cp-portal-deployment/script
# vi cp-portal-vars.sh |
변수 | 설명 | 상세 내용 |
K8S_MASTER_NODE_IP | Kubernetes Master Node Public IP 입력 | Master Node에 접근하기 어려운 경우 Worker Node Public IP 입력 |
K8S_CLUSTER_API_SERVER | Kubernetes API Server URL 입력 | 컨테이너 플랫폼을 통해 배포된 클러스터는 기본으로 https://${K8S_MASTER_NODE_IP}:6443이다. Master Node의 6443번 포트 수신 형식이 아닐 경우 값을 수정한다. |
K8S_STORAGECLASS | StorageClass 명 입력 | 컨테이너 플랫폼을 통해 배포된 클러스터는 기본으로 cp-storageclass이다. 다른 StorageClass 사용 시 해당 리소스 명을 입력한다. |
HOST_CLUSTER_IAAS_TYPE | Kubernetes Cluster IaaS 환경 입력 | [1] AWS [2] OPENSTACK [3] NAVER [4] NHN [5] KT 번호 입력 |
HOST_DOMAIN | Host Domain 값 입력 | {ingress-nginx-controller 서비스의 EXTERNAL-IP}.nip.io 입력 |
PROVIDER_TYPE | 컨테이너 플랫폼 포털 제공 타입 입력 | 본 가이드는 포털 단독 배포 형 설치 가이드로 standalone 값 입력 필요 |
※ HOST_CLUSTER_IAAS_TYPE 추가 설명
‘HOST_CLUSTER_IAAS_TYPE’의 IaaS 목록은 Container Platform Portal이 해당 IaaS에서 공식적으로 테스트되고 최적화되었음을 의미합니다.
물리서버에서 구축을 진행하거나, 타 IaaS 환경에서 구축할 경우에도 OS 종류와 버전이 일치한다면 배포가 가능합니다.
※ HOST_DOMAIN 추가 설명
cp-cluster 설치 시 INGRESS_NGINX_PRIVATE_IP 변수 값을 설정하였습니다.
해당 변수값에 작성하였던 IP 정보와 무료 wildcard DNS 서비스 nip.io를 사용하여 HOST_DOMAIN 변수값으로 작성합니다.
예시) 10.101.0.40.nip.io
변수값 입력 전 하단의 내용을 확인합니다.
ingress-nginx-controller 서비스 EXTERNAL-IP 조회
# kubectl get svc -n ingress-nginx
조회되는 EXTERNAL-IP 값은 INGRESS_NGINX_PRIVATE_IP 변수 값으로 설정했던 10.101.0.40
curl 명령어를 통해 외부와의 통신 테스트 진행. 404 에러 반환 시 정상.
# curl http://10.101.0.40
해당 내용이 확인될 시 HOST_DOMAIN 변수에 해당 IP 정보 및 nip.io 도메인을 사용하여 작성할 수 있습니다.
5-3. cp-portal 배포 스크립트 실행
cp-portal 배포를 위한 스크립트를 실행합니다.
실행 전 스크립트에 실행 권한을 부여 후 실행합니다.
# chmod +x deploy-cp-portal.sh # ./deploy-cp-portal.sh |
5-4. 설치 확인
설치가 종료되면 정상적으로 배포가 되었는지 확인합니다.
처음에 설치 후 Pod 조회 시 Running 상태로 전환되기까지 시간이 조금 소요될 수 있습니다.
Vault Pod 조회
# kubectl get pods -n Vault |
Habor Pod 조회
# kubectl get pods -n harbour |
MariaDB Pod 조회
# kubectl get pods -n mariadb |
Keycloak Pod 조회
# kubectl get pods -n keycloak |
cp-portal Pod 조회
# kubectl get pods -n cp-portal |
생성된 전체 Pod 조회
# kubectl get pods -A |
rook-ceph deployment가 간헐적으로 CrashLoopBackupOff 상태로 변경되는 부분이 있으나, 포털 이용 시에는 별다른 문제를 찾지 못했으며 수분 뒤에 확인해보면 정상 상태로 Running으로 변경됩니다.
해당 문제에 대한 원인은 아직 파악하지 못했습니다.
6. CP 포털 접속
포털에 접속하기 전 Keycloak 페이지 관리자 계정 정보를 조회해야합니다.
계정 정보 조회 명령어는 아래와 같습니다.
# kubectl get cm cp-portal-configmap -n cp-portal -o yaml | grep KEYCLOAK_ADMIN |
초기 계정 정보는 admin / admin 입니다.
보안을 위해 추후에 관리자 패스워드를 변경해주어야합니다.
초기 패스워드를 변경하는 방법은 아래 메뉴얼을 참고하시면 됩니다.
https://github.com/K-PaaS/container-platform/blob/master/use-guide/portal/container-platform-portal-guide.md#3-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88-%ED%94%8C%EB%9E%AB%ED%8F%BC-%EA%B4%80%EB%A6%AC%EC%9E%90-%EA%B3%84%EC%A0%95-%ED%8C%A8%EC%8A%A4%EC%9B%8C%EB%93%9C-%EC%B4%88%EA%B8%B0%ED%99%94
해당 설치글에서는 portal 접속 IP를 Floating IP와 연결하지 않았기 때문에 ubuntu-desktop을 설치하여 포털에 접속하였습니다.
portal 접속 IP를 Floating IP와 연결하였다면 인터넷 환경에서 portal에 접속하시면 됩니다.
ubuntu-desktop 설치 방법은 아래 메뉴얼을 참고하시면 됩니다.
https://ko.linux-console.net/?p=393#gsc.tab=0
desktop으로 접속하여 http://portal.10.101.0.40.nip.io 접속 시 포탈이 정상적으로 뜨는것을 확인할 수 있습니다.
admin 계정으로 접속해봅니다.
접속 시 포탈 화면이 정상적으로 출력되고 있으며, 타 기능들도 정상적으로 작동하는것을 확인하였습니다.
포탈 사용법에 대해서는 아래 메뉴얼을 참고하시면 더 자세히 나와있습니다.
포털 이용 가이드 url : https://github.com/K-PaaS/container-platform/blob/master/use-guide/portal/container-platform-portal-guide.md
안녕하세요. 쿠버네티스 구성하면서 많이 참고가 되었습니다. 혹시 rook-ceph 구성하는 방법은 따로 없을까요? 이 부분에 좀 막히는 부분이 있습니다
해당 글에서는 paas-ta 플랫폼을 사용하여 쿠버네티스 설치를 진행하였고, 제공되는 스크립트를 통해 rook-ceph를 포함한 모든 구성요소들이 ansible 방식으로 한번에 설치됩니다.
쿠버네티스 환경을 직접 설치하여 구성하는 경우 rook-ceph 설치 방식은 아래 rook-ceph의 공식 document를 참고하시면 됩니다.
https://rook.io/docs/rook/latest-release/Getting-Started/quickstart/#create-a-ceph-cluster