Container 설치 가이드(OpenStack)

1. 개요

1.1. 문서 목적

본 문서(설치가이드)는, 현 시점에서 지원되는 IaaS(Infrastructure as a Service) 중 하나인 Openstack 환경에서 개방형클라우드플랫폼(Diego) 을 설치하기 위한 가이드를 제공하는데 그 목적이 있다.

1.2. 범위

본 문서의 범위는 개방형클라우드플랫폼을 Openstack 기반에 설치하기 위한 내용으로 한정되어 있다. VMWare/AWS와 같은 다른 IaaS 환경에서의 설치는 그에 맞는 가이드 문서를 참고해야 하며, Bosh/CF release 설치 또한 해당 가이드 문서를 별도로 참조해야 한다.

1.3. 참고자료

2. Prerequisites

2.1. OpenPaas Controller 설치확인

개방형클라우드플랫폼 (OpenPaas Container) 를 설치하기 위해서는 사전에 OpenPaas Controller가 설치되어 있어야 한다.
확인하는 방법은 bosh deployments를 통해 배포된 리스트 목록으로 확인한다.

3. Open Paas Container 설치

3.1. Release Upload

배포된 설치 패키지의 OpenPaaS-Container 폴더에 있는 Open PaaS Container Bosh Release와 의존관계에 있는 garden-linux 및 etcd 를 Bosh Server로 아래와 같은 명령으로 Upload 한다.
1
bosh upload release $INSTALL_PACKAGE/OpenPaaS-Container/garden-linux-0.329.0.tgz
2
bosh upload release $INSTALL_PACKAGE/OpenPaaS-Container/etcd -20.tgz
3
bosh upload release $INSTALL_PACKAGE/OpenPaaS-Container/openpaas-container -1.0.tgz
Copied!
Release Upload는 상황에 따라 다소 차이는 있으나 보통 20-30분 정도 소요가 되며, 정상 Upload가 되면 아래의 그림과 같은 메시지가 출력된다.
[주의] Release Upload 과정에서 작업장비의 “/tmp” 폴더의 사이즈가 작을 경우 압축파일을 풀거나 묶을 때 에러가 발생할 수 있으므로, 10GB 이상 Free Size가 있는지를 확인해야 한다.
Bosh Sever에 Release가 정상적으로 Upload 되었는지는 “bosh releases” 명령으로 확인한다. bosh releases

3.2. Deployment Manifest 파일 수정하기

배포된 설치 패키지에 포함된 Sample Deployment Manifest File($INSTALL_PACKAGE/OpenPaaS-Deployment/openpaas-container-openstack- 1.0.yml)을 아래의 순서대로 설치환경에 적합하게 수정한다.

3.2.1. Name & Release

1
name: openpaas-container-openstack-1.0 # Deployment Name
2
director_uuid: 3475c880-8836-4a73-9309-c65bc9ac20c6 # Bosh Director UUID
3
releases:
4
- name: openpaas-container # container Release Name
5
version: latest # container Release Version
6
- name: openpaas-controller # controller Release Name
7
version: latest # controller Release Version
8
- name: garden-linux # garden-linux Release Name
9
version: latest # garden-linux Release Version
10
- name: etcd # etcd Release Name
11
version: latest # etcd Release Version
Copied!
Deployment Name은 설치자가 임의로 부여하는데, IaaS와 Version을 표시할 것을 권장한다. Bosh Director UUID는 “bosh status” 명령을 실행하면 출력되는 UUID 값을 넣는다.
※ Controller, Container, Garden-linux, etcd의 Release Name과 Version은 “bosh releases” 명령의 결과로 나오는 값들을 입력하도록 한다. 본 가이드에서는 각 하나의 release가 업로드 되어 있으므로 명시적 버전 대신 업로드 된 릴리즈 버전 중 최신 버전인 latest 로 지정하여 사용한다.

3.2.2. Networks

