3. PaaS 환경 설치를 위한 Ansible Playbooks
• OpenShift와 Kubernetes 자동 설치 도구
OpenShift에서 제공하는 설치 패키지
– Ansible Playbooks
Kubernetes’ SIG(Special Interest Group)
프로젝트 - Ansible playbooks
openshift-ansible-playbooks
OpenShift 설치
OpenShift 업그레이드
OpenShift 삭제
확장성 제공(추가, 단일 설치등)
kubespray
kubernetes 설치
kubernetes 업그레이드
kubernetes 삭제
18. • Provisioning - Architecture
ANSIBLE SERVICE BROKER - Architecture
OpenShift
Service Catalog
Ansible Service
Broker
Red Hat
Container Catalog
serviceA-apb
Pull
Provisioned Service
2
3
APB
Container
(serviceA)
serviceA
Container
Click Application1
19. • Action playbooks(설치, 삭제, 권한부여, 권한삭제) 및 meta 데이터를 가지고 있는 이미지
를 생성
ANSIBLE PLAYBOOK BUNDLE (APB)
$ apb build
Ansible Runtime Ansible Playbooks
Ansible PlayBook Bundle (Container Image)
Container Registry
provision.yml
deprovision.yml
bind.yml
unbind.yml
apb.yml
20.
21. • APB 생성 절차
Ansible Playbook Bundle(APB) 생성 절차
apb Type의 Ansible Role 생성
apb 를 base64 인코딩하여 Dockerfile의 Label로 생성
소스코드로 부터 Build configuration 생성
Build configuration을 빌드
apb를 registry에 추가
apb를 서비스 카탈로그에 등록
• $ ansible-galaxy init --type=apb helloworld-apb
• $ apb bundle prepare
• $ oc new-build --binary=true --name helloworld-apb -n
openshift
• $ oc start-build --follow --from-dir . helloworld-apb
• $ apb registry add helloworld-apb --type
local_openshift –namespaces openshift
• $ apb catalog relist
22. • apb.yml
apb.yml : 메타 데이터 정의 파일
name: helloworld-apb
description: your description
bindable: False
async: optional
metadata:
displayName: helloworld-apb
plans:
- name: default
description: This default plan
deploys helloworld-apb
free: True
metadata: {}
parameters:
- name: namespace
type: string
default: hello-world-apb
28. • 전자정부 프레임워크 애플리케이션 빌드 및 배포 환경 자동 구성
Ansible Service Broker를 이용한 Application 배포 환경
OpenShift
Service Catalog
Ansible Service
Broker
Red Hat
Container Catalog
egov-apb
POC Project
이미지 Pull
egov-apb 선택
서비스 자동 설치
Nexus3 Container
Jenkins Container
MariaDB Container
JBoss EAP 7.1
Container
1
2
3
4
5
6
7
Web Site
8 테스트 애플리케이션 확인
29.
30. “살아 남는 종(種)은 강한 종이 아니고,
또 우수한 종도 아니다.
변화에 적응하는 종이다. ”
- Charles Darwin, 1809
31.
32. 제품이나 서비스에 관한 문의
콜 센터 :02-469-5426 ( 휴대폰 : 010-2243-3394 )
전자메일:sales@opennaru.com
Notes de l'éditeur
Ansibl playbooks 기반으로 PaaS 환경 자동 설치가 가능합니다. Openshift의 경우 Redhat에서 제공해주는 OpenShift-playbook을 통하여 설치가 가능하고, Kubernetes는 Open source projec인 kube sprary를 통하여 자동 설치 할 수 있습니다.
각각 설치, 업그레이드, 삭제에 관련된 기능은 똑같다고 보시면 됩니다.
쿠버네티스를 수동으로 설치할 경우 어떻게 하나요?Kubernetes에서 Cluster을 수동으로 설치 할 경우 수작업으로 각 노드별로 필요 패키지 구성이 필요합니다.요구사항대로 OS에 필수 패키지 및 기본 셋팅부터 Cluster에를 구성하기위한 API, Scheduler Controller Manger, Kubectl utility 등 필수 환경을 수동으로 구성해야합니다.설치시 설정이나 패키지 버전이 맞지 않은경우 잘못되는 경우 원인을 찾기 힘들기 때문에 수동 설치시 불편함이 많습니다.
Docker는 왜 이름이 도커일까요? Container는 왜 이름이 컨테이너일까요?
Docker는 바로 부두노당자라는 의미로 Container가 바로 무역의 세계화 혁명의 핵심이 되었기 때문입니다.
자, Unix에서 Linux로 이동한다고 생각해 보세요.
OS, 미들웨어, 애플리케이션, 보안모듈, 라이브러리 등 하나하나 설치해야 했습니다.
Container를 이용한다면?
AWS, AZURE등 어떤 환경으로 옮기더라도 Container 박스만 탑재하면 쉽고 빠르게 옮길 수 있습니다.
- 계속 강조했던 PaaS의 핵심은 개발, 배포, 운영이라는 것이 바로 결국은 DevOps입니다.
그냥 PaaS만 써보려면 Docker만 설치하면 됩니다. 바로 OpenShift가 DevOps 환경을 제공합니다.
- 현재 전 세계적으로 PaaS를 제공하는 플랫폼은 OpenShift가 가장 많이 설치되어 있고, 국내도 PaaS는 대부분 OpenShift가 도입되어 있습니다.
삼성전자, 롯데카드, 온나라, 두산정보통신 등이 OpenShift를 도입하였습니다.
- PaaS는 OpenSource 기반의 Enterprise 제품이기 때문에 기술지원을 받을 수 있습니다.
Container 기반 운영환경을 이야기 할텐데,
지금 개발 및 배포는 어떻게 진행하고 계세요? 아마도 다음 장표로 설명이 가능할 것 같습니다.
Ansible Service Broker가 동작하는 아키텍처 입니다.
고객이나 서비스 제공자가 Service Catalog에서 설치를 원하는 APB를 선택하면 Ansible Service Broker는 해당 APB 이미지를 가져와서 서비스 컨테이너를 프로비전 합니다.
APB는 Self-provision을 하기 위한 playbooks와 meta 데이터를 가지고 있는 이미지 입니다.
각 Action playbooks 역할을 하는 4개의 파일과 metadata 파일 그리고 Ansible playbooks로 구성되어있습니다.
각 action playbooks는 Provsion.yml, deprovision.yml bind.yml unbind.yml 이 있으며, apb.yml 메타 데이터도 포함되어있습니다.
이제 OpenShift에 대해서 소개할텐데, OpenShift를 도입하는 핵심이 뭐라고 생각하세요?
왜 PaaS를 하려고 할까요?
Step1번 부터 Step 6번까지 APB 생성 및 Service Catalog 갱신 방법 입니다.
ansible-galaxy 명령어를 사용하여 기본 apb playbooks 생성
Dockerfile에 apb 스펙을 base64 endcoding을 하여 넣기 위해 bundle prepar를 합니다.
Openshift 프로젝트에서 apb 이미지를 빌드하기 위해 buildconfig를 생성 합니다.
Build config를 실행하고 이미지가 정상적으로 생성 되었으면 apb registr에 생성된 apb 이미지를 등록합니다.
추가된 apb 이미지를 service catalog에서 확인 하기 위해 catalog relist를 실행 합니다.
APB의 Meta data가 들어가 있는 yml 파일입니다.
Service Catalog에서 선택한 Service를 설치 하기 위한 action playbook 입니다.
Service Catalog에서 선택한 Service를 삭제 하기 위한 action playbook 입니다.
Service Catalog에서 선택한 Service를 Self-provision 하기 위해 필요한 이미지를 만듭니다.
왜 컨테이너인가에 대한 소개입니다.
현재 웹서버, 서블릿 엔진은 이미 성능 적인 측면에서 거의 평준화 되었습니다.
하지만 앞서 설명한 세밀한 유입 제어가 뒷받침 되지 않는다면 배포나 특정 서버 작업 시에 안정성을 확보하기 어렵습니다.
하지만 Undertow 에서 제공하는 세밀한 유입 제어 부분을 활용한다면 배포 및 특정 작업 시에도 안정성을 확보하여 더욱 품질 좋은 서비스를 할 수 있게 될 것입니다.
그렇기에 저희는 엔터프라이즈 환경에서 Undertow, JBoss EAP 를 적극 추천합니다.