Container 설치 가이드(AWS)

1. 개요

1.1. 목적

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

1.2. 범위

본 문서의 범위는 개방형클라우드플랫폼을 AWS 기반에 설치하기 위한 내용으로 한정되어 있다. Openstack/VSphere와 같은 다른 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
3
bosh upload release \$INSTALL\_PACKAGE/OpenPaaS-Container/etcd -release-20.tgz
4
5
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” 명령으로 확인한다.
1
bosh releases
Copied!

3.2. Deployment Manifest 파일 수정하기

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

3.2.1. Name & Release

1
name: openpaas-container-aws- 1.0 # Deployment Name
2
3
director\_uuid: 3d139c62-6669-4804-adb0-990b16446c37 # Bosh Director UUID
4
5
releases:
6
7
- name: openpaas-container # container Release Name
8
9
version: latest # container Release Version
10
11
- name: openpaas-controller # controller Release Name
12
13
version: latest # controller Release Version
14
15
- name: garden-linux # garden-linux Release Name
16
17
version: latest # garden-linux Release Version
18
19
- name: etcd # etcd Release Name
20
21
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
3
- name: openpaas-container-network # Platform이 설치될 Network Name
4
5
subnets:
6
7
- cloud\_properties:
8
9
subnet: subnet-4676f47b # AWS Subnet ID
10
11
security\_groups: # AWS Security Group Name
12
13
- cf-security
14
15
- bosh-security
16
17
dns:
18
19
- 8.8.8.8
20
21
gateway: 10.0.80.1 # Gateway IP Address
22
23
range: 10.0.80.0/24 # Network CIDR
24
25
reserved:
26
27
- 10.0.80.2 - 10.0.80.9
28
29
static:
30
31
- 10.0.80.10 - 10.0.80.40 # VM에 할당될 Static IP 주소 대역
32
33
type: manual
Copied!
Network Name은 설치자가 임의로 부여 가능하다. Network ID, Security_groups, Gateway, DNS Server, Network CIDR은 AWS 구성을 직접 확인하거나 인프라 담당자에게 문의하여 정보를 얻도록 한다. Static IP 주소는 Platform을 설치할 때 개별 VM에 할당될 IP의 주소 대역으로 마찬가지로 인프라 담당자에게 할당을 받아야 한다.

3.2.3. Compilation

1
compilation:
2
3
cloud\_properties: # Compile시 사용할 VM 속성
4
5
instance\_type: m1.medium
6
7
network: openpaas-container-network # 네트워크 설정에 사용된 것과 동일한 이름
8
9
reuse\_compilation\_vms: true # compilation VMs 재사용 여부
10
11
workers: 6 # 동시 동작하는 VM 수
Copied!
Network Name은 3.2.2에서 정의한 것과 동일한 이름을 줘야 한다. Workers는 동시에 Compile을 수행하는 VM의 개수로 별다른 환경적 특성이 없다면 Default 값을 사용토록 한다.

3.2.4. Resource Pools

1
resource\_pools:
2
3
- name: access\_z1 # Resource Name
4
5
cloud\_properties: # Resource 실행 VM 속성
6
7
instance\_type: m1.small
8
9
network: openpaas-container-network # Network Name
10
11
stemcell:
12
13
name: bosh-aws-xen-ubuntu-trusty-go\_agent # Stemcell Name
14
15
version: latest # Stemcell Version
16
17
- name: brain\_z1
18
19
cloud\_properties: # Resource 실행 VM 속성
20
21
instance\_type: m1.small
22
23
network: openpaas-container-network
24
25
stemcell:
26
27
name: bosh-aws-xen-ubuntu-trusty-go\_agent
28
29
version: latest
30
31
- name: cc\_bridge\_z1
32
33
cloud\_properties: # Resource 실행 VM 속성
34
35
instance\_type: m1.small
36
37
network: openpaas-container-network
38
39
stemcell:
40
41
name: bosh-aws-xen-ubuntu-trusty-go\_agent
42
43
version: latest
44
45
- name: cell\_z1
46
47
cloud\_properties: # Resource 실행 VM 속성
48
49
instance\_type: m1.medium
50
51
network: openpaas-container-network
52
53
stemcell:
54
55
name: bosh-aws-xen-ubuntu-trusty-go\_agent # Stemcell Name
56
57
version: latest # Stemcell Version
58
59
- name: database\_z1
60
61
cloud\_properties: # Resource 실행 VM 속성
62
63
instance\_type: m1.small
64
65
network: openpaas-container-network
66
67
stemcell:
68
69
name: bosh-aws-xen-ubuntu-trusty-go\_agent
70
71
version: 3147
72
73
- name: route\_emitter\_z1
74
75
cloud\_properties: # Resource 실행 VM 속성
76
77
instance\_type: m1.small
78
79
network: openpaas-container-network
80
81
stemcell:
82
83
name: bosh-aws-xen-ubuntu-trusty-go\_agent
84
85
version: 3147
Copied!
Resource pool 정보는 Jobs 영역에서 각 VM들이 사용하기 위한 Resource를 사전 정의한 영역으로, 각 VM 영역의 이름으로 명명되어 있으며, 필요 크기에 따라 cpu, disk, ram 정보를 수정한다. Stemcell Name과 Version은 “bosh stemcells” 명령어 결과로 출력되는 값들을 입력하도록 한다.