1
networks:
2
- name: openpaas-container-network # Platform이 설치될 Network Name
3
subnets:
4
- cloud_properties:
5
net_id: 7b49e746-161a-4f90-9ed6-c93e27122a1a # 네트워크 ID
6
security_groups:
7
- cf-security
8
- bosh # Security_Group
9
- default
10
dns:
11
- 8.8.8.8
12
gateway: 10.20.0.1 # Gateway IP Address
13
range: 10.20.0.0/24 # Network CIDR
14
reserved:
15
- 10.20.0.2 - 10.20.0.40
16
static:
17
- 10.20.0.50 - 10.20.0.60 # VM에 할당될 Static IP 주소 대역
18
19
type: manual
Copied!
Network Name은 설치자가 임의로 부여 가능하다. Network ID, Security_groups, Gateway, DNS Server, Network CIDR은 Openstack 구성을 직접 확인하거나 인프라 담당자에게 문의하여 정보를 얻도록 한다. Static IP 주소는 Platform을 설치할 때 개별 VM에 할당될 IP의 주소 대역으로 마찬가지로 인프라 담당자에게 할당을 받아야 한다.

3.2.3. Compilation

1
compilation:
2
cloud_properties:
3
instance_type: m1.medium # Openstack에서 설정한 Flavor 정보
4
network: openpaas-container-network # 네트워크 설정에 사용된 것과 동일한 이름
5
reuse_com
6
pilation_vms: true # compilation VMs 재사용 여부
7
workers: 6 # 동시 동작하는 VM 수
Copied!
Network Name은 3.3.2에서 정의한 것과 동일한 이름을 줘야 한다. Workers는 동시에 Compile을 수행하는 VM의 개수로 별다른 환경적 특성이 없다면 Default 값을 사용토록 한다.

3.2.4. Resource Pools

1
resource_pools:
2
- name: access_z1 # Resource Name
3
cloud_properties:
4
instance_type: m1.small # Openstack Flavor 정보
5
network: openpaas-container-network # Network Name
6
stemcell:
7
name: bosh-openstack-kvm-ubuntu-trusty-go_agent # Stemcell Name
8
version: latest # Stemcell Version
9
10
- name: brain_z1
11
cloud_properties:
12
instance_type: m1.small
13
network: openpaas-container-network
14
stemcell:
15
name: bosh-openstack-kvm-ubuntu-trusty-go_agent
16
version: latest
17
18
- name: cc_bridge_z1
19
cloud_properties:
20
instance_type: m1.small
21
network: openpaas-container-network
22
stemcell:
23
name: bosh-openstack-kvm-ubuntu-trusty-go_agent
24
version: latest
25
26
- name: cell_z1
27
cloud_properties:
28
instance_type: m1.medium
29
network: openpaas-container-network
30
stemcell:
31
name: bosh-openstack-kvm-ubuntu-trusty-go_agent
32
version: latest
33
34
- name: database_z1
35
cloud_properties:
36
instance_type: m1.medium
37
network: openpaas-container-network
38
stemcell:
39
name: bosh-openstack-kvm-ubuntu-trusty-go_agent
40
version: latest
41
42
- name: route_emitter_z1
43
cloud_properties:
44
instance_type: m1.small
45
network: openpaas-container-network
46
stemcell:
47
name: bosh-openstack-kvm-ubuntu-trusty-go_agent
48
version: latest
Copied!
Resource pool 정보는 Jobs 영역에서 각 VM들이 사용하기 위한 Resource를 사전 정의한 영역으로, 각 VM 영역의 이름으로 명명되어 있으며, 필요 크기에 따라 instance_type에 설정된 Openstack Flavor 정보를 수정한다. Stemcell Name과 Version은 “bosh stemcells” 명령어 결과로 출력되는 값들을 입력하도록 한다.

3.2.5. Update

1
update:
2
canaries: 1 # Canary instance 개수
3
canary_watch_time: 5000-120000 # Canary instance 의 health 상태 점검 대기 시간
4
max_in_flight: 1 # update instance들의 최대 병렬 처리 개수
5
serial: false # VM 순차적 Update
6
update_watch_time: 5000-120000 # canary instance 테스트 후 실제 instance update 하면서 health 상태 점검 대기 시간
7
Default 값들을 수정 없이 사용한다.
Copied!

3.2.6. Jobs

