본 문서(컨테이너 서비스 설치 가이드)는 단독배포된 Kubernetes를 사용하기 위해 Bosh 기반 릴리즈 설치 방법을 기술하였다.
PaaS-TA 3.5 버전부터는 Bosh 2.0 기반으로 배포(deploy)를 진행한다.
1.2. 범위
설치 범위는 Kubernetes 단독 배포를 기준으로 작성하였다.
1.3. 시스템 구성도
시스템 구성은 Kubernetes Cluster(Master, Worker)와 BOSH Inception(DBMS, HAProxy, Private Registry)환경으로 구성되어 있다.
Kubeadm를 통해 Kubernetes Cluster를 설치하고 Kubernetes 환경에 KubeEdge를 설치한다. BOSH 릴리즈로는 Database, Private registry 등 미들웨어 환경을 제공하여 Docker Image로 Kubernetes Cluster에 컨테이너 플랫폼 포털 환경을 배포한다.
총 필요한 VM 환경으로는 Master VM: 1개, Worker VM: 1개 이상, BOSH Inception VM: 1개가 필요하고 본 문서는 BOSH Inception 환경을 구성하기 위한 VM 설치와 Kubernetes Cluster에 컨테이너 플랫폼을 배포하는 내용이다.
본 설치 가이드는 Ubuntu환경에서 설치하는 것을 기준으로 작성하였다. 단독 배포를 위해서는 Inception 환경이 구축 되어야 하므로 BOSH 2.0 설치와 PaaS-TA 5.5 가이드의 Stemcell 업로드, Cloud Config 설정, Runtime Config 설정이 사전에 진행이 되어야 한다.
Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell 이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.5 와 동일 Stemcell 사용)
Stemcell 업로드 및 Cloud Config, Runtime Config 설정 부분은 PaaS-TA 5.5 설치가이드를 참고 한다.
$ bosh -e micro-bosh stemcells
Using environment '10.0.1.6' as client 'admin'
Name Version OS CPI CID
bosh-aws-xen-hvm-ubuntu-xenial-go_agent 621.94 ubuntu-xenial - ami-0694eb07c57faca73
(*) Currently deployed
1 stemcells
Succeeded
2.3. Deployment 다운로드
서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.
# Deployment 다운로드 파일 위치 경로 생성 및 이동
$ mkdir -p ~/workspace/paasta-5.5.0/deployment/
$ cd ~/workspace/paasta-5.5.0/deployment/
# Deployment 다운로드
$ git clone https://github.com/PaaS-TA/paas-ta-container-platform-deployment.git
2.4. Deployment 파일 수정
BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
# 릴리즈 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.5.0/release/service
$ cd ~/workspace/paasta-5.5.0/release/service
# 릴리즈 파일 다운로드 및 파일 경로 확인
$ wget --content-disposition https://nextcloud.paas-ta.org/index.php/s/zYjJg9yffxwSbFT/download
$ ls ~/workspace/paasta-5.5.0/release/service
paasta-container-platform-1.0.tgz
릴리즈를 설치한다.
$ cd ~/workspace/paasta-5.5.0/deployment/paas-ta-container-platform-deployment/bosh
$ chmod +x *.sh
$ ./deploy-{IAAS}.sh
2.6. 릴리즈 설치 확인
설치 완료된 릴리즈를 확인한다.
$ bosh -e micro-bosh -d paasta-container-platform vms
Using environment '10.0.1.6' as client 'admin'
Task 2983. Done
Deployment 'paasta-container-platform'
Instance Process State AZ IPs VM CID VM Type Active
haproxy/32d1ff4e-1007-4e9a-8ebd-ffb33ba37348 running z7 10.0.0.121 i-0e6c374f2377ecf12 small true
3.35.95.75
mariadb/42657509-69b6-4b4e-a006-20690e5ce2ea running z5 10.0.161.121 i-0a8c71fb43ba3f34a small true
private-image-repository/2803b9a6-d797-4afb-9a34-65ce15853a9e running z7 10.0.0.122 i-0d5e4c451075e446b small true
3 vms
Succeeded
2.7. CVE/CCE 진단항목 적용
배포된 Kubernetes Cluster, BOSH Inception 환경에 아래 가이드를 참고하여 해당 CVE/CCE 진단항목을 필수적으로 적용시켜야 한다.
# 이미지 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.5.0/container-platform
$ cd ~/workspace/paasta-5.5.0/container-platform
# 이미지 파일 다운로드 및 파일 경로 확인
$ wget --content-disposition https://nextcloud.paas-ta.org/index.php/s/QZXmkJz582QxsMd/download
$ ls ~/workspace/paasta-5.5.0/container-platform
cp-standalone-images.tar
# 이미지 다운로드 파일 압축 해제
$ tar -xvf cp-standalone-images.tar
$ cd ~/workspace/paasta-5.5.0/container-platform/container-platform-image
$ ls ~/workspace/paasta-5.5.0/container-platform/container-platform-image
container-platform-api.tar.gz container-platform-webadmin.tar.gz image-upload-standalone.sh
container-platform-common-api.tar.gz container-platform-webuser.tar.gz
노드의 Taint 설정을 해제한다.(이미 KubeEdge 설치 가이드에서 Taint 설정 해제를 했으면 안해도 된다.)
$ kubectl taint nodes --all node-role.kubernetes.io/master-
# Taint 설정 해제를 처음 시도하는 경우
node/ip-10-0-0-251 untainted
error: taint "node-role.kubernetes.io/master" not found
# Tain 설정 해제를 이미 시도 한 경우
taint "node-role.kubernetes.io/master" not found
taint "node-role.kubernetes.io/master" not found
3.6. Deployment 배포
3.6.1. paas-ta-container-platform-common-api 배포
컨테이너 플랫폼 yaml 파일
# 컨테이너 플랫폼 yaml 파일 경로이동
$ cd ~/workspace/paasta-5.5.0/container-platform/container-platform-edge-yaml
$ ls ~/workspace/paasta-5.5.0/container-platform/container-platform-edge-yaml
paas-ta-container-platform-api.yml paas-ta-container-platform-webadmin.yml
paas-ta-container-platform-common-api.yml paas-ta-container-platform-webuser.yml
$ kubectl apply -f paas-ta-container-platform-common-api.yml
deployment.apps/common-api-deployment created
service/common-api-deployment created
$ kubectl apply -f paas-ta-container-platform-api.yml
deployment.apps/api-deployment created
service/api-deployment created
$ kubectl apply -f paas-ta-container-platform-webuser.yml
deployment.apps/webuser-deployment created
service/webuser-deployment created
$ kubectl apply -f paas-ta-container-platform-webadmin.yml
deployment.apps/webadmin-deployment created
service/webadmin-deployment created
3.6.5. 배포 확인
배포된 Deployment, Pod, Service를 확인한다.
$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
api-deployment 1/1 1 1 59s
common-api-deployment 1/1 1 1 77s
webadmin-deployment 1/1 1 1 29s
webuser-deployment 1/1 1 1 42s
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
api-deployment-5fc8bcbdbf-qb6pr 1/1 Running 0 74s
common-api-deployment-68dd87f5ff-2plnn 1/1 Running 0 92s
webadmin-deployment-54cd8b8687-mgznp 1/1 Running 0 44s
webuser-deployment-7ddd64b5b9-c74mx 1/1 Running 0 57s
$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
api-deployment NodePort xxx.xxx.xxx.xxx <none> 3333:30333/TCP 103s
common-api-deployment NodePort xxx.xxx.xxx.xxx <none> 3334:30334/TCP 2m1s
webadmin-deployment NodePort xxx.xxx.xxx.xxx <none> 8080:32080/TCP 73s
webuser-deployment NodePort xxx.xxx.xxx.xxx <none> 8091:32091/TCP 86s
4. 컨테이너 플랫폼 운영자/사용자 포털 회원가입
컨테이너 플랫폼 최초 배포의 경우 운영자 포털 회원가입을 통해 Kubernetes Cluster 정보 등록이 선 진행되어야 한다. 따라서 운영자포털 회원가입 완료 후 사용자 포털 회원가입을 진행하도록 한다.
컨테이너 플랫폼 운영자포털 접속 URI :: http://{MASTER_NODE_PUBLIC_IP}:32080
운영자 포털을 접속하기 전 네임스페이스 'paas-ta-container-platform-temp-namespace' 가 정상적으로 생성되어 있는지 확인한다.
$ kubectl get namespace
NAME STATUS AGE
default Active 5d19h
kube-node-lease Active 5d19h
kube-public Active 5d19h
kube-system Active 5d19h
paas-ta-container-platform-temp-namespace Active 4d
Kubernetes Cluster 정보, 생성할 Namespace 명, User 정보를 입력 후 [회원가입] 버튼을 클릭하여 컨테이너 플랫폼 운영자포털에 회원가입을 진행한다.
# ex) 이해를 돕기 위한 예시 정보
# {Kubernetes Cluster Name} : cp-cluster
# {Kubernetes Cluster API URL} : https://xxx.xxx.xxx.xxx:6443
# {Kubernetes Cluster Token} : qY3k2xaZpNbw3AJxxxxx......
4.2. 컨테이너 플랫폼 운영자 포털 로그인
사용자 ID와 비밀번호를 입력 후 [로그인] 버튼을 클릭하여 컨테이너 플랫폼 운영자 포털에 로그인 한다.
4.3. 컨테이너 플랫폼 사용자 포털 회원가입
등록할 사용자 계정정보(사용자 ID, Password, E-mail)를 입력 후 [Register] 버튼을 클릭하여 컨테이너 플랫폼 사용자 포털에 회원가입한다.
사용자 포털은 회원가입 후 즉시 이용이 불가하며 Cluster 관리자 혹은 Namespace 관리자로부터 해당 사용자가 이용할 Namespace와 Role을 할당 받은 후 포털 이용이 가능하다.
4.4. 컨테이너 플랫폼 사용자 Namespace/Role 할당
1) Namespace 관리자 지정
Clusters 메뉴 > Namespaces 선택 > 할당 하고자하는 Namespace 명 선택 > 하단 [수정]버튼 클릭
해당 Namespace의 관리자로 지정할 사용자 ID 선택 후 저장버튼 클릭
해당 Namespace의 Resource Quotas, Limit Ranges 수정 가능
[참고] Namespace 생성시에도 Namespace 관리자를 지정할 수 있다.
2) Namespace 사용자 지정
운영자 포털
Namespaces/Roles 선택 > [수정]버튼 클릭
사용자 포털
Namespace 관리자는 해당 Namespace를 이용중인 사용자의 Role 변경 및 해당 Namespace를 미사용하는 사용자에게 접근 권한을 할당할 수 있다.
4.5. 컨테이너 플랫폼 사용자 포털 로그인
사용자 ID와 비밀번호를 입력후 [로그인] 버튼을 클릭하여 컨테이너 플랫폼 사용자 포털에 로그인 한다.