Container Sevice 설치 가이드

Table of Contents

Deprecated

※ 본 문서는 PaaS-TA 5.0 이하의 버전까지 지원한다.

1. 문서 개요

1.1. 목적

본 문서(Container 서비스팩 설치 가이드)는 개방형 PaaS 플랫폼 고도화 및 개발자 지원 환경 기반의 Open PaaS에서 제공되는 서비스팩인 Container 서비스팩을 Bosh를 이용하여 설치 및 서비스 등록하는 방법을 기술하였다.

PaaS-TA 3.5 버전부터는 Bosh 2.0 기반으로 배포(deploy)를 진행한다. 기존 Bosh 1.0 기반으로 설치를 원할 경우에는 PaaS-TA 3.1 이하 버전의 문서를 참고한다.

1.2. 범위

설치 범위는 Container 서비스팩을 검증하기 위한 기본 설치를 기준으로 작성하였다.

1.3. 시스템 구성도

본 문서의 설치된 시스템 구성도이다. Container 서비스 Server, Container 서비스 브로커, Private Image Registry 로 최소사항을 구성하였다.

VM명

인스턴스수

vCPU 수

메모리(GB)

디스크(GB)

master

1

1

4G

Root 4G + 영구디스크 50G

worker

N

8

16G

Root 4G + 영구디스크 100G

container-service-api

N

1

1G

Root 4G

container-service-common-api

N

1

1G

Root 4G

container-service-broker

N

1

1G

Root 4G

container-service-dashboard

1

1

1G

Root 4G

private-image-repository

1

1

1G

Root 4G + 영구디스크 10G

DBMS (MariaDB)

1

1

2G

Root 4G + 영구디스크 20G

HAProxy

1

1

2G

Root 4G

1.4. 참고 자료

http://bosh.io/docs http://docs.cloudfoundry.org

2. Container 서비스 설치

2.1. Prerequisite

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

  • ※ Container 서비스팩 설치 전 Bosh 2.0 배포 주의사항

    IaaS 환경이 OPENSTACK 인 경우 bosh deploy 시 /home/{inception_os_user_name}/workspace/paasta-5.0/deployment/bosh-deployment/openstack/disable-readable-vm-names.yml 파일을 옵션으로 추가한 후 배포한다.

2.2. Stemcell 확인

Stemcell 목록을 확인하여 서비스 설치에 필요한 Stemcell이 업로드 되어 있는 것을 확인한다. (PaaS-TA 5.0 과 동일 stemcell 사용)

$ 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  315.64*  ubuntu-xenial  -    ami-0297ff649e8eea21b  

(*) Currently deployed

1 stemcells

Succeeded

2.3. Deployment 다운로드

서비스 설치에 필요한 Deployment를 Git Repository에서 받아 서비스 설치 작업 경로로 위치시킨다.

# Deployment 다운로드 파일 위치 경로 생성 및 설치 경로 이동
$ mkdir -p ~/workspace/paasta-5.0/deployment
$ cd ~/workspace/paasta-5.0/deployment

# Deployment 파일 다운로드
$ git clone https://github.com/PaaS-TA/service-deployment.git -b v5.0.3

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

Using environment '10.0.1.6' as client 'admin'

azs:
- cloud_properties:
    availability_zone: ap-northeast-2a
  name: z1
- cloud_properties:
    availability_zone: ap-northeast-2a
  name: z2

... ((생략)) ...

disk_types:
- disk_size: 1024
  name: default
- disk_size: 1024
  name: 1GB

... ((생략)) ...

networks:
- name: default
  subnets:
  - az: z1
    cloud_properties:
      security_groups: paasta-security-group
      subnet: subnet-00000000000000000
    dns:
    - 8.8.8.8
    gateway: 10.0.1.1
    range: 10.0.1.0/24
    reserved:
    - 10.0.1.2 - 10.0.1.9
    static:
    - 10.0.1.10 - 10.0.1.120

... ((생략)) ...

vm_types:
- cloud_properties:
    ephemeral_disk:
      size: 3000
      type: gp2
    instance_type: t2.small
  name: minimal
- cloud_properties:
    ephemeral_disk:
      size: 10000
      type: gp2
    instance_type: t2.small
  name: small

... ((생략)) ...

Succeeded
  • Deployment YAML에서 사용하는 변수 파일을 서버 환경에 맞게 수정한다.

$ vi ~/workspace/paasta-5.0/deployment/service-deployment/container-service/{IAAS}-vars.yml (e.g. {IAAS} :: openstack)

# BOSH NAME
director_name: "micro-bosh"                                                   # bosh name (caas_cluster_name에 필요.)

