PaaS-TA-5.5.0
Search…
Source Control Service 설치 가이드

Table of Contents

1. 문서 개요

1.1. 목적

본 문서는 개방형 PaaS 플랫폼 고도화 및 개발자 지원 환경 기반의 Open PaaS에서 제공되는 서비스인 형상관리 서비스를 Bosh를 이용하여 설치하는 방법을 기술하였다. PaaS-TA 3.5 버전부터는 Bosh2.0 기반으로 deploy를 진행하며 기존 Bosh1.0 기반으로 설치를 원할경우에는 PaaS-TA 3.1 이하 버전의 문서를 참고한다.

1.2. 범위

설치 범위는 형상관리 서비스 Release를 검증하기 위한 기본 설치를 기준으로 작성하였다.

1.3. 시스템 구성도

본 장에서는 형상관리 서비스의 시스템 구성에 대해 기술하였다. 형상관리 서비스의 시스템은 service-broker, mariadb, 형상관리 Server의 최소 사항을 구성하였다.
시스템 구성도

1.4. 참고 자료

2. 형상관리 서비스 설치

2.1. Prerequisite

본 설치 가이드는 Linux 환경에서 설치하는 것을 기준으로 하였다. 서비스 설치를 위해서는 BOSH 2.0과 PaaS-TA 5.0 이상, PaaS-TA 포털이 설치되어 있어야 한다.

2.2. Stemcell 확인

Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.5.1 과 동일 stemcell 사용)
$ bosh -e micro-bosh stemcells
1
Using environment '10.0.1.6' as client 'admin'
2
3
Name Version OS CPI CID
4
bosh-aws-xen-hvm-ubuntu-xenial-go_agent 621.94* ubuntu-xenial - ami-0297ff649e8eea21b
5
6
(*) Currently deployed
7
8
1 stemcells
9
10
Succeeded
Copied!

2.3. Deployment 다운로드

서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.
1
# Deployment 다운로드 파일 위치 경로 생성 및 설치 경로 이동
2
$ mkdir -p ~/workspace/paasta-5.5.1/deployment
3
$ cd ~/workspace/paasta-5.5.1/deployment
4
5
# Deployment 파일 다운로드
6
$ git clone https://github.com/PaaS-TA/service-deployment.git -b v5.0.6
7
8
# common_vars.yml 파일 다운로드(common_vars.yml가 존재하지 않는다면 다운로드)
9
$ git clone https://github.com/PaaS-TA/common.git
Copied!

2.4. Deployment 파일 수정

BOSH Deployment manifest는 Components 요소 및 배포의 속성을 정의한 YAML 파일이다. Deployment 파일에서 사용하는 network, vm_type, disk_type 등은 Cloud config를 활용하고, 활용 방법은 BOSH 2.0 가이드를 참고한다.
  • Cloud config 설정 내용을 확인한다.
$ bosh -e micro-bosh cloud-config
1
Using environment '10.0.1.6' as client 'admin'
2
3
azs:
4
- cloud_properties:
5
availability_zone: ap-northeast-2a
6
name: z1
7
- cloud_properties:
8
availability_zone: ap-northeast-2a
9
name: z2
10
11
... ((생략)) ...
12
13
disk_types:
14
- disk_size: 1024
15
name: default
16
- disk_size: 1024
17
name: 1GB
18
19
... ((생략)) ...
20
21
networks:
22
- name: default
23
subnets:
24
- az: z1
25
cloud_properties:
26
security_groups: paasta-security-group
27
subnet: subnet-00000000000000000
28
dns:
29
- 8.8.8.8
30
gateway: 10.0.1.1
31
range: 10.0.1.0/24
32
reserved:
33
- 10.0.1.2 - 10.0.1.9
34
static:
35
- 10.0.1.10 - 10.0.1.120
36
37
... ((생략)) ...
38
39
vm_types:
40
- cloud_properties:
41
ephemeral_disk:
42
size: 3000
43
type: gp2
44
instance_type: t2.small
45
name: minimal
46
- cloud_properties:
47
ephemeral_disk:
48
size: 10000
49
type: gp2
50
instance_type: t2.small
51
name: small
52
53
... ((생략)) ...
54
55
Succeeded
Copied!
  • common_vars.yml을 서버 환경에 맞게 수정한다.
  • 형상관리 서비스에서 사용하는 변수는 system_domain이다.