아래 Sample Jobs를 참고하여 설치 환경에 맞게 수정한다.
1
jobs:
2
- instances: 1 # VM Instance 개수
3
name: database_z1 # Job Name
4
networks:
5
- name: openpaas-container-network # Network Name
6
static_ips:
7
- 10.20.0.51 # Job(etcd_z1) VM에 할당할 IP 주소
8
9
persistent_disk: 1024
10
properties:
11
consul:
12
agent:
13
services:
14
bbs: {}
15
etcd: {}
16
metron_agent:
17
zone: z1
18
resource_pool: database_z1 # Resource Name
19
templates:
20
- name: etcd # etcd_z1 VM에 실행될 컴포넌트
21
release: etcd
22
- name: bbs
23
release: openpaas-container
24
- name: consul_agent
25
release: openpaas-controller
26
- name: metron_agent
27
release: openpaas-controller
28
update:
29
max_in_flight: 1 # update instance들의 최대 병렬처리 개수
30
serial: true # 순차적 실행여부
31
32
- instances: 1
33
name: brain_z1
34
networks:
35
- name: openpaas-container-network
36
static_ips:
37
- 10.20.0.52 # brain 노드 ip 지정
38
properties:
39
consul:
40
agent:
41
services:
42
auctioneer: {}
43
metron_agent:
44
zone: z1
45
resource_pool: brain_z1 # Zone 영역(설치되는 VM 그룹)
46
templates:
47
- name: consul_agent
48
release: openpaas-controller
49
- name: auctioneer
50
release: openpaas-container
51
- name: converger
52
release: openpaas-container
53
- name: metron_agent
54
release: openpaas-controller
55
update:
56
max_in_flight: 1
57
serial: true
58
59
- instances: 1
60
name: cell_z1
61
networks:
62
- name: openpaas-container-network
63
static_ips:
64
- 10.20.0.53 # cell 노드 ip 지정
65
properties:
66
diego:
67
rep:
68
zone: z1
69
metron_agent:
70
zone: z1
71
resource_pool: cell_z1
72
templates:
73
- name: rep
74
release: openpaas-container
75
- name: consul_agent
76
release: openpaas-controller
77
- name: garden-linux
78
release: openpaas-container
79
- name: metron_agent
80
release: openpaas-controller
81
update:
82
max_in_flight: 1
83
serial: false
84
85
- instances: 1
86
name: cc_bridge_z1
87
networks:
88
- name: openpaas-container-networks
89
static_ips:
90
- 10.20.0.54 # cc_bridge 노드 ip 지정
91
properties:
92
consul:
93
agent:
94
services:
95
- cc_uploaderr: {}
96
- nsync: {}
97
- stager: {}
98
- tps: {}
99
metron_agent:
100
zone: z1
101
resource_pool: cc_bridge_z1
102
templates:
103
- name: stager
104
release: openpaas-container
105
- name: nsync
106
release: openpaas-container
107
- name: tps
108
release: openpaas-container
109
- name: file_server
110
release: openpaas-container
111
- name: consul_agent
112
release: openpaas-controller
113
- name: metron_agent
114
release: openpaas-controller
115
update:
116
max_in_flight: 1
117
serial: false
118
119
- instances: 1
120
name: route_emitter_z1
121
networks:
122
- name: openpaas-container-network
123
static_ips:
124
- 10.20.0.56 # route_emitter 노드 ip 지정
125
properties:
126
metron_agent:
127
zone: z1
128
resource_pool: route_emitter_z1
129
templates:
130
- name: route_emitter
131
release: openpaas-container
132
- name: consul_agent
133
release: openpaas-controller
134
- name: metron_agent
135
release: openpaas-controller
136
update:
137
max_in_flight: 1
138
serial: false
139
140
- instances: 1
141
name: access_z1
142
networks:
143
- name: openpaas-container-networks
144
static_ips:
145
- 10.20.0.55 # access 노드 ip 지정
146
properties:
147
consul:
148
agent:
149
services:
150
file_server: {}
151
ssh_proxy: {}
152
metron_agent:
153
zone: z1
154
resource_pool: access_z1
155
templates:
156
- name: ssh_proxy
157
release: openpaas-container
158
- name: consul_agent
159
release: openpaas-controller
160
- name: metron_agent
161
release: openpaas-controller
162
- name: file_server
163
release: openpaas-container
164
update:
165
max_in_flight: 1
166
serial: false
Copied!