# IAAS
auth_url: 'http://<IAAS-IP>:5000/v3'                                          # auth url
openstack_domain: '<OPENSTACK_DOMAIN>'                                        # openstack domain
openstack_username: '<OPENSTACK_USERNAME>'                                    # openstack username
openstack_password: '<OPENSTACK_PASSWORD>'                                    # openstack password
openstack_project_id: '<OPENSTACK_PROJECT_ID>'                                # openstack project id
region: '<OPENSTACK_REGION>'                                                  # region
ignore-volume-az: true                                                        # ignore volume az (default : true)

# STEMCELL
stemcell_os: "ubuntu-xenial"                                                  # stemcell os
stemcell_version: "315.64"                                                    # stemcell version
stemcell_alias: "xenial"                                                      # stemcell alias

# VM_TYPE
vm_type_small: "small"                                                        # vm type small
vm_type_small_highmem_16GB: "small-highmem-16GB"                              # vm type small highmem
vm_type_small_highmem_16GB_100GB: "small-highmem-16GB"                        # vm type small highmem_100GB
vm_type_caas_small: "small"                                                   # vm type small for caas's etc
vm_type_caas_small_api: "small"                                               # vm type small for caas's api

# NETWORK
private_networks_name: "default"                                              # private network name
public_networks_name: "vip"                                                   # public network name

# IPS
caas_master_public_url: "<CAAS_MASTER_PUBLIC_URL>"                            # caas master's public IP
haproxy_public_url: "<HAPROXY_PUBLIC_URL>"                                    # haproxy's public IP

# CREDHUB
credhub_admin_client_secret: "<CREDHUB_ADMIN_CLIENT_SECRET>"                  # credhub admin secret ('$(bosh int <creds.yml FILE_PATH> --path /credhub_admin_client_secret)' 명령어를 통해 확인 가능 )

# CAAS UAAC CLIENT
paasta_uaa_oauth_client_id: "<PAASTA_UAA_OAUTH_CLIENT_ID>"                            # Container service's UAA Client Id (e.g. caasclient)
paasta_uaa_oauth_client_secret: "<PAASTA_UAA_OAUTH_CLIENT_SECRET>"                    # Container service's UAA Client secret (e.g. clientsecret)

# HAPROXY
haproxy_http_port: 8080                                                       # haproxy port
haproxy_azs: [z7]                                                             # haproxy azs

# MARIADB
mariadb_port: "13306"                                                         # mariadb port (e.g. 13306)-- Do Not Use "3306"
mariadb_azs: [z5]                                                             # mariadb azs
mariadb_persistent_disk_type: "10GB"                                          # mariadb persistent disk type
mariadb_admin_user_id: "<MARIADB_ADMIN_USER_ID>"                              # mariadb admin user name (e.g. root)
mariadb_admin_user_password: "<MARIADB_ADMIN_USER_PASSWORD>"                  # mariadb admin user password (e.g. paasta!admin)
mariadb_role_set_administrator_code_name: "Administrator"                     # administrator role's code name (e.g. Administrator)
mariadb_role_set_administrator_code: "RS0001"                                 # administrator role's code (e.g. RS0001)
mariadb_role_set_regular_user_code_name: "Regular User"                       # regular user role's code name (e.g. Regular User)
mariadb_role_set_regular_user_code: "RS0002"                                  # regular user role's code (e.g. RS0002)
mariadb_role_set_init_user_code_name: "Init User"                             # init user role's code name (e.g. Init User)
mariadb_role_set_init_user_code: "RS0003"                                     # init user role's code (e.g. RS0003)

# DASHBOARD
caas_dashboard_instances: 1                                                   # caas dashboard instances
caas_dashboard_port: 8091                                                     # caas dashboard port
caas_dashboard_azs: [z6]                                                      # caas dashboard azs
caas_dashboard_management_security_enabled: false                             # caas dashboard management security (default : false)
caas_dashboard_logging_level: "INFO"                                          # caas dashboard logging level

# API
caas_api_instances: 1                                                         # caas api instances
caas_api_port: 3333                                                           # caas api port
caas_api_azs: [z6]                                                            # caas api azs
caas_api_management_security_enabled: false                                   # caas api management security (default : false)
caas_api_logging_level: "INFO"                                                # caas api logging level

# COMMON API
caas_common_api_instances: 1                                                  # caas common api instances
caas_common_api_port: 3334                                                    # caas common api port
caas_common_api_azs: [z6]                                                     # caas common api azs
caas_common_api_logging_level: "INFO"                                         # caas common api logging level

# SERVICE BROKER
caas_service_broker_instances: 1                                              # caas service broker instances
caas_service_broker_port: 8888                                                # caas service broker port
caas_service_broker_azs: [z6]                                                 # caas service broker azs