3.2.5. Update

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

3.2.6. Jobs

아래 Sample Jobs를 참고하여 설치 환경에 맞게 수정한다.
1
jobs:
2
3
- instances: 1 # VM Instance 개수
4
5
name: database\_z1 # Job Name
6
7
networks:
8
9
- name: openpaas-container-network # Network Name
10
11
static\_ips:
12
13
- 10.0.80.10 # 서버 IP 지정
14
15
persistent\_disk: 1024
16
17
properties:
18
19
consul:
20
21
agent:
22
23
services:
24
25
bbs: {}
26
27
etcd: {}
28
29
metron\_agent:
30
31
zone: z1
32
33
resource\_pool: database\_z1 # Resource Name
34
35
templates:
36
37
- name: etcd # database VM에서 실행될 컴포넌트
38
39
release: etcd # etcd job template이 존재하는 release 정보
40
41
- name: bbs
42
43
release: openpaas-container
44
45
- name: consul\_agent
46
47
release: openpaas-controller
48
49
- name: metron\_agent
50
51
release: openpaas-controller
52
53
update:
54
55
max\_in\_flight: 1 # update instance들의 최대 병렬처리 개수
56
57
serial: true # 순차적 실행여부
58
59
- instances: 1
60
61
name: brain\_z1
62
63
networks:
64
65
- name: openpaas-container-network
66
67
static\_ips:
68
69
- 10.0.80.11 # brain 노드 ip 지정
70
71
properties:
72
73
consul:
74
75
agent:
76
77
services:
78
79
auctioneer: {}
80
81
metron\_agent:
82
83
zone: z1 # Zone 영역(설치되는 VM 그룹)
84
85
resource\_pool: brain\_z1
86
87
templates:
88
89
- name: consul\_agent
90
91
release: openpaas-controller
92
93
- name: auctioneer
94
95
release: openpaas-container
96
97
- name: converger
98
99
release: openpaas-container
100
101
- name: metron\_agent
102
103
release: openpaas-controller
104
105
update:
106
107
max\_in\_flight: 1
108
109
serial: true
110
111
- instances: 1
112
113
name: cell\_z1
114
115
networks:
116
117
- name: openpaas-container-network
118
119
static\_ips:
120
121
- 10.0.80.12 # cell 노드 ip 지정
122
123
properties:
124
125
diego:
126
127
rep:
128
129
zone: z1
130
131
metron\_agent:
132
133
zone: z1
134
135
resource\_pool: cell\_z1
136
137
templates:
138
139
- name: rep
140
141
release: openpaas-container
142
143
- name: consul\_agent
144
145
release: openpaas-controller
146
147
- name: garden-linux
148
149
release: openpaas-container
150
151
- name: metron\_agent
152
153
release: openpaas-controller
154
155
update:
156
157
max\_in\_flight: 1
158
159
serial: false
160
161
- instances: 1
162
163
name: cc\_bridge\_z1
164
165
networks:
166
167
- name: openpaas-container-network
168
169
static\_ips:
170
171
- 10.0.80.13 # cc\_bridge 노드 ip 지정
172
173
properties:
174
175
consul:
176
177
agent:
178
179
services:
180
181
cc\_uploader: {}
182
183
nsync: {}
184
185
stager: {}
186
187
tps: {}
188
189
metron\_agent:
190
191
zone: z1
192
193
resource\_pool: cc\_bridge\_z1
194
195
templates:
196
197
- name: stager
198
199
release: openpaas-container
200
201
- name: nsync
202
203
release: openpaas-container
204
205
- name: tps
206
207
release: openpaas-container
208
209
- name: file\_server
210
211
release: openpaas-container
212
213
- name: consul\_agent
214
215
release: openpaas-controller
216
217
- name: metron\_agent
218
219
release: openpaas-controller
220
221
update:
222
223
max\_in\_flight: 1
224
225
serial: false
226
227
- instances: 1
228
229
name: route\_emitter\_z1
230
231
networks:
232
233
- name: openpaas-container-network
234
235
static\_ips:
236
237
- 10.0.80.14 # route\_emitter 노드 ip 지정
238
239
properties:
240
241
metron\_agent:
242
243
zone: z1
244
245
resource\_pool: route\_emitter\_z1
246
247
templates:
248
249
- name: route\_emitter
250
251
release: openpaas-container
252
253
- name: consul\_agent
254
255
release: openpaas-controller
256
257
- name: metron\_agent
258
259
release: openpaas-controller
260
261
update:
262
263
max\_in\_flight: 1
264
265
serial: false
266
267
- instances: 1
268
269
name: access\_z1
270
271
networks:
272
273
- name: openpaas-container-network
274
275
static\_ips:
276
277
- 10.0.80.16 # access 노드 ip 지정
278
279
properties:
280
281
consul:
282
283
agent:
284
285
services:
286
287
file\_server: {}
288
289
ssh\_proxy: {}
290
291
metron\_agent:
292
293
zone: z1
294
295
resource\_pool: access\_z1
296
297
templates:
298
299
- name: ssh\_proxy
300
301
release: openpaas-container
302
303
- name: consul\_agent
304
305
release: openpaas-controller
306
307
- name: metron\_agent
308
309
release: openpaas-controller
310
311
- name: receptor
312
313
release: openpaas-container
314
315
update:
316
317
max\_in\_flight: 1
318
319
serial: false
Copied!