$ vi ~/workspace/paasta-5.5.1/deployment/common/common_vars.yml
1
# BOSH INFO
2
bosh_ip: "10.0.1.6" # BOSH IP
3
bosh_url: "https://10.0.1.6" # BOSH URL (e.g. "https://00.000.0.0")
4
bosh_client_admin_id: "admin" # BOSH Client Admin ID
5
bosh_client_admin_secret: "ert7na4jpew48" # BOSH Client Admin Secret('echo $(bosh int ~/workspace/paasta-5.5.1/deployment/paasta-deployment/bosh/{iaas}/creds.yml --path /admin_password)' 명령어를 통해 확인 가능)
6
bosh_director_port: 25555 # BOSH director port
7
bosh_oauth_port: 8443 # BOSH oauth port
8
bosh_version: 271.2 # BOSH version('bosh env' 명령어를 통해 확인 가능, on-demand service용, e.g. "271.2")
9
10
# PAAS-TA INFO
11
system_domain: "61.252.53.246.xip.io" # Domain (xip.io를 사용하는 경우 HAProxy Public IP와 동일)
12
paasta_admin_username: "admin" # PaaS-TA Admin Username
13
paasta_admin_password: "admin" # PaaS-TA Admin Password
14
paasta_nats_ip: "10.0.1.121"
15
paasta_nats_port: 4222
16
paasta_nats_user: "nats"
17
paasta_nats_password: "7EZB5ZkMLMqT73h2Jh3UsqO" # PaaS-TA Nats Password (CredHub 로그인후 'credhub get -n /micro-bosh/paasta/nats_password' 명령어를 통해 확인 가능)
18
paasta_nats_private_networks_name: "default" # PaaS-TA Nats 의 Network 이름
19
paasta_database_ips: "10.0.1.123" # PaaS-TA Database IP (e.g. "10.0.1.123")
20
paasta_database_port: 5524 # PaaS-TA Database Port (e.g. 5524(postgresql)/13307(mysql)) -- Do Not Use "3306"&"13306" in mysql
21
paasta_database_type: "postgresql" # PaaS-TA Database Type (e.g. "postgresql" or "mysql")
22
paasta_database_driver_class: "org.postgresql.Driver" # PaaS-TA Database driver-class (e.g. "org.postgresql.Driver" or "com.mysql.jdbc.Driver")
23
paasta_cc_db_id: "cloud_controller" # CCDB ID (e.g. "cloud_controller")
24
paasta_cc_db_password: "cc_admin" # CCDB Password (e.g. "cc_admin")
25
paasta_uaa_db_id: "uaa" # UAADB ID (e.g. "uaa")
26
paasta_uaa_db_password: "uaa_admin" # UAADB Password (e.g. "uaa_admin")
27
paasta_api_version: "v3"
28
29
# UAAC INFO
30
uaa_client_admin_id: "admin" # UAAC Admin Client Admin ID
31
uaa_client_admin_secret: "admin-secret" # UAAC Admin Client에 접근하기 위한 Secret 변수
32
uaa_client_portal_secret: "clientsecret" # UAAC Portal Client에 접근하기 위한 Secret 변수
33
34
# Monitoring INFO
35
metric_url: "10.0.161.101" # Monitoring InfluxDB IP
36
syslog_address: "10.0.121.100" # Logsearch의 ls-router IP
37
syslog_port: "2514" # Logsearch의 ls-router Port
38
syslog_transport: "relp" # Logsearch Protocol
39
saas_monitoring_url: "61.252.53.248" # Pinpoint HAProxy WEBUI의 Public IP
40
monitoring_api_url: "61.252.53.241" # Monitoring-WEB의 Public IP
41
42
### Portal INFO
43
portal_web_user_ip: "52.78.88.252"
44
portal_web_user_url: "http://portal-web-user.52.78.88.252.xip.io"
45
46
### ETC INFO
47
abacus_url: "http://abacus.61.252.53.248.xip.io" # abacus url (e.g. "http://abacus.xxx.xxx.xxx.xxx.xip.io")
Copied!
  • Deployment YAML에서 사용하는 변수 파일을 서버 환경에 맞게 수정한다.
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/source-control-service/vars.yml
1
# STEMCELL
2
stemcell_os: "ubuntu-xenial" # stemcell os
3
stemcell_version: "621.94" # stemcell version
4
5
# VM_TYPE
6
vm_type_small: "minimal" # vm type small
7
8
# NETWORK
9
private_networks_name: "default" # private network name
10
public_networks_name: "vip" # public network name
11
12
# SCM-SERVER
13
scm_azs: [z3] # scm : azs
14
scm_instances: 1 # scm : instances (1)
15
scm_persistent_disk_type: "30GB" # scm : persistent disk type
16
scm_private_ips: "<SCM_PRIVATE_IPS>" # scm : private ips (e.g. "10.0.81.41")
17
18
# MARIA-DB# MARIA_DB
19
mariadb_azs: [z3] # mariadb : azs
20
mariadb_instances: 1 # mariadb : instances (1)
21
mariadb_persistent_disk_type: "2GB" # mariadb : persistent disk type
22
mariadb_private_ips: "<MARIADB_PRIVATE_IPS>" # mariadb : private ips (e.g. "10.0.81.42")
23
mariadb_port: "<MARIADB_PORT>" # mariadb : database port (e.g. 31306) -- Do Not Use "3306"
24
mariadb_admin_password: "<MARIADB_ADMIN_PASSWORD>" # mariadb : database admin password (e.g. "!paas_ta202")
25
mariadb_broker_username: "<MARIADB_BROKER_USERNAME>" # mariadb : service-broker-user id (e.g. "sourcecontrol")
26
mariadb_broker_password: "<MARIADB_BROKER_PASSWORD>" # mariadb : service-broker-user password (e.g. "!scadmin2017")
27
28
# HAPROXY
29
haproxy_azs: [z7] # haproxy : azs
30
haproxy_instances: 1 # haproxy : instances (1)
31
haproxy_persistent_disk_type: "2GB" # haproxy : persistent disk type
32
haproxy_private_ips: "<HAPROXY_PRIVATE_IPS>" # haproxy : private ips (e.g. "10.0.0.31")
33
haproxy_public_ips: "<HAPROXY_PUBLIC_IPS>" # haproxy : public ips (e.g. "101.101.101.5")
34
35
# WEB-UI
36
web_ui_azs: [z3] # web-ui : azs
37
web_ui_instances: 1 # web-ui : instances (1)
38
web_ui_persistent_disk_type: "2GB" # web-ui : persistent disk type
39
web_ui_private_ips: "<WEB_UI_PRIVATE_IPS>" # web-ui : private ips (e.g. "10.0.81.44")
40
41
# SCM-API
42
api_azs: [z3] # scm-api : azs
43
api_instances: 1 # scm-api : instances (1)
44
api_persistent_disk_type: "2GB" # scm-api : persistent disk type
45
api_private_ips: "<API_PRIVATE_IPS>" # scm-api : private ips (e.g. "10.0.81.45")
46
47
# SERVICE-BROKER
48
broker_azs: [z3] # service-broker : azs
49
broker_instances: 1 # service-broker : instances (1)
50
broker_persistent_disk_type: "2GB" # service-broker : persistent disk type
51
broker_private_ips: "<BROKER_PRIVATE_IPS>" # service-broker : private ips (e.g. "10.0.81.46")
52
53
# UAAC
54
uaa_client_sc_id: "scclient" # source-control-service uaa client id
55
uaa_client_sc_secret: "clientsecret" # source-control-service uaa client secret
Copied!