# PRIVATE IMAGE REPOSITORY
private_image_repository_azs: [z7]                                                     # private image repository azs
private_image_repository_port: 15001                                                   # private image repository port (e.g. 15001)-- Do Not Use "5000"
private_image_repository_root_directory: "/var/vcap/data/private-image-repository"     # private image repository root directory
private_image_repository_public_url: "<PRIVATE_IMAGE_REPOSITORY_PUBLIC_URL>"           # private image repository's public IP
private_image_repository_persistent_disk_type: "10GB"                                  # private image repository's persistent disk type

# ADDON
caas_apply_addons_azs: [z5]                                                    # caas apply addons azs

# MASTER
caas_master_backend_port: "8443"                                               # caas master backend port (default : 8443)
caas_master_port: "8443"                                                       # caas master port (default : 8443)
caas_master_azs: [z7]                                                          # caas master azs
caas_master_persistent_disk_type: "50GB"                                       # caas master's persistent disk type

# WORKER
caas_worker_instances: 3                                                       # caas worker node instances (N)
caas_worker_azs: [z4,z5,z6]                                                    # caas worker node azs

# JENKINS
jenkins_broker_instances: 1                                                                    # jenkins broker instances
jenkins_broker_port: 8787                                                                      # jenkins broker port
jenkins_broker_azs: [z6]                                                                       # jenkins broker azs
jenkins_namespace: "paasta-jenkins"                                                            # jenkins namespace
jenkins_secret_file: "/var/vcap/jobs/container-jenkins-broker/data/docker-secret.yml"          # docker file directory for create jenkins's secret
jenkins_namespace_file: "/var/vcap/jobs/container-jenkins-broker/data/create-namespace.yml"    # docker file directory for create jenkins's namespace

2.5. 서비스 설치

  • 서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정한다.

$ vi ~/workspace/paasta-5.0/deployment/service-deployment/container-service/deploy-{IAAS}.sh

#!/bin/bash

# VARIABLES
BOSH_NAME="<BOSH_NAME>"                             # bosh name (e.g. micro-bosh)
IAAS="openstack"                                    # IaaS (e.g. aws/azure/gcp/openstack/vsphere)
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>"          # common_vars.yml File Path (e.g. /home/ubuntu/paasta-5.0/common/common_vars.yml)
DEPLOYMENT_NAME="container-service"                 # deployment name

# DEPLOY
bosh -e ${BOSH_NAME} -n -d ${DEPLOYMENT_NAME} deploy --no-redact container-service.yml \
    -l ${COMMON_VARS_PATH} \
    -l ${IAAS}-vars.yml \
    -o operations/paasta-container-service/${IAAS}-network.yml \
    -o operations/iaas/${IAAS}/cloud-provider.yml \
    -o operations/rename.yml \
    -o operations/misc/single-master.yml \
    -o operations/misc/first-time-deploy.yml \
    -v deployment_name=${DEPLOYMENT_NAME}
  • 서비스 설치 전 remove-all-addons.sh 을 환경에 맞게 수정한 뒤 실행한다.

    $ cd ~/workspace/paasta-5.0/deployment/service-deployment/container-service/operations  
    $ vim remove-all-addons.sh  
    $ sh ./remove-all-addons.sh
  • 서비스를 설치한다.

    $ cd ~/workspace/paasta-5.0/deployment/service-deployment/container-service  
    $ sh ./deploy-{IAAS}.sh

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

# 릴리즈 다운로드 파일 위치 경로 생성
$ mkdir -p ~/workspace/paasta-5.0/release/service

# 릴리즈 파일 다운로드(paasta-container-service-projects-release-2.0.tgz) 및 파일 경로 확인
$ ls ~/workspace/paasta-5.0/release/service
paasta-container-service-projects-release-2.0.1.tgz
  • 서버 환경에 맞추어 Deploy 스크립트 파일의 VARIABLES 설정을 수정하고 Option file 및 변수를 추가한다.

    (추가) -o operations/use-compiled-releases.yml

    (추가) -v inception_os_user_name=""

$ vi ~/workspace/paasta-5.0/deployment/service-deployment/container-service/deploy-{IAAS}.sh

#!/bin/bash

# VARIABLES
BOSH_NAME="<BOSH_NAME>"                             # bosh name (e.g. micro-bosh)
IAAS="openstack"                                    # IaaS (e.g. aws/azure/gcp/openstack/vsphere)
COMMON_VARS_PATH="<COMMON_VARS_FILE_PATH>"          # common_vars.yml File Path (e.g. /home/ubuntu/workspace/paasta-5.0/deployment/common/common_vars.yml)
DEPLOYMENT_NAME="container-service"                 # deployment name