3.2.7. Properties

아래 Sample Manifest를 참조하여 설치 환경에 맞게 값을 수정한다.
1
properties:
2
consul: # consul 속성 정의
3
agent:
4
datacenter: null
5
log_level: null
6
servers:
7
lan:
8
- 10.20.0.16 # controller에서 정의한 consul의 static_ips
9
agent_cert: | # controller에서 정의한 consul의 agent_cert
10
-----BEGIN CERTIFICATE-----
11
-----END CERTIFICATE-----
12
13
agent_key: | # controller에서 정의한 consul의 agent_key
14
-----BEGIN RSA PRIVATE KEY-----
15
-----END RSA PRIVATE KEY-----
16
17
ca_cert: | # controller에서 정의한 consul의 ca_cert
18
-----BEGIN CERTIFICATE-----
19
-----END CERTIFICATE-----
20
encrypt_keys: # controller에서 정의한 consul의 encrypt_keys
21
- t66mLrBhJ5kpofLwoJpH5A==
22
23
require_ssl: true
24
server_cert: | # controller에서 정의한 consul의 server_cert
25
-----BEGIN CERTIFICATE-----
26
-----END CERTIFICATE-----
27
28
server_key: | # controller에서 정의한 consul의 server_key
29
-----BEGIN CERTIFICATE-----
30
-----END CERTIFICATE-----
31
32
diego:
33
auctioneer:
34
bbs:
35
api_location: bbs.service.cf.internal:8889
36
ca_cert: |+ # diego-ca.crt 인증서
37
-----BEGIN CERTIFICATE-----
38
-----END CERTIFICATE-----
39
client_cert: |+ # bbs-certs/client.crt 인증서
40
-----BEGIN CERTIFICATE-----
41
-----END CERTIFICATE-----
42
client_key: |+ # bbs-certs/client.key
43
-----BEGIN RSA PRIVATE KEY-----
44
-----END RSA PRIVATE KEY-----
45
client_session_cache_size: null # TLS client 캐시 크기
46
max_idle_conns_per_host: null # Idel http 요청 최대 수
47
require_ssl: true # bbs 통시 시 ssl 사용
48
cell_state_timeout: null # Cell State endpoint 에 HTTP 요청 시 타임아웃 시간(디폴트 1초)
49
log_level: null # 로그 레벨(디폴트 info)
50
bbs:
51
active_key_label: key1 # database 쓰기 시 사용될 보안 키 명
52
auctioneer:
53
api_url: http://auctioneer.service.cf.internal:9016 # Auctioneer API 주소
54
ca_cert: |+ # diego-ca.crt 인증서
55
-----BEGIN CERTIFICATE-----
56
-----END CERTIFICATE-----
57
encryption_keys: # 사용할 암호화 키
58
- label: key1
59
passphrase: DtFRfvja56znEDc0HRRTuw==
60
etcd:
61
ca_cert: |+ # diego-ca.crt 인증서
62
-----BEGIN CERTIFICATE-----
63
-----END CERTIFICATE-----
64
client_cert: |+ # etcd-certs/client.crt 인증서
65
-----BEGIN CERTIFICATE-----
66
-----END CERTIFICATE-----
67
client_key: |+ # etcd-certs/client.key
68
-----BEGIN RSA PRIVATE KEY-----
69
-----END RSA PRIVATE KEY-----
70
client_session_cache_size: null
71
machines:
72
- etcd.service.cf.internal
73
max_idle_conns_per_host: null
74
require_ssl: true
75
log_level: null
76
require_ssl: true
77
server_cert: |+ # bbs-certs/server.crt 인증서
78
-----BEGIN CERTIFICATE-----
79
-----END CERTIFICATE-----
80
server_key: |+ # bbs-certs/server.key
81
-----BEGIN RSA PRIVATE KEY-----
82
83
84
-----END RSA PRIVATE KEY-----
85
cc_uploader:
86
cc:
87
base_url: https://api.controller.open-paas.com
88
basic_auth_password: admin
89
staging_upload_password: admin
90
staging_upload_user: staging_upload_user
91
log_level: null
92
converger:
93
bbs:
94
api_location: bbs.service.cf.internal:8889
95
ca_cert: |+ # diego-ca.crt 인증서
96
-----BEGIN CERTIFICATE-----
97
-----END CERTIFICATE-----
98
client_cert: |+ # bbs-certs/client.crt 인증서
99
-----BEGIN CERTIFICATE-----
100
-----END CERTIFICATE-----
101
client_key: |+ # bbs-certs/client.key
102
-----BEGIN RSA PRIVATE KEY-----
103
-----END RSA PRIVATE KEY-----
104
client_session_cache_size: null
105
max_idle_conns_per_host: null
106
require_ssl: true
107
log_level: debug
108
executor:
109
disk_capacity_mb: null
110
drain_timeout_in_seconds: 0
111
garden:
112
address: 127.0.0.1:7777
113
network: tcp
114
log_level: debug
115
memory_capacity_mb: null
116
file_server:
117
log_level: null
118
nsync:
119
bbs:
120
api_location: bbs.service.cf.internal:8889
121
ca_cert: |+ # diego-ca.crt 인증서
122
-----BEGIN CERTIFICATE-----
123
-----END CERTIFICATE-----
124
client_cert: |+ # bbs-certs/client.crt 인증서
125
-----BEGIN CERTIFICATE-----
126
-----END CERTIFICATE-----
127
client_key: |+ # bbs-certs/client.key
128
-----BEGIN RSA PRIVATE KEY-----
129
-----END RSA PRIVATE KEY-----
130
client_session_cache_size: null
131
max_idle_conns_per_host: null
132
require_ssl: true
133
cc:
134
base_url: https://api.controller.open-paas.com
135
basic_auth_password: admin
136
staging_upload_password: admin
137
staging_upload_user: staging_upload_user
138
log_level: debug
139
rep:
140
bbs:
141
api_location: bbs.service.cf.internal:8889
142
ca_cert: |+ # diego-ca.crt 인증서
143
-----BEGIN CERTIFICATE-----
144
-----END CERTIFICATE-----
145
client_cert: |+ # bbs-certs/client.crt 인증서
146
-----BEGIN CERTIFICATE-----
147
-----END CERTIFICATE-----
148
client_key: |+ # bbs-certs/client.key
149
-----BEGIN RSA PRIVATE KEY-----
150
-----END RSA PRIVATE KEY-----
151
client_session_cache_size: null
152
max_idle_conns_per_host: null
153
require_ssl: true
154
evacuation_timeout_in_seconds: 60
155
log_level: debug
156
route_emitter:
157
bbs:
158
api_location: bbs.service.cf.internal:8889
159
ca_cert: |+ # diego-ca.crt 인증서
160
-----BEGIN CERTIFICATE-----
161
-----END CERTIFICATE-----
162
client_cert: |+ # bbs-certs/client.crt 인증서
163
-----BEGIN CERTIFICATE-----
164
-----END CERTIFICATE-----
165
client_key: |+ # bbs-certs/client.key
166
-----BEGIN RSA PRIVATE KEY-----
167
-----END RSA PRIVATE KEY-----
168
client_session_cache_size: null
169
max_idle_conns_per_host: null
170
require_ssl: true
171
log_level: debug
172
nats:
173
machines:
174
- 10.20.0.11 # controller에서 정의한 nats의 static_ips
175
password: admin # controller에서 정의한 nats의 password
176
port: 4222
177
user: nats # controller에서 정의한 nats의 user id
178
ssh_proxy:
179
bbs:
180
api_location: bbs.service.cf.internal:8889 # BBS server 도메인 주소
181
ca_cert: |+ # diego-ca.crt 인증서
182
-----BEGIN CERTIFICATE-----
183
-----END CERTIFICATE-----
184
client_cert: |+ # bbs-certs/client.crt 인증서
185
-----BEGIN CERTIFICATE-----
186
-----END CERTIFICATE-----
187
client_key: |+ # bbs-certs/client.key
188
-----BEGIN RSA PRIVATE KEY-----
189
-----END RSA PRIVATE KEY-----
190
client_session_cache_size: null
191
max_idle_conns_per_host: null
192
require_ssl: true
193
diego_credentials: null
194
enable_cf_auth: true
195
enable_diego_auth: false
196
host_key: |+ # ssh_proxy 인증서. 호스트 식별을 위한 RSA 키
197
-----BEGIN RSA PRIVATE KEY-----
198
-----END RSA PRIVATE KEY-----
199
servers:
200
- 10.20.0.42 # ssh_proxy 서버 ip 지정
201
uaa_secret: ssh-proxy-secret # UAA에서 ssh-proxy 인증 시 사용할 OAuth client 비밀키
202
uaa_token_url: https://uaa.controller.open-paas.com/oauth/token # UAA 토큰 엔드 포인트
203
ssl:
204
skip_cert_verify: true
205
stager:
206
bbs:
207
api_location: bbs.service.cf.internal:8889
208
ca_cert: |+ # diego-ca.crt 인증서
209
-----BEGIN CERTIFICATE-----
210
-----END CERTIFICATE-----
211
client_cert: |+ # bbs-certs/client.crt 인증서
212
-----BEGIN CERTIFICATE-----
213
-----END CERTIFICATE-----
214
client_key: |+ # bbs-certs/client.key
215
-----BEGIN RSA PRIVATE KEY-----
216
-----END RSA PRIVATE KEY-----
217
client_session_cache_size: null
218
max_idle_conns_per_host: null
219
require_ssl: true
220
cc:
221
base_url: https://api.controller.open-paas.com
222
basic_auth_password: admin # controller에서 정의한 cc의 internal_api_password
223
staging_upload_password: admin # controller에서 정의한 cc의 staging_upload_password
224
staging_upload_user: staging_upload_user # controller에서 정의한 cc의 staging_upload_user
225
insecure_docker_registry_list: null
226
log_level: null
227
tps:
228
bbs:
229
api_location: bbs.service.cf.internal:8889
230
ca_cert: |+ # diego-ca.crt 인증서
231
-----BEGIN CERTIFICATE-----
232
-----END CERTIFICATE-----
233
client_cert: |+ # bbs-certs/client.crt 인증서
234
-----BEGIN CERTIFICATE-----
235
-----END CERTIFICATE-----
236
client_key: |+ # bbs-certs/client.key
237
-----BEGIN RSA PRIVATE KEY-----
238
-----END RSA PRIVATE KEY-----
239
client_session_cache_size: null
240
max_idle_conns_per_host: null
241
require_ssl: true
242
cc:
243
base_url: https://api.controller.open-paas.com
244
basic_auth_password: admin
245
staging_upload_password: admin
246
staging_upload_user: staging_upload_user
247
log_level: null
248
traffic_controller_url: wss://doppler.controller.open-paas.com:443
249
etcd:
250
ca_cert: |+ # diego-ca.crt 인증서
251
-----BEGIN CERTIFICATE-----
252
-----END CERTIFICATE-----
253
client_cert: |+ # etcd-certs/client.crt 인증서
254
-----BEGIN CERTIFICATE-----
255
-----END CERTIFICATE-----
256
client_key: |+ # etcd-certs/client.key
257
-----BEGIN RSA PRIVATE KEY-----
258
-----END RSA PRIVATE KEY-----
259
cluster:
260
- instances: 1
261
name: database_z1
262
- instances: 0
263
name: database_z2
264
- instances: 0
265
name: database_z3
266
- instances: 0
267
name: colocated_z1
268
- instances: 0
269
name: colocated_z2
270
- instances: 0
271
name: colocated_z2
272
election_timeout_in_milliseconds: null
273
heartbeat_interval_in_milliseconds: null
274
machines:
275
- etcd.service.cf.internal
276
peer_ca_cert: |+ # etcd-peer-ca.crt 인증서
277
-----BEGIN CERTIFICATE-----
278
-----END CERTIFICATE-----
279
peer_cert: |+ # etcd-certs/peer.crt 인증서
280
-----BEGIN CERTIFICATE-----
281
-----END CERTIFICATE-----
282
peer_key: |+ # etcd-certs/peer.key
283
-----BEGIN RSA PRIVATE KEY-----
284
-----END RSA PRIVATE KEY-----
285
peer_require_ssl: true
286
require_ssl: true
287
server_cert: |+ # etcd-certs/server.crt 인증서
288
-----BEGIN CERTIFICATE-----
289
-----END CERTIFICATE-----
290
server_key: |+ # etcd-certs/server.key
291
-----BEGIN RSA PRIVATE KEY-----
292
-----END RSA PRIVATE KEY-----
293
garden:
294
allow_host_access: null
295
allow_networks: null
296
deny_networks:
297
- 0.0.0.0/0
298
disk_quota_enabled: null
299
enable_graph_cleanup: true
300
insecure_docker_registry_list: null
301
listen_address: 0.0.0.0:7777
302
listen_network: tcp
303
log_level: debug
304
mount_btrfs_loopback: null
305
network_mtu: null
306
persistent_image_list:
307
- /var/vcap/packages/rootfs_cflinuxfs2/rootfs
308
loggregator:
309
etcd:
310
machines:
311
- 10.20.0.24 # controller에서 정의한 etcd의 static_ips
312
loggregator_endpoint:
313
shared_secret: admin # controller에서 정의한 loggregator_endpoint의 shared_secret
314
metron_agent:
315
deployment: openpaas-vsphere-1.0
316
metron_endpoint:
317
shared_secret: admin # changeit: controller에서 정의한 metron_endpoint의 shared_secret
318
nats:
319
machines:
320
- 10.20.0.24 # controller에서 정의한 nats의 static_ips
321
password: admin # controller에서 정의한 nats의 password
322
port: 4222
323
user: nats # controller에서 정의한 nats의 user id
324
syslog_daemon_config:
325
address: null
326
port: null
Copied!
Sample Manifest에서 사용한 인증서 생성 방법은 다음과 같다.
1
export GOPATH=$(pwd)/certstrap
2
export PATH=$PATH:$GOPATH/bin
3
4
cd $OPEN_PAAS_CONTAINER
5
6
mkdir -p $GOPATH
7
8
dir_cert=$(pwd)/diego-certs
9
. scripts/generate-diego-ca-certs
10
11
. scripts/generate-etcd-certs \
12
etcd-peer-ca $dir_cert diego-ca $dir_cert
13
14
. scripts/generate-bbs-certs \
15
diego-ca $dir_cert
16
17
18
SSH_PROXY_KEY=ssh_proxy
19
ssh-keygen -b 2048 -t rsa -f $dir_cert/$SSH_PROXY_KEY -q -N ""
20
ssh-keygen -lf $dir_cert/${SSH_PROXY_KEY}.pub | cut -f2 -d " " > $dir_cert/${SSH_PROXY_KEY}.fin
Copied!
위 인증서 생성 명령을 실행 후 최종 인증서의 생성 위치는 다음과 같다.
1
 diego-cert/diego-ca.key