3.2.7. Properties

아래 Sample Manifest를 참조하여 설치 환경에 맞게 값을 수정한다.
1
properties:
2
3
consul: # consul 속성 정의
4
5
agent:
6
7
datacenter: null
8
9
log\_level: null
10
11
servers:
12
13
lan:
14
15
- 10.0.16.16 # controller에서 정의한 consul의 static\_ips
16
17
agent\_cert: | # controller에서 정의한 consul의 agent\_cert
18
19
-----BEGIN CERTIFICATE-----
20
21
-----END CERTIFICATE-----
22
23
agent\_key: | # controller에서 정의한 consul의 agent\_key
24
25
-----BEGIN RSA PRIVATE KEY-----
26
27
-----END RSA PRIVATE KEY-----
28
29
ca\_cert: | # controller에서 정의한 consul의 ca\_cert
30
31
-----BEGIN CERTIFICATE-----
32
33
-----END CERTIFICATE-----
34
35
encrypt\_keys: # controller에서 정의한 consul의 encrypt\_keys
36
37
- t66mLrBhJ5kpofLwoJpH5A==
38
39
require\_ssl: true
40
41
server\_cert: | # controller에서 정의한 consul의 server\_cert
42
43
-----BEGIN CERTIFICATE-----
44
45
-----END CERTIFICATE-----
46
47
server\_key: | # controller에서 정의한 consul의 server\_key
48
49
-----BEGIN RSA PRIVATE KEY-----
50
51
-----END RSA PRIVATE KEY-----
52
53
diego:
54
55
auctioneer:
56
57
bbs:
58
59
api\_location: bbs.service.cf.internal:8889
60
61
ca\_cert: |+ # diego-ca.crt 인증서
62
63
-----BEGIN CERTIFICATE-----
64
65
-----END CERTIFICATE-----
66
67
client\_cert: |+ # bbs-certs/client.crt 인증서
68
69
-----BEGIN CERTIFICATE-----
70
71
-----END CERTIFICATE-----
72
73
client\_key: |+ # bbs-certs/client.key
74
75
-----BEGIN RSA PRIVATE KEY-----
76
77
-----END RSA PRIVATE KEY-----
78
79
client\_session\_cache\_size: null # TLS client 캐시 크기
80
81
max\_idle\_conns\_per\_host: null # Idel http 요청 최대 수
82
83
require\_ssl: true # bbs 통시 시 ssl 사용
84
85
cell\_state\_timeout: null # Cell State endpoint 에 HTTP 요청 시 타임아웃 시간(디폴트 1초)
86
87
log\_level: null # 로그 레벨(디폴트 info)
88
89
bbs:
90
91
active\_key\_label: key1 # database 쓰기 시 사용될 보안 키 명
92
93
auctioneer:
94
95
api\_url: http://auctioneer.service.cf.internal:9016 # Auctioneer API 주소
96
97
ca\_cert: |+ # diego-ca.crt 인증서
98
99
-----BEGIN CERTIFICATE-----
100
101
-----END CERTIFICATE-----
102
103
encryption\_keys: # 사용할 암호화 키
104
105
- label: key1
106
107
passphrase: DtFRfvja56znEDc0HRRTuw==
108
109
etcd:
110
111
ca\_cert: |+ # diego-ca.crt 인증서
112
113
-----BEGIN CERTIFICATE-----
114
115
-----END CERTIFICATE-----
116
117
client\_cert: |+ # etcd-certs/client.crt 인증서
118
119
-----BEGIN CERTIFICATE-----
120
121
-----END CERTIFICATE-----
122
123
client\_key: |+ # etcd-certs/client.key
124
125
-----BEGIN RSA PRIVATE KEY-----
126
127
-----END RSA PRIVATE KEY-----
128
129
client\_session\_cache\_size: null
130
131
machines:
132
133
- etcd.service.cf.internal
134
135
max\_idle\_conns\_per\_host: null
136
137
require\_ssl: true
138
139
log\_level: null
140
141
require\_ssl: true
142
143
server\_cert: |+ # bbs-certs/server.crt 인증서
144
145
-----BEGIN CERTIFICATE-----
146
147
-----END CERTIFICATE-----
148
149
server\_key: |+ # bbs-certs/server.key
150
151
-----BEGIN RSA PRIVATE KEY-----
152
153
-----END RSA PRIVATE KEY-----
154
155
cc\_uploader:
156
157
cc:
158
159
base\_url: https://api.controller.open-paas.com
160
161
basic\_auth\_password: admin
162
163
staging\_upload\_password: admin
164
165
staging\_upload\_user: staging\_upload\_user
166
167
log\_level: null
168
169
converger:
170
171
bbs:
172
173
api\_location: bbs.service.cf.internal:8889
174
175
ca\_cert: |+ # diego-ca.crt 인증서
176
177
-----BEGIN CERTIFICATE-----
178
179
-----END CERTIFICATE-----
180
181
client\_cert: |+ # bbs-certs/client.crt 인증서
182
183
-----BEGIN CERTIFICATE-----
184
185
-----END CERTIFICATE-----
186
187
client\_key: |+ # bbs-certs/client.key
188
189
-----BEGIN RSA PRIVATE KEY-----
190
191
-----END RSA PRIVATE KEY-----
192
193
client\_session\_cache\_size: null
194
195
max\_idle\_conns\_per\_host: null
196
197
require\_ssl: true
198
199
log\_level: debug
200
201
executor:
202
203
disk\_capacity\_mb: null
204
205
drain\_timeout\_in\_seconds: 0
206
207
garden:
208
209
address: 127.0.0.1:7777
210
211
network: tcp
212
213
log\_level: debug
214
215
memory\_capacity\_mb: null
216
217
file\_server:
218
219
log\_level: null
220
221
nsync:
222
223
bbs:
224
225
api\_location: bbs.service.cf.internal:8889
226
227
ca\_cert: |+ # diego-ca.crt 인증서
228
229
-----BEGIN CERTIFICATE-----
230
231
-----END CERTIFICATE-----
232
233
client\_cert: |+ # bbs-certs/client.crt 인증서
234
235
-----BEGIN CERTIFICATE-----
236
237
-----END CERTIFICATE-----
238
239
client\_key: |+ # bbs-certs/client.key
240
241
-----BEGIN RSA PRIVATE KEY-----
242
243
-----END RSA PRIVATE KEY-----
244
245
client\_session\_cache\_size: null
246
247
max\_idle\_conns\_per\_host: null
248
249
require\_ssl: true
250
251
cc:
252
253
base\_url: https://api.controller.open-paas.com
254
255
basic\_auth\_password: admin
256
257
staging\_upload\_password: admin
258
259
staging\_upload\_user: staging\_upload\_user
260
261
log\_level: debug
262
263
rep:
264
265
bbs:
266
267
api\_location: bbs.service.cf.internal:8889
268
269
ca\_cert: |+ # diego-ca.crt 인증서
270
271
-----BEGIN CERTIFICATE-----
272
273
-----END CERTIFICATE-----
274
275
client\_cert: |+ # bbs-certs/client.crt 인증서
276
277
-----BEGIN CERTIFICATE-----
278
279
-----END CERTIFICATE-----
280
281
client\_key: |+ # bbs-certs/client.key
282
283
-----BEGIN RSA PRIVATE KEY-----
284
285
-----END RSA PRIVATE KEY-----
286
287
client\_session\_cache\_size: null
288
289
max\_idle\_conns\_per\_host: null
290
291
require\_ssl: true
292
293
evacuation\_timeout\_in\_seconds: 60
294
295
log\_level: debug
296
297
route\_emitter:
298
299
bbs:
300
301
api\_location: bbs.service.cf.internal:8889
302
303
ca\_cert: |+ # diego-ca.crt 인증서
304
305
-----BEGIN CERTIFICATE-----
306
307
-----END CERTIFICATE-----
308
309
client\_cert: |+ # bbs-certs/client.crt 인증서
310
311
-----BEGIN CERTIFICATE-----
312
313
-----END CERTIFICATE-----
314
315
client\_key: |+ # bbs-certs/client.key
316
317
-----BEGIN RSA PRIVATE KEY-----
318
319
-----END RSA PRIVATE KEY-----
320
321
client\_session\_cache\_size: null
322
323
max\_idle\_conns\_per\_host: null
324
325
require\_ssl: true
326
327
log\_level: debug
328
329
nats:
330
331
machines:
332
333
- 10.0.16.11 # controller에서 정의한 nats의 static\_ips
334
335
password: admin # controller에서 정의한 nats의 password
336
337
port: 4222
338
339
user: nats # controller에서 정의한 nats의 user id
340
341
ssh\_proxy:
342
343
bbs:
344
345
api\_location: bbs.service.cf.internal:8889 # BBS server 도메인 주소
346
347
ca\_cert: |+ # diego-ca.crt 인증서**
348
349
-----BEGIN CERTIFICATE-----
350
351
-----END CERTIFICATE-----
352
353
client\_cert: |+ # bbs-certs/client.crt 인증서
354
355
-----BEGIN CERTIFICATE-----
356
357
-----END CERTIFICATE-----
358
359
client\_key: |+ # bbs-certs/client.key
360
361
-----BEGIN RSA PRIVATE KEY-----
362
363
-----END RSA PRIVATE KEY-----
364
365
client\_session\_cache\_size: null
366
367
max\_idle\_conns\_per\_host: null
368
369
require\_ssl: true
370
371
diego\_credentials: null
372
373
enable\_cf\_auth: true
374
375
enable\_diego\_auth: false
376
377
host\_key: |+ # ssh\_proxy 인증서. 호스트 식별을 위한 RSA 키
378
379
-----BEGIN RSA PRIVATE KEY-----
380
381
-----END RSA PRIVATE KEY-----
382
383
servers:
384
385
- 10.0.80.31 **\# ssh\_proxy 서버 ip 지정**
386
387
uaa\_secret: ssh-proxy-secret # UAA에서 ssh-proxy 인증 시 사용할 OAuth client 비밀키
388
389
uaa\_token\_url: https://uaa.controller.open-paas.com/oauth/token # UAA 토큰 엔드 포인트
390
391
ssl:
392
393
skip\_cert\_verify: true
394
395
stager:
396
397
bbs:
398
399
api\_location: bbs.service.cf.internal:8889
400
401
ca\_cert: |+ # diego-ca.crt 인증서
402
403
-----BEGIN CERTIFICATE-----
404
405
-----END CERTIFICATE-----
406
407
client\_cert: |+ # bbs-certs/client.crt 인증서
408
409
-----BEGIN CERTIFICATE-----
410
411
-----END CERTIFICATE-----
412
413
client\_key: |+ # bbs-certs/client.key
414
415
-----BEGIN RSA PRIVATE KEY-----
416
417
-----END RSA PRIVATE KEY-----
418
419
client\_session\_cache\_size: null
420
421
max\_idle\_conns\_per\_host: null
422
423
require\_ssl: true
424
425
cc:
426
427
base\_url: https://api.controller.open-paas.com
428
429
basic\_auth\_password: admin # controller에서 정의한 cc의 internal\_api\_password
430
431
staging\_upload\_password: admin # controller에서 정의한 cc의 staging\_upload\_password
432
433
staging\_upload\_user: staging\_upload\_user # controller에서 정의한 cc의 staging\_upload\_user
434
435
insecure\_docker\_registry\_list: null
436
437
log\_level: null
438
439
tps:
440
441
bbs:
442
443
api\_location: bbs.service.cf.internal:8889
444
445
ca\_cert: |+ # diego-ca.crt 인증서
446
447
-----BEGIN CERTIFICATE-----
448
449
-----END CERTIFICATE-----
450
451
client\_cert: |+ # bbs-certs/client.crt 인증서
452
453
-----BEGIN CERTIFICATE-----
454
455
-----END CERTIFICATE-----
456
457
client\_key: |+ # bbs-certs/client.key
458
459
-----BEGIN RSA PRIVATE KEY-----
460
461
-----END RSA PRIVATE KEY-----
462
463
client\_session\_cache\_size: null
464
465
max\_idle\_conns\_per\_host: null
466
467
require\_ssl: true
468
469
cc:
470
471
base\_url: https://api.controller.open-paas.com
472
473
basic\_auth\_password: admin
474
475
staging\_upload\_password: admin
476
477
staging\_upload\_user: staging\_upload\_user
478
479
log\_level: null
480
481
traffic\_controller\_url: wss://doppler.controller.open-paas.com:443
482
483
etcd:
484
485
ca\_cert: |+ # diego-ca.crt 인증서
486
487
-----BEGIN CERTIFICATE-----
488
489
-----END CERTIFICATE-----
490
491
client\_cert: |+ # etcd-certs/client.crt 인증서
492
493
-----BEGIN CERTIFICATE-----
494
495
-----END CERTIFICATE-----
496
497
client\_key: |+ # etcd-certs/client.key
498
499
-----BEGIN RSA PRIVATE KEY-----
500
501
-----END RSA PRIVATE KEY-----
502
503
cluster:
504
505
- instances: 1
506
507
name: database\_z1
508
509
- instances: 0
510
511
name: database\_z2
512
513
- instances: 0
514
515
name: database\_z3
516
517
- instances: 0
518
519
name: colocated\_z1
520
521
- instances: 0
522
523
name: colocated\_z2
524
525
- instances: 0
526
527
name: colocated\_z2
528
529
election\_timeout\_in\_milliseconds: null
530
531
heartbeat\_interval\_in\_milliseconds: null
532
533
machines:
534
535
- etcd.service.cf.internal
536
537
peer\_ca\_cert: |+ # etcd-peer-ca.crt 인증서
538
539
-----BEGIN CERTIFICATE-----
540
541
-----END CERTIFICATE-----
542
543
peer\_cert: |+ # etcd-certs/peer.crt 인증서
544
545
-----BEGIN CERTIFICATE-----
546
547
-----END CERTIFICATE-----
548
549
peer\_key: |+ # etcd-certs/peer.key
550
551
-----BEGIN RSA PRIVATE KEY-----
552
553
-----END RSA PRIVATE KEY-----
554
555
peer\_require\_ssl: true
556
557
require\_ssl: true
558
559
server\_cert: |+ # etcd-certs/server.crt 인증서
560
561
-----BEGIN CERTIFICATE-----
562
563
-----END CERTIFICATE-----
564
565
server\_key: |+ # etcd-certs/server.key
566
567
-----BEGIN RSA PRIVATE KEY-----
568
569
-----END RSA PRIVATE KEY-----
570
571
garden:
572
573
allow\_host\_access: null
574
575
allow\_networks: null
576
577
deny\_networks:
578
579
- 0.0.0.0/0
580
581
disk\_quota\_enabled: null
582
583
enable\_graph\_cleanup: true
584
585
insecure\_docker\_registry\_list: null
586
587
listen\_address: 0.0.0.0:7777
588
589
listen\_network: tcp
590
591
log\_level: debug
592
593
mount\_btrfs\_loopback: null
594
595
network\_mtu: null
596
597
persistent\_image\_list:
598
599
- /var/vcap/packages/rootfs\_cflinuxfs2/rootfs
600
601
loggregator:
602
603
etcd:
604
605
machines:
606
607
- 10.0.16.24 # controller에서 정의한 etcd의 static\_ips
608
609
loggregator\_endpoint:
610
611
shared\_secret: admin # controller에서 정의한 loggregator\_endpoint의 shared\_secret
612
613
metron\_agent:
614
615
deployment: openpaas-aws-1.0
616
617
metron\_endpoint:
618
619
shared\_secret: admin # changeit: controller에서 정의한 metron\_endpoint의 shared\_secret
620
621
nats:
622
623
machines:
624
625
- 10.0.16.11 # controller에서 정의한 nats의 static\_ips
626
627
password: admin # controller에서 정의한 nats의 password
628
629
port: 4222
630
631
user: nats # controller에서 정의한 nats의 user id
632
633
syslog\_daemon\_config:
634
635
address: null
636
637
port: null
Copied!
기본으로 주어진 인증서 대신 새로 인증서를 생성하기 위해서는 다음과 같은 절차를 따른다. Sample Manifest에서 사용한 인증서 생성 방법을 위해 OpenPaaS-Container 폴더 하위의 diego-cert-gen.tgz 압축을 풀고, 다음 명령을 실행한다.
1
\# tar cvzf diego-cert-gen.tgz
2
3
\# cd diego-cert-gen
4
5
\# ./keygen\_certs.sh
Copied!
위 인증서 생성 명령을 실행 후 최종 인증서의 생성 위치는 다음과 같다.
  • diego-cert/diego-ca.key
  • diego-cert/etcd-peer-ca.crt
  • diego-cert/etcd-certs/peer.cert
  • diego-cert/etcd-certs/peer.key
  • diego-cert/etcd-certs/client.crt
  • diego-cert/etcd-certs/client.key
  • diego-cert/bbs-certs/peer.cert
  • diego-cert/bbs-certs/peer.key
  • diego-cert/bbs-certs/client.crt
  • diego-cert/bbs-certs/client.key
  • diego-certs/ssh_proxy