# DEPLOY
bosh -e ${BOSH_NAME} -n -d ${DEPLOYMENT_NAME} deploy --no-redact container-service.yml \
    -l ${COMMON_VARS_PATH} \
    -l ${IAAS}-vars.yml \
    -o operations/use-compiled-releases.yml \
    -o operations/paasta-container-service/${IAAS}-network.yml \
    -o operations/iaas/${IAAS}/cloud-provider.yml \
    -o operations/rename.yml \
    -o operations/misc/single-master.yml \
    -o operations/misc/first-time-deploy.yml \
    -v deployment_name=${DEPLOYMENT_NAME} \
    -v inception_os_user_name="ubuntu"
  • 서비스 설치 전 remove-all-addons.sh 을 환경에 맞게 수정한 뒤 실행한다.

    $ cd ~/workspace/paasta-5.0/deployment/service-deployment/container-service/operations  
    $ vim remove-all-addons.sh  
    $ sh ./remove-all-addons.sh
  • 서비스를 설치한다.

    $ cd ~/workspace/paasta-5.0/deployment/service-deployment/container-service  
    $ sh ./deploy-{IAAS}.sh

2.7. 서비스 설치 확인

설치 된 서비스를 확인한다.

$ bosh -e micro-bosh -d container-service vms

Using environment '10.0.1.6' as client 'admin'

Task 294249. Done

Deployment 'container-service'

Instance                                                           Process State  AZ  IPs            VM CID                                VM Type             Active  Stemcell  
container-jenkins-broker/129ad9e6-3fb9-48f4-a876-9bd1aeb2793d      running        z2  10.0.41.135    4a7c6cd6-d338-424d-ab30-66b563c0f0c5  small               true    -  
container-service-api/f7902066-0978-4de3-bf2d-e432b0c14199         running        z5  10.0.161.127   ab210e7e-af10-476e-8dfa-4d6081fd494c  small               true    -  
container-service-broker/e193844e-6d47-4477-a73c-b5014d4573e7      running        z6  10.0.201.141   e31e74a9-a567-4b38-9e21-b796492f3466  small               true    -  
container-service-common-api/b2b5e67b-0a5f-4943-a3da-6e9826a6f8fa  running        z5  10.0.161.128   03ad70ab-b2c1-4791-b8fb-5903b6b680ba  small               true    -  
container-service-dashboard/300fead4-4487-4a65-b77c-5e3487818453   running        z6  10.0.201.140   fec06a82-df4c-4c00-b8e8-bd646ad4e1cc  small               true    -  
haproxy/cd60739e-a6b7-436d-9fe9-a515d28629fd                       running        z7  10.0.0.126     b8bad420-e726-41c8-9aae-f7d45c2f2679  small               true    -  
                                                                                      101.55.50.201                                                                      
mariadb/9755e6a4-243f-4350-a6d8-517566c6dcbf                       running        z5  10.0.161.126   ef081b0a-7c1a-4854-a695-200d80194db2  small               true    -  
master/68782774-455e-43f7-95a4-20d09fa4936c                        running        z7  10.0.0.125     0da12a95-9f2b-4fa7-9079-d4c59b573c3a  small-highmem-16GB  true    -  
                                                                                      101.55.50.204                                                                      
private-image-repository/1a416603-ced1-4b1c-8090-5f3962309456      running        z7  10.0.0.127     895010f1-ae53-457f-bd8d-138a68ca847c  small               true    -  
                                                                                      101.55.50.202                                                                      
worker/23886843-ab6b-4ae1-a676-89f7307d5b01                        running        z5  10.0.161.125   e4eaa60c-084c-4384-ab3f-915aca22dc4c  small-highmem-16GB  true    -  
worker/3c37840f-c743-410e-81c7-f6754afb60f7                        running        z6  10.0.201.139   7a44994c-b833-4b6c-a6dd-f314d048b171  small-highmem-16GB  true    -  
worker/d6ef01d8-d783-40a6-a8f7-b43f8fd4c52f                        running        z4  10.0.121.122   ab557f46-57b7-480c-8826-ce9aac256f9f  small-highmem-16GB  true    -  

12 vms

Succeeded

3. Container 서비스 관리 및 신청

PaaS-TA 운영자 포탈을 통해 서비스를 등록하고 공개하면, PaaS-TA 사용자 포탈을 통해 서비스를 신청 하여 사용할 수 있다.

3.1. Container 서비스 브로커 등록

Container 서비스팩 배포가 완료되었으면 PaaS-TA 포탈에서 서비스 팩을 사용하기 위해서 먼저 Container 서비스 브로커를 등록해 주어야 한다. 서비스 브로커 등록 시 개방형 클라우드 플랫폼에서 서비스 브로커를 등록할 수 있는 사용자로 로그인이 되어있어야 한다.

  • 서비스 브로커 목록을 확인한다.

$ cf service-brokers
Getting service brokers as admin...

name                               url
mysql-service-broker               http://10.0.121.71:8080
  • Container 서비스 브로커를 등록한다.