2
 diego-cert/etcd-peer-ca.crt
3
 diego-cert/etcd-certs/peer.cert
4
 diego-cert/etcd-certs/peer.key
5
 diego-cert/etcd-certs/client.crt
6
 diego-cert/etcd-certs/client.key
7
 diego-cert/bbs-certs/peer.cert
8
 diego-cert/bbs-certs/peer.key
9
 diego-cert/bbs-certs/client.crt
10
 diego-cert/bbs-certs/client.key
11
 diego-certs/ssh_proxy
Copied!
ssh_proxy 접속을 위한 키(diego-certs/ssh_proxy.fin)는 아래와 같이 openpaas-controller의 manifest에 반영해야 한다.
1
properties:
2
3
app_ssh:
4
host_key_fingerprint: 17:2b:92:3e:03:7b:6c:3a:31:31:1e:f7:49:63:24:b0 # diego-certs/ssh_proxy.fin 파일 내용으로 치환
5
oauth_client_id: ssh-proxy
Copied!

3.3. Deployment Manifest 지정

1
bosh deployment openpaas-container-openstack-1.0.yml
Copied!
“bosh deployment” 명령어로 생성한 Deployment Manifest File을 지정하고, 아래의 그림과 같이 동일한 명령어로 정상 지정 되었는지를 확인한다

