본 문서(PaaS-TA Portal 배포 가이드)는 PaaS-TA에서 배포되는 Portal을 PaaS-TA를 이용하여 설치 하는 방법을 기술하였다.
1.2. 범위
설치 범위는 PaaS-TA Portal을 검증하기 위한 Portal infra Release 설치 및 Portal App 배포를 기준으로 작성하였다.
1.3. 시스템 구성
본 문서의 설치된 시스템 구성도이다. Binary Storage, Mariadb, Gateway Api, Registration Api, Portal Api, Common Api, Log Api, Storage Api, Webadmin, Webuser로 최소사항을 구성하였다.
본 설치 가이드는 Linux 환경에서 설치하는 것을 기준으로 하였다. 서비스 설치를 위해서는 BOSH 2.0과 5.0 이상의 PaaS-TA가 설치 되어 있어야 한다.
2.2. Stemcell 확인
Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.5.1 과 동일 stemcell 사용)
$ bosh -e ${BOSH_ENVIRONMENT} 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-0297ff649e8eea21b
(*) Currently deployed
1 stemcells
Succeeded
2.3. Deployment 다운로드
서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.
# Deployment 다운로드 파일 위치 경로 생성 및 설치 경로 이동
$ mkdir -p ~/workspace/paasta-5.5.1/deployment
$ cd ~/workspace/paasta-5.5.1/deployment
# Deployment 파일 다운로드
$ git clone https://github.com/PaaS-TA/portal-deployment.git -b v5.1.1
2.4. Deployment 파일 수정
BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
$ vi ~/workspace/paasta-5.5.1/deployment/portal-deployment/portal-container-infra/vars.yml
# STEMCELL INFO
stemcell_os: "ubuntu-xenial" # stemcell os
stemcell_version: "621.94" # stemcell version
# NETWORKS INFO
private_networks_name: "default" # private network name
# PORTAL-INFRA INFO
infra_azs: [z3] # infra : azs
infra_instances: 1 # infra : instances (1)
infra_vm_type: "large" # infra : vm type
infra_persistent_disk_type: "20GB" # infra : persistent disk type
# MARIADB INFO
mariadb_port: "<MARIADB_PORT>" # mariadb : database port (e.g. 13306) -- Do Not Use "3306"
mariadb_admin_password: "<MARIADB_ADMIN_PASSWORD>" # mariadb : database admin password (e.g. "Paasta@2019")
portal_default_api_name: "PaaS-TA 5.5.1" # portal default api name
portal_default_api_url: "http://<PORTAL_GATEWAY_ROUTE>" # portal default api url (portal gateway url) (e.g. "http://portal-gateway.<DOMAIN>")
portal_default_header_auth: "Basic YWRtaW46b3BlbnBhYXN0YQ==" # portal default header auth
portal_default_api_desc: "PaaS-TA 5.5.1 infra" # portal default api description
# BINARY_STORAGE INFO
binary_storage_auth_port: "<BINARY_STORAGE_AUTH_PORT>" # binary storage : keystone port (e.g. 15001) -- Do Not Use "5000"
binary_storage_username: "<BINARY_STORAGE_USERNAME>" # binary storage : username (e.g. "paasta-portal")
binary_storage_password: "<BINARY_STORAGE_PASSWORD>" # binary storage : password (e.g. "paasta")
binary_storage_tenantname: "<BINARY_STORAGE_TENANTNAME>" # binary storage : tenantname (e.g. "paasta-portal")
binary_storage_email: "<BINARY_STORAGE_EMAIL>" # binary storage : email (e.g. "paasta@paasta.com")
2.5. 서비스 설치
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고, Option file을 추가할지 선택한다.
(선택) -o operations/use-compiled-releases.yml (ubuntu-xenial/621.94로 컴파일 된 릴리즈 사용)
$ vi ~/workspace/paasta-5.5.1/deployment/portal-deployment/portal-container-infra/deploy.sh
#!/bin/bash
# VARIABLES
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
# DEPLOY
bosh -e ${BOSH_ENVIRONMENT} -n -d portal-container-infra deploy --no-redact portal-container-infra.yml \
-l ${COMMON_VARS_PATH} \
-l vars.yml
서비스를 설치한다.
$ cd ~/workspace/paasta-5.5.1/deployment/portal-deployment/portal-container-infra
$ sh ./deploy.sh
2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식
서비스 설치에 필요한 릴리즈 파일을 다운로드 받아 Local machine의 서비스 설치 작업 경로로 위치시킨다.
# 릴리즈 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.5.1/release/portal
# 릴리즈 파일 다운로드 및 파일 경로 확인
$ ls ~/workspace/paasta-5.5.1/release/portal
paasta-portal-api-release-2.3.0-ctn.tgz
서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고 Option file 및 변수를 추가한다.
$ vi ~/workspace/paasta-5.5.1/deployment/portal-deployment/portal-container-infra/deploy.sh
#!/bin/bash
# VARIABLES
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
# DEPLOY
bosh -e ${BOSH_ENVIRONMENT} -n -d portal-container-infra deploy --no-redact portal-container-infra.yml \
-o operations/use-offline-releases.yml \
-l ${COMMON_VARS_PATH} \
-l vars.yml \
-v releases_dir="/home/ubuntu/workspace/paasta-5.5.1/release"
서비스를 설치한다.
$ cd ~/workspace/paasta-5.5.1/deployment/portal-deployment/portal-container-infra
$ sh ./deploy.sh
2.7. 서비스 설치 확인
설치 완료된 서비스를 확인한다.
$ bosh -e ${BOSH_ENVIRONMENT} -d portal-container-infra vms
Using environment '10.0.1.6' as client 'admin'
Task 1246. Done
Deployment 'portal-container-infra'
Instance Process State AZ IPs VM CID VM Type Active
infra/3193a1fa-156d-4dd9-935d-4b67cdcc1182 running z3 10.0.81.121 i-09ec0c2e7f3594683 large true
1 vms
Succeeded
3. PaaS-TA Portal 설치
3.1. Prerequisite
3.1.1. App 파일 및 Manifest 파일 다운로드
Portal 설치에 필요한 App 파일 및 Manifest 파일을 다운로드 받아 서비스 설치 작업 경로로 위치시킨다.
$ cd ~/workspace/paasta-5.5.1/release/portal/portal-app
$ source 1.applyChangeVariable.sh
### 이후 각 Manifest.yml 파일을 확인하여 값이 정상적으로 바뀌었는지 확인한다.
e.g.) portal-registration
$ vi ~/workspace/paasta-5.5.1/release/portal/portal-app/portal-registration-2.1.0/manifest.yml
applications:
- name: portal-registration
memory: 1G
instances: 1
buildpacks:
- java_buildpack
routes:
- route: portal-registration.xx.xxx.xxx.xxx.xip.io
path: paas-ta-portal-registration.jar
env:
server_port: 80
spring_application_name: PortalRegistration
eureka_server_enableSelfPreservation: true
eureka_instance_hostname: ${vcap.application.uris[0]}
eureka_instance_nonSecurePort: 80
eureka_client_registerWithEureka: false
eureka_client_fetchRegistry: false
eureka_server_maxThreadsForPeerReplication: 0
eureka_client_server_waitTimeInMsWhenSyncEmpty: 0
eureka_client_serviceUrl_defaultZone: http://${vcap.application.uris[0]}/eureka/
3.1.4. Portal App 배포 Script 변수 설정
Portal을 PaaS-TA에 App으로 배포해주는 Script 동작을 위해 Script의 접속정보 변수를 설정한다.
$ vi ~/workspace/paasta-5.5.1/release/portal/portal-app/2.portalContainerPush.sh
#!/bin/bash
#VARIABLE
DOMAIN="xx.xxx.xx.xxx.xip.io" # PaaS-TA System Domain
PAASTA_USER_ADMIN_USERNAME="admin" # PaaS-TA Admin Username
PAASTA_USER_ADMIN_PASSWORD="admin" # PaaS-TA Admin Password
PORTAL_QUOTA_NAME="portal_quota" # PaaS-TA Portal Quota Name
PORTAL_ORG_NAME="portal" # PaaS-TA Portal Org Name
PORTAL_SPACE_NAME="system" # PaaS-TA Portal Space Name
PORTAL_SECURITY_GROUP_NAME="portal" # PaaS-TA Portal Space Name
3.1.5. Portal App 배포 Script 실행
Portal을 PaaS-TA에 App으로 배포해주는 Script를 실행한다.
$ cd ~/workspace/paasta-5.5.1/release/portal/portal-app
$ source 2.portalContainerPush.sh
name requested state processes routes
portal-api started web:1/1, task:0/0 portal-api.61.252.53.246.xip.io
portal-common-api started web:1/1, task:0/0 portal-common-api.61.252.53.246.xip.io
portal-gateway started web:1/1, task:0/0 portal-gateway.61.252.53.246.xip.io
portal-log-api started web:1/1, task:0/0 portal-log-api.61.252.53.246.xip.io
portal-registration started web:1/1, task:0/0 portal-registration.61.252.53.246.xip.io
portal-storage-api started web:1/1, task:0/0 portal-storage-api.61.252.53.246.xip.io
portal-web-admin started web:1/1, task:0/0 portal-web-admin.61.252.53.246.xip.io
portal-web-user started web:1/1 portal-web-user.61.252.53.246.xip.io
PaaS-TA는 기본적으로 일반 사용자는 조직을 생성할 수 없도록 설정되어 있다. 포털 배포를 위해 조직 및 공간을 생성해야 하고 또 테스트를 구동하기 위해서도 필요하므로 사용자가 조직을 생성할 수 있도록 user_org_creation FLAG를 활성화 한다. FLAG 활성화를 위해서는 PaaS-TA 운영자 계정으로 로그인이 필요하다.
$ cf enable-feature-flag user_org_creation
Setting status of user_org_creation as admin...
OK
Feature user_org_creation Enabled.
4.2. 사용자포탈 UAA페이지 오류
uaac의 endpoint를 설정하고 uaac 로그인을 실행한다.
# endpoint 설정
$ uaac target https://uaa.<DOMAIN> --skip-ssl-validation
# target 확인
$ uaac target
Target: https://uaa.<DOMAIN>
Context: uaa_admin, from client uaa_admin
# uaac 로그인
$ uaac token client get <UAA_ADMIN_CLIENT_ID> -s <UAA_ADMIN_CLIENT_SECRET>
Successfully fetched token via client credentials grant.
Target: https://uaa.<DOMAIN>
Context: admin, from client admin
redirect오류 - portalclient 미등록
(1) uaac portalclient가 등록이 되어있지 않다면 해당 화면과 같이 redirect오류가 발생한다.
(2) uaac client add를 통해 potalclient를 추가시켜주어야 한다.