$ cf create-service-broker {서비스팩 이름} {서비스팩 사용자ID} {서비스팩 사용자비밀번호} http://{서비스팩 URL}

  • 서비스팩 이름 : 서비스 팩 관리를 위해 개방형 클라우드 플랫폼에서 보여지는 명칭

  • 서비스팩 사용자 ID/비밀번호 : 서비스팩에 접근할 수 있는 사용자 ID/비밀번호

  • 서비스팩 URL : 서비스팩이 제공하는 API를 사용할 수 있는 URL

$ cf create-service-broker container-service-broker admin cloudfoundry http://xxx.xxx.xxx.xxx:8888
  • 등록된 Container 서비스 브로커를 확인한다.

$ cf service-brokers
Getting service brokers as admin...

name                       url
container-service-broker   http://xxx.xxx.xxx.xxx:8888
mysql-service-broker       http://10.0.121.71:8080
  • 접근 가능한 서비스 목록을 확인한다.

$ cf service-access
Getting service access as admin...
broker: container-service-broker
   service             plan       access   orgs
   container-service   Advanced   all      
   container-service   Micro      all      
   container-service   Small      all      

broker: mysql-service-broker
   service    plan                 access   orgs
   Mysql-DB   Mysql-Plan1-10con    all      
   Mysql-DB   Mysql-Plan2-100con   all
  • 특정 조직에 해당 서비스 접근 허용을 할당한다.

$ cf enable-service-access container-service
Enabling access to all plans of service container-service for all orgs as admin...
OK
  • 접근 가능한 서비스 목록을 확인한다.

$ cf service-access
Getting service access as admin...
broker: container-service-broker
   service             plan       access   orgs
   container-service   Advanced   all      
   container-service   Micro      all      
   container-service   Small      all      

broker: mysql-service-broker
   service    plan                 access   orgs
   Mysql-DB   Mysql-Plan1-10con    all      
   Mysql-DB   Mysql-Plan2-100con   all

3.2. Container 서비스 UAA Client 등록

UAA 포털 계정 등록 절차에 대한 순서를 확인한다.

  • Container 서비스 대시보드에 접근이 가능한 IP를 알기 위해 haproxy IP 를 확인한다.

Deployment 'container-service'

Instance                                                           Process State  AZ  IPs            VM CID                                VM Type             Active  Stemcell  
container-jenkins-broker/129ad9e6-3fb9-48f4-a876-9bd1aeb2793d      running        z2  10.0.41.135    4a7c6cd6-d338-424d-ab30-66b563c0f0c5  small               true    -  
container-service-api/f7902066-0978-4de3-bf2d-e432b0c14199         running        z5  10.0.161.127   ab210e7e-af10-476e-8dfa-4d6081fd494c  small               true    -  
container-service-broker/e193844e-6d47-4477-a73c-b5014d4573e7      running        z6  10.0.201.141   e31e74a9-a567-4b38-9e21-b796492f3466  small               true    -  
container-service-common-api/b2b5e67b-0a5f-4943-a3da-6e9826a6f8fa  running        z5  10.0.161.128   03ad70ab-b2c1-4791-b8fb-5903b6b680ba  small               true    -  
container-service-dashboard/300fead4-4487-4a65-b77c-5e3487818453   running        z6  10.0.201.140   fec06a82-df4c-4c00-b8e8-bd646ad4e1cc  small               true    -  
haproxy/cd60739e-a6b7-436d-9fe9-a515d28629fd                       running        z7  10.0.0.126     b8bad420-e726-41c8-9aae-f7d45c2f2679  small               true    -  
                                                                                      101.55.50.201                                                                      
mariadb/9755e6a4-243f-4350-a6d8-517566c6dcbf                       running        z5  10.0.161.126   ef081b0a-7c1a-4854-a695-200d80194db2  small               true    -  
master/68782774-455e-43f7-95a4-20d09fa4936c                        running        z7  10.0.0.125     0da12a95-9f2b-4fa7-9079-d4c59b573c3a  small-highmem-16GB  true    -  
                                                                                      101.55.50.204                                                                      
private-image-repository/1a416603-ced1-4b1c-8090-5f3962309456      running        z7  10.0.0.127     895010f1-ae53-457f-bd8d-138a68ca847c  small               true    -  
                                                                                      101.55.50.202                                                                      
worker/23886843-ab6b-4ae1-a676-89f7307d5b01                        running        z5  10.0.161.125   e4eaa60c-084c-4384-ab3f-915aca22dc4c  small-highmem-16GB  true    -  
worker/3c37840f-c743-410e-81c7-f6754afb60f7                        running        z6  10.0.201.139   7a44994c-b833-4b6c-a6dd-f314d048b171  small-highmem-16GB  true    -  
worker/d6ef01d8-d783-40a6-a8f7-b43f8fd4c52f                        running        z4  10.0.121.122   ab557f46-57b7-480c-8826-ce9aac256f9f  small-highmem-16GB  true    -  

12 vms