3.4. Bosh Deploy

Diego module에 대한 bosh upload 과정이 끝났으면, deploy 과정을 통해 Diego 관련 VM을 생성한다.
1
$ bosh deploy
Copied!
[그림: bosh deploy 실행 결과]

3.5. 설치형상 확인

설치가 정상적으로 완료된 후 “bosh vms” 명령으로 설치된 Platform의 형상을 확인한다.
1
bosh vms
Copied!
아래 그림과 같이 Deployment Name, Virtual Machine, IP 주소 등의 정보를 확인할 수 있다.

3.6. Trobleshooting

Container 파일을 Deploy를 한 후 다음 사진과 같이 “database_z1 > database_z1/0 (canary). Failed: Volume”이라는 에러가 발생하는 경우 사용하고 있는 OpenStack에 접속하여 리소스가 부족하지 않은지 확인해 보고 필요하지 않은 것들은 Delete를 해 준다.
Container 파일을 Deploy를 한 후 다음 사진과 같이 “database_z1 > database_z1/0 (canary). Failed: ‘database_z1/0’ is not running after update”라는 에러가 발생하는 경우가 있다.
다음과 같이 bosh ssh를 통해 database_z1/0에 접근한다. “Choose an instance”에서 database_z1/0을 선택하면 된다.
다음 그림과 같이 sudo su를 통해 접속하면 ‘etcd’가 ‘not monitored’ 상태인 것을 확인할 수 있다.
monit summary를 통해 먼저 프로세스의 상태를 확인한다. 프로세스를 없애고 다시 상태를 확인한다. 다음의 명령어들을 하나씩 실행하면서 프로세스의 상태를 확인한다. monit summary
1
killall etcd
2
3
ps –ef | grep etcd
4
5
kill -9 pid
6
7
monit quit etcd
8
9
monit summary
Copied!
monit quit etcd까지 다 실행하고 monit summary를 실행하면 ‘etcd’가 running으로 바뀐 것을 볼 수 있다.
‘etcd’를 확인한 후 종료하고 OpenStack 서버에서 다음과 같은 명령어를 실행하면 database_z1/0가 running 상태인 것을 확인할 수 있다.