2.5. 서비스 설치

  • 서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고, Option file을 추가할지 선택한다.
    (선택) -o operations/use-compiled-releases.yml (ubuntu-xenial/621.94로 컴파일 된 릴리즈 사용)
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/source-control-service/deploy.sh
1
#!/bin/bash
2
3
# VARIABLES
4
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
5
CURRENT_IAAS="${CURRENT_IAAS}" # IaaS Information (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 aws/azure/gcp/openstack/vsphere 입력)
6
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
7
8
# DEPLOY
9
bosh -e ${BOSH_ENVIRONMENT} -n -d source-control-service deploy --no-redact source-control-service.yml \
10
-o operations/${CURRENT_IAAS}-network.yml \
11
-l ${COMMON_VARS_PATH} \
12
-l vars.yml
Copied!
  • 서비스를 설치한다.
1
$ cd ~/workspace/paasta-5.5.1/deployment/service-deployment/source-control-service
2
$ sh ./deploy.sh
Copied!

2.6. 서비스 설치 - 다운로드 된 PaaS-TA Release 파일 이용 방식

  • 서비스 설치에 필요한 릴리즈 파일을 다운로드 받아 Local machine의 서비스 설치 작업 경로로 위치시킨다.
  • 설치 릴리즈 파일 다운로드 : paasta-sourcecontrol-release-1.0.1.tgz