Succeeded
  • uaac server의 endpoint를 설정한다.

# 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
  • Container 서비스 계정 생성을 한다.

$ uaac client add caasclient -s {클라이언트 비밀번호} --redirect_uri {컨테이너 서비스 대시보드 URI} --scope {퍼미션 범위} --authorized_grant_types {권한 타입} --authorities={권한 퍼미션} --autoapprove={자동승인권한}

  • : uaac 클라이언트 id

  • : uaac 클라이언트 secret

  • : 성공적으로 리다이렉션 할 Logging 서비스 접근 URI (http://)

  • <퍼미션 범위> : 클라이언트가 사용자를 대신하여 얻을 수있는 허용 범위 목록

  • <권한 타입> : 서비스가 제공하는 API를 사용할 수 있는 권한 목록

  • <권한 퍼미션> : 클라이언트에 부여 된 권한 목록

  • <자동승인권한> : 사용자 승인이 필요하지 않은 권한 목록

# e.g. Container 서비스 계정 생성
$ uaac client add caasclient -s clientsecret --redirect_uri "http://xxx.xxx.xxx.xxx:8091" --scope "cloud_controller_service_permissions.read , openid , cloud_controller.read , cloud_controller.write , cloud_controller.admin" --authorized_grant_types "authorization_code , client_credentials , refresh_token" --authorities="uaa.resource" --autoapprove="openid , cloud_controller_service_permissions.read"

# e.g. Container 서비스 계정 생성 확인
$ uaac clients
caasclient
    scope: cloud_controller.read cloud_controller.write cloud_controller_service_permissions.read openid cloud_controller.admin
    resource_ids: none
    authorized_grant_types: refresh_token client_credentials authorization_code
    redirect_uri: http://101.55.50.201:8091
    autoapprove: cloud_controller_service_permissions.read openid
    authorities: uaa.resource
    name: caasclient
    lastmodified: 1592962300888

3.3. PaaS-TA 포탈에서 Container 서비스 조회 설정

해당 설정은 PaaS-TA 포탈에 Container 서비스 상의 자원들을 간략하게 조회하기 위한 설정이다.

1) PaaS-TA 어드민 포탈에 접속한다.