ssh_proxy 접속을 위한 키(diego-certs/ssh_proxy.fin)는 아래와 같이 openpaas-controller의 manifest에 반영해야 한다.
1
properties:
2
3
4
5
app\_ssh:
6
7
host\_key\_fingerprint: 17:2b:92:3e:03:7b:6c:3a:31:31:1e:f7:49:63:24:b0 # diego-certs/ssh\_proxy.fin 파일 내용으로 치환
8
9
oauth\_client\_id: ssh-proxy
Copied!

3.3. Deployment Manifest 지정

1
> bosh deployment openpaas-container-aws-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를 통해 먼저 프로세스의 상태를 확인한다. 프로세스를 없애고 다시 상태를 확인한다. 다음의 명령어들을 하나씩 실행하면서 프로세스의 상태를 확인한다.
1
monit summary
2
3
killall etcd
4
5
ps –ef | grep etcd
6
7
kill -9 pid
8
9
monit quit etcd
10
11
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***](http://api.115.68.46.29.xip.io) --skip-ssl-validation # cf target 지정
2
3
4
5
cf login
6
7
Email> admin
8
9
Password> admin
10
11
OK
12
13
14
15
cf create-org open-paas
16
17
cf target -o open-paas
18
19
cf create-space dev
20
21
cf target -o open-paas -s dev
22
23
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
3
cf push “application-name” –i “instance\_count” –m “memory\_size”
Copied!
  • Application 배포시 Disk 관련 옵션 (-k)을 지정하지 않은 경우에는
    기본적으로 6G 크기의 디스크 사용량이 지정된다.

4.3. Application Access

Deploy한 Application URL을 Browser 또는 curl 명령어로 Access하여 정상 접근 되는지를 확인한다.
사용법) 배포된 App URL이 hello-spring-test.controller.open-paas.com 일 경우
curl –L http:// hello-spring-test.controller.open-paas.com
Last modified 1yr ago