1
# 릴리즈 다운로드 파일 위치 경로 생성
2
$ mkdir -p ~/workspace/paasta-5.5.1/release/service
3
4
# 릴리즈 파일 다운로드 및 파일 경로 확인
5
$ ls ~/workspace/paasta-5.5.1/release/service
6
paasta-sourcecontrol-release-1.0.1.tgz
Copied!
  • 서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고 Option file 및 변수를 추가한다.
    (추가) -o operations/use-offline-releases.yml (미리 다운받은 offline 릴리즈 사용)
    (추가) -v releases_dir=""
$ vi ~/workspace/paasta-5.5.1/deployment/service-deployment/source-control-service/deploy.sh
1
#!/bin/bash
2
3
# VARIABLES
4
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>" # common_vars.yml File Path (e.g. ../../common/common_vars.yml)
5
CURRENT_IAAS="${CURRENT_IAAS}" # IaaS Information (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 aws/azure/gcp/openstack/vsphere 입력)
6
BOSH_ENVIRONMENT="${BOSH_ENVIRONMENT}" # bosh director alias name (PaaS-TA에서 제공되는 create-bosh-login.sh 미 사용시 bosh envs에서 이름을 확인하여 입력)
7
8
# DEPLOY
9
bosh -e ${BOSH_ENVIRONMENT} -n -d source-control-service deploy --no-redact source-control-service.yml \
10
-o operations/${CURRENT_IAAS}-network.yml \
11
-l ${COMMON_VARS_PATH} \
12
-l vars.yml \
13
-v releases_dir="/home/ubuntu/workspace/paasta-5.5.1/release"
Copied!
  • 서비스를 설치한다.
1
$ cd ~/workspace/paasta-5.5.1/deployment/service-deployment/source-control-service
2
$ sh ./deploy.sh
Copied!

2.7. 서비스 설치 확인

설치 완료된 서비스를 확인한다.
$ bosh -e micro-bosh -d source-control-service vms
1
Using environment '10.0.1.6' as client 'admin'
2
3
Task 7847. Done
4
5
Deployment 'source-control-service'
6
7
Instance Process State AZ IPs VM CID VM Type Active
8
haproxy/878b393c-d817-4e71-8fe5-553ddf87d362 running z5 115.68.47.179 vm-cc4c774d-9857-4b3a-9ffc-5f836098eb4e minimal true
9
10.30.107.123
10
mariadb/90ea7861-57ed-43f7-853d-25712a67ba2a running z5 10.30.107.122 vm-6952fb76-b4d6-4f53-86cb-b0517a76f0d0 minimal true
11
scm-server/6e23addc-33c7-4bb0-af95-d66420f15c06 running z5 10.30.107.121 vm-08eb6dd3-04ae-435c-9558-9b78286b730c minimal true
12
sourcecontrol-api/3ecb90fa-2211-4df6-82bb-5c91ed9a4310 running z5 10.30.107.125 vm-ee4daa28-3e10-4409-9d6f-ce566d54e8a5 minimal true
13
sourcecontrol-broker/ec83edb5-130f-4a91-9ac1-20fb622ed0a2 running z5 10.30.107.126 vm-23d1a9fc-30d2-4a0f-8631-df8807fc8612 minimal true
14
sourcecontrol-webui/840278e2-e1a2-4a30-b904-68538c7cd06f running z5 10.30.107.124 vm-0f7300dd-63b5-4399-b1fd-35aeccffac5c minimal true
15
16
6 vms
17
18
Succeeded
Copied!