2) 왼쪽 네비게이션 바에서 [설정]-[설정정보] 를 클릭한 후 나타나는 페이지의 오른쪽 상단 [인프라 등록] 버튼을 클릭하여 해당 정보들을 입력한다.

  • 해당 정보를 입력하기 위해 필요한 값들을 찾는다.

    $ bosh -e micro-bosh -d portal-api vms

    haproxy 의 IP 를 찾아 Portal_Api_Uri 에 입력한다.

    ``` Deployment 'portal-api'

Instance Process State AZ IPs VM CID VM Type Active Stemcell binary_storage/f8b140f0-6061-46a1-99fa-216d124423fe running z6 10.0.201.132 dca829c1-a76f-4771-9ffa-dd734364c6f4 portal_small true - haproxy/c248579f-b7c7-4010-9e6a-b6aab14a0d7b running z6 10.0.201.131 a3c5dca3-6989-46f4-97f0-508b3122aa85 small true - 101.55.50.211 mariadb/fba7cd79-58ba-4e70-a2dc-8fe180058665 running z6 10.0.201.130 13b2c8f8-1a99-46dc-81b1-be3a678580c0 portal_small true - paas-ta-portal-api/f73e323a-c080-407a-ba55-da54e076bc2f running z6 10.0.201.135 48f1801d-cd01-4f19-bbb0-a96f8d36c3cc portal_medium true - paas-ta-portal-common-api/d3479dfb-d6fb-46f4-b879-059eb3ba200d running z6 10.0.201.136 b391fb2f-3b74-43cf-a243-d00968cae836 portal_small true - paas-ta-portal-gateway/1eab2fe3-09ff-48da-9bb2-a4a7f8ba707c running z6 10.0.201.133 617c3f08-3e46-48c5-bb08-c867d7b97466 portal_small true - paas-ta-portal-log-api/6b3407bf-8099-4aa0-a0db-28394f512145 running z6 10.0.201.138 bbcea9e9-81c5-409e-a732-46a8835c5a54 portal_small true - paas-ta-portal-registration/27852b28-92e7-4c11-8201-e0822118e6d8 running z6 10.0.201.134 15e4c4f5-f599-474b-a779-a142943b8e5c portal_small true - paas-ta-portal-storage-api/e92c1252-dc67-43d4-9984-9340fd4fc832 running z6 10.0.201.137 5d3a0ef9-def1-49a1-975b-c4b93985b269 portal_small true -

9 vms

<br>

> $ bosh -e micro-bosh -d container-service vms
>> haproxy 의 IP 를 찾아 CaaS_Api_Uri 에 입력한다.

Using environment '10.0.1.6' as client 'admin'

Task 294249. Done

Deployment 'container-service'

Instance Process State AZ IPs VM CID VM Type Active Stemcell container-jenkins-broker/129ad9e6-3fb9-48f4-a876-9bd1aeb2793d running z2 10.0.41.135 4a7c6cd6-d338-424d-ab30-66b563c0f0c5 small true - container-service-api/f7902066-0978-4de3-bf2d-e432b0c14199 running z5 10.0.161.127 ab210e7e-af10-476e-8dfa-4d6081fd494c small true - container-service-broker/e193844e-6d47-4477-a73c-b5014d4573e7 running z6 10.0.201.141 e31e74a9-a567-4b38-9e21-b796492f3466 small true - container-service-common-api/b2b5e67b-0a5f-4943-a3da-6e9826a6f8fa running z5 10.0.161.128 03ad70ab-b2c1-4791-b8fb-5903b6b680ba small true - container-service-dashboard/300fead4-4487-4a65-b77c-5e3487818453 running z6 10.0.201.140 fec06a82-df4c-4c00-b8e8-bd646ad4e1cc small true - haproxy/cd60739e-a6b7-436d-9fe9-a515d28629fd running z7 10.0.0.126 b8bad420-e726-41c8-9aae-f7d45c2f2679 small true - 101.55.50.201 mariadb/9755e6a4-243f-4350-a6d8-517566c6dcbf running z5 10.0.161.126 ef081b0a-7c1a-4854-a695-200d80194db2 small true - master/68782774-455e-43f7-95a4-20d09fa4936c running z7 10.0.0.125 0da12a95-9f2b-4fa7-9079-d4c59b573c3a small-highmem-16GB true - 101.55.50.204 private-image-repository/1a416603-ced1-4b1c-8090-5f3962309456 running z7 10.0.0.127 895010f1-ae53-457f-bd8d-138a68ca847c small true - 101.55.50.202 worker/23886843-ab6b-4ae1-a676-89f7307d5b01 running z5 10.0.161.125 e4eaa60c-084c-4384-ab3f-915aca22dc4c small-highmem-16GB true - worker/3c37840f-c743-410e-81c7-f6754afb60f7 running z6 10.0.201.139 7a44994c-b833-4b6c-a6dd-f314d048b171 small-highmem-16GB true - worker/d6ef01d8-d783-40a6-a8f7-b43f8fd4c52f running z4 10.0.121.122 ab557f46-57b7-480c-8826-ce9aac256f9f small-highmem-16GB true -

12 vms

Succeeded

ex)

  • NAME : PaaS-TA 5.0 (Openstack)

  • Portal_Api_Uri : http://:2225

  • UAA_Uri : https://api.

  • Authorization : Basic YWRtaW46b3BlbnBhYXN0YQ==

  • 설명 : PaaS-TA 5.0 install infra

  • CaaS_Api_Uri : http://

  • CaaS_Authorization : Basic YWRtaW46UGFhUy1UQQ==

    ```

3.4. Jenkins 서비스 설정 (Optional)

해당 설정은 Jenkins 서비스에서 설치된 Jenkins 서비스를 이용하기 위한 설정이다.

1) 배포된 Jenkins 서비스 VM 목록을 확인한다.

$ bosh -e micro-bosh -d container-service vms

Deployment 'container-service'

Instance                                                           Process State  AZ  IPs            VM CID                                VM Type             Active  Stemcell  
container-jenkins-broker/129ad9e6-3fb9-48f4-a876-9bd1aeb2793d      running        z2  10.0.41.135    4a7c6cd6-d338-424d-ab30-66b563c0f0c5  small               true    -  
container-service-api/f7902066-0978-4de3-bf2d-e432b0c14199         running        z5  10.0.161.127   ab210e7e-af10-476e-8dfa-4d6081fd494c  small               true    -  
container-service-broker/e193844e-6d47-4477-a73c-b5014d4573e7      running        z6  10.0.201.141   e31e74a9-a567-4b38-9e21-b796492f3466  small               true    -  
container-service-common-api/b2b5e67b-0a5f-4943-a3da-6e9826a6f8fa  running        z5  10.0.161.128   03ad70ab-b2c1-4791-b8fb-5903b6b680ba  small               true    -  
container-service-dashboard/300fead4-4487-4a65-b77c-5e3487818453   running        z6  10.0.201.140   fec06a82-df4c-4c00-b8e8-bd646ad4e1cc  small               true    -  
haproxy/cd60739e-a6b7-436d-9fe9-a515d28629fd                       running        z7  10.0.0.126     b8bad420-e726-41c8-9aae-f7d45c2f2679  small               true    -  
                                                                                      101.55.50.201                                                                      