4. 설치 검증

4.1. CF Login

1
cf api http://api.115.68.46.29.xip.io --skip-ssl-validation # cf target 지정
2
3
cf login
4
Email> admin
5
Password> admin
6
OK
7
8
cf create-org open-paas
9
cf target -o open-paas
10
cf create-space dev
11
cf target -o open-paas -s dev
12
Copied!
CF Target을 지정하고, Login을 수행한다. 이 때 계정은 admin/admin을 사용한다. Application을 Deploy할 ORG와 Space를 생성하고, 해당하는 ORG/Space로 Targetting 한다.
※ admin 계정의 패스워드 설정을 바꾸고 싶다면, CF-Release deploy시 manifest 설정 파일에서 변경하야 한다.

4.2. Application Deploy

개방형클라우드플랫폼 패키지와 함께 배포된 Sample Application이 위치하는 디렉토리로 이동하고 Application을 Deploy 한다.
1
cd $PACKAGE_ROOT/apps/hello-java
2
cf push “application-name” –i “instance_count” –m “memory_size”
Copied!
CF-Release는 기본적으로 DEA 환경에 Application을 배포하기 때문에 Diego 환경에 Application을 배포한다. Application 업로드가 완료된 후에 아래 명령어를 실행해야 한다.
1
cf start “application-name”
Copied!
Docker 파일을 Deploy하는 경우 다음과 같이 명령어를 입력한다.
1
cf enable-feature-flag diego_docker
2
cf push docker1 -m 512M --docker-image cloudfoundry/lattice-app
3
4
cf start “application-name”
Copied!
다음과 같이 cf apps를 통해 Deploy된 App을 확인한다.

4.3. Application Access

Deploy한 Application URL을 Browser 또는 curl 명령어로 Access하여 정상 접근 되는지를 확인한다.
Last modified 1yr ago