3. 형상관리 서비스 관리 및 신청

3.1. 서비스 브로커 등록

서비스의 설치가 완료 되면, PaaS-TA 포탈에서 서비스를 사용하기 위해 형상관리 서비스 브로커를 등록해 주어야 한다. 서비스 브로커 등록 시에는 개방형 클라우드 플랫폼에서 서비스 브로커를 등록 할 수 있는 권한을 가진 사용자로 로그인 되어 있어야 한다.
  • 서비스 브로커 목록을 확인한다
    $ cf service-brokers
1
Getting service brokers as admin...
2
3
name url
4
No service brokers found
Copied!
  • 형상관리 서비스 브로커를 등록한다.
    $ cf create-service-broker [SERVICE_BROKER] [USERNAME] [PASSWORD] [SERVICE_BROKER_URL]
    • [SERVICE_BROKER] : 서비스 브로커 명
    • [USERNAME] / [PASSWORD] : 서비스 브로커에 접근할 수 있는 사용자 ID / PASSWORD
    • [SERVICE_BROKER_URL] : 서비스 브로커 접근 URL
1
### e.g. 형상관리 서비스 브로커 등록
2
$ cf create-service-broker paasta-sourcecontrol-broker admin cloudfoundry http://10.30.107.126:8080
3
Creating service broker paasta-sourcecontrol-broker as admin...
4
OK
Copied!
  • 등록된 형상관리 서비스 브로커를 확인한다.
    $ cf service-brokers
1
Getting service brokers as admin...
2
3
name url
4
paasta-sourcecontrol-broker http://10.30.107.126:8080
Copied!
  • 형상관리 서비스의 서비스 접근 정보를 확인한다.
    $ cf service-access -b paasta-sourcecontrol-broker
1
Getting service access for broker paasta-sourcecontrol-broker as admin...
2
broker: paasta-sourcecontrol-broker
3
service plan access orgs
4
p-paasta-sourcecontrol Default none
Copied!
  • 형상관리 서비스의 서비스 접근 허용을 설정(전체)하고 서비스 접근 정보를 재확인 한다.
    $ cf enable-service-access p-paasta-sourcecontrol $ cf service-access -b paasta-sourcecontrol-broker
1
$ cf enable-service-access p-paasta-sourcecontrol
2
Enabling access to all plans of service p-paasta-sourcecontrol for all orgs as admin...
3
OK
4
5
$ cf service-access -b paasta-sourcecontrol-broker
6
Getting service access for broker paasta-sourcecontrol-broker as admin...
7
broker: paasta-sourcecontrol-broker
8
service plan access orgs
9
p-paasta-sourcecontrol Default all
Copied!

3.2. UAA Client 등록

  • uaac server의 endpoint를 설정한다.
1
# endpoint 설정
2
$ uaac target https://uaa.<DOMAIN> --skip-ssl-validation
3
4
# target 확인
5
$ uaac target
6
Target: https://uaa.<DOMAIN>
7
Context: uaa_admin, from client uaa_admin
Copied!
  • uaac 로그인을 한다.