mariadb/9755e6a4-243f-4350-a6d8-517566c6dcbf                       running        z5  10.0.161.126   ef081b0a-7c1a-4854-a695-200d80194db2  small               true    -  
master/68782774-455e-43f7-95a4-20d09fa4936c                        running        z7  10.0.0.125     0da12a95-9f2b-4fa7-9079-d4c59b573c3a  small-highmem-16GB  true    -  
                                                                                      101.55.50.204                                                                      
private-image-repository/1a416603-ced1-4b1c-8090-5f3962309456      running        z7  10.0.0.127     895010f1-ae53-457f-bd8d-138a68ca847c  small               true    -  
                                                                                      101.55.50.202                                                                      
worker/23886843-ab6b-4ae1-a676-89f7307d5b01                        running        z5  10.0.161.125   e4eaa60c-084c-4384-ab3f-915aca22dc4c  small-highmem-16GB  true    -  
worker/3c37840f-c743-410e-81c7-f6754afb60f7                        running        z6  10.0.201.139   7a44994c-b833-4b6c-a6dd-f314d048b171  small-highmem-16GB  true    -  
worker/d6ef01d8-d783-40a6-a8f7-b43f8fd4c52f                        running        z4  10.0.121.122   ab557f46-57b7-480c-8826-ce9aac256f9f  small-highmem-16GB  true    -  

12 vms

2) Jenkins 서비스 브로커를 등록한다.

  • 서비스 브로커 목록을 확인한다.

$ cf service-brokers
Getting service brokers as admin...

name                               url
delivery-pipeline-service-broker   http://xxx.xxx.xxx.xxx:8080
  • Jenkins 서비스 브로커를 등록한다.

$ cf create-service-broker {서비스팩 이름} {서비스팩 사용자ID} {서비스팩 사용자비밀번호} http://{서비스팩 URL}

  • 서비스팩 이름 : 서비스 팩 관리를 위해 개방형 클라우드 플랫폼에서 보여지는 명칭

  • 서비스팩 사용자 ID/비밀번호 : 서비스팩에 접근할 수 있는 사용자 ID/비밀번호

  • 서비스팩 URL : 서비스팩이 제공하는 API를 사용할 수 있는 URL

$ cf create-service-broker jenkins-service-broker admin cloudfoundry http://xxx.xxx.xxx.xxx:8787
  • 등록된 Jenkins 서비스 브로커를 확인한다.

$ cf service-brokers
Getting service brokers as admin...

name                               url
jenkins-service-broker             http://xxx.xxx.xxx.xxx:8787
delivery-pipeline-service-broker   http://xxx.xxx.xxx.xxx:8080
  • 접근 가능한 서비스 목록을 확인한다.

$ cf service-access
Getting service access as admin...
broker: jenkins-service-broker
   service                     plan                        access   orgs
   container-jenkins-service   jenkins_20GB                limit     

broker: delivery-pipeline-service-broker
   service                plan                          access   orgs
   delivery-pipeline-v2   delivery-pipeline-shared      all
   delivery-pipeline-v2   delivery-pipeline-dedicated   all
  • 특정 조직에 해당 서비스 접근 허용을 할당한다.

$ cf enable-service-access container-jenkins-service
Enabling access to all plans of service container-jenkins-service for all orgs as admin...
OK
  • 접근 가능한 서비스 목록을 확인한다.

$ cf service-access
Getting service access as admin...
broker: jenkins-service-broker
   service                     plan                     access   orgs
   container-jenkins-service   jenkins_20GB             all   

broker: delivery-pipeline-service-broker
   service                plan                          access   orgs
   delivery-pipeline-v2   delivery-pipeline-shared      all
   delivery-pipeline-v2   delivery-pipeline-dedicated   all

4. 쿠버네티스 마스터 노드 IP 변경 시 인증서 갱신 (Optional)

쿠버네티스 마스터 노드의 IP가 변경되어 재설치를 하는 경우 해당 IP를 포함한 인증서를 삭제해주어야 신규 인증서가 생성되므로 이 경우 설치 스크립트는 자동으로 인증서를 삭제 후 배포를 진행한다. 만약 CredHub에 로그인이 되어 있지 않으면 아래와 같은 메세지가 나타나며 CredHub 로그인 이후 다시 시도해야 한다.

$ ./deploy-vsphere.sh
You are not currently authenticated to CredHub. Please log in to continue.
$
  • CredHub 로그인

    CredHub에 로그인이 되어있지 않은 경우 CredHub 가이드를 참조한다.

5. 서비스 삭제

서비스 삭제 시 CredHub에 로그인이 되어 있는 상태 에서 이하의 script를 실행하여 credHub의 credential 삭제 처리를 진행한다.

$ sh operations/remove-service-credentials.sh <BOSH NAME> <DEPLOYMENT NAME>

e.g.
$ sh operations/remove-service-credentials.sh micro-bosh container-service

Last updated

Was this helpful?