1
$ uaac token client get <UAA_ADMIN_CLIENT_ID> -s <UAA_ADMIN_CLIENT_SECRET>
2
Successfully fetched token via client credentials grant.
3
Target: https://uaa.<DOMAIN>
4
Context: admin, from client admin
Copied!
  • 형상관리 서비스 계정을 생성 한다. $ uaac client add -s --redirect_uri <형상관리서비스 대시보드 URI> --scope <퍼미션 범위> --authorized_grant_types <권한 타입> --authorities=<권한 퍼미션> --autoapprove=<자동승인권한>
    • : uaac 클라이언트 id
    • : uaac 클라이언트 secret
    • <형상관리서비스 대시보드 URI> : 성공적으로 리다이렉션 할 형상관리서비스 대시보드 URI
      ("http://:8080, http://:8080/repositories, http://:8080/repositories/user")
    • <퍼미션 범위> : 클라이언트가 사용자를 대신하여 얻을 수있는 허용 범위 목록
    • <권한 타입> : 서비스가 제공하는 API를 사용할 수 있는 권한 목록
    • <권한 퍼미션> : 클라이언트에 부여 된 권한 목록
    • <자동승인권한> : 사용자 승인이 필요하지 않은 권한 목록
1
# e.g. 형상관리 서비스 계정 생성
2
$ uaac client add scclient -s clientsecret --redirect_uri "http://115.68.47.179:8080 http://115.68.47.179:8080/repositories http://115.68.47.179:8080/repositories/user" \
3
--scope "cloud_controller_service_permissions.read , openid , cloud_controller.read , cloud_controller.write , cloud_controller.admin" \
4
--authorized_grant_types "authorization_code , client_credentials , refresh_token" \
5
--authorities="uaa.resource" \
6
--autoapprove="openid , cloud_controller_service_permissions.read"
7
8
# e.g. 형상관리 서비스 계정 생성 확인
9
$ uaac clients
10
scclient
11
scope: cloud_controller.read cloud_controller.write cloud_controller_service_permissions.read openid
12
cloud_controller.admin
13
resource_ids: none
14
authorized_grant_types: refresh_token client_credentials authorization_code
15
redirect_uri: http://115.68.47.179:8080 http://115.68.47.179:8080/repositories http://115.68.47.179:8080/repositories/user
16
autoapprove: cloud_controller_service_permissions.read openid
17
authorities: uaa.resource
18
name: scclient
19
lastmodified: 1542894096080
Copied!

3.3. 서비스 신청

  • 형상관리 서비스 사용을 위해 서비스를 신청 한다.
$ cf create-service [SERVICE] [PLAN] [SERVICE_INSTANCE] [-c PARAMETERS_AS_JSON]
  • [SERVICE] / [PLAN] : 서비스 명과 서비스 플랜
  • [SERVICE_INSTANCE] : 서비스 인스턴스 명 (내 서비스 목록에서 보여지는 명칭)
  • [-c PARAMETERS_AS_JSON] : JSON 형식의 파라미터 (형상관리 서비스 신청 시, owner, org_name 파라미터는 필수)
1
### e.g. 형상관리 서비스 신청
2
$ cf create-service p-paasta-sourcecontrol Default paasta-sourcecontrol -c '{"owner":"demo", "org_name":"demo"}'
3
service plans description
4
paasta-sourcecontrol Default A paasta source control service for application development.provision parameters : parameters {owner : {owner}, org_name : {org_name}} paasta-sourcecontrol-broker
5
6
### e.g. 형상관리 서비스 확인
7
$ cf services
8
Getting services in org system / space dev as admin...
9
10
name service plan bound apps last operation broker upgrade available
11
paasta-sourcecontrol p-paasta-sourcecontrol Default create succeeded paasta-sourcecontrol-broker
Copied!
  • 서비스 상세의 대시보드 URL 정보를 확인하여 서비스에 접근한다.
    1
    ### 서비스 상세 정보의 Dashboard URL을 확인한다.
    2
    $ cf service paasta-sourcecontrol
    3
    ... (생략) ...
    4
    Dashboard: http://115.68.47.179:8080/repositories/user/b840ecb4-15fb-4b35-a9fc-185f42f0de37
    5
    Service broker: paasta-sourcecontrol-broker
    6
    ... (생략) ...
    Copied!
Last modified 8mo ago