파스 - 타 4.0 오픈소스의만남 (CF+K8S = PaaS-TA) 2018. 12. 11 파스 - 타서비스기술개발비디현재욱이사
목차 Ⅰ 들어가기 Why Kubernetes PaaS-TA CaaS 통합전략 Kubernetes 소개 Ⅱ 2018 년개발내용 Ⅲ 발전방향 1
Why Kubernetes Ⅰ. 들어가기 Cloud Native 와클라우드 App 실행환경의필요성 12 Factors App DevOps Cloud Native Scale-Out Antifragility 가볍고, 수평확장이가능하며, 안정적인클라우드 App 실행환경 ( 플랫폼 ) 필요 2
Why Kubernetes Ⅰ. 들어가기 클라우드 App 실행환경유형과 PaaS-TA 의수용성증대방향 유연성, 개발자유도 추상수준, 개발속도 3
PaaS-TA CaaS 통합전략 Ⅰ. 들어가기 PaaS 와 CaaS 의비교 Cloud Foundry vs. Kubernetes 구분 항목 Cloud Foundry Kubernetes 개념 PaaS 유형 Application PaaS Container PaaS(aka CaaS) 개발환경 주사용자인터페이스 CLI CLI IDE 지원 Eclipse Plug-in 제공 Eclipse Plug-in 제공 애플리케이션배포단위 애플리케이션빌드결과물 컨테이너이미지 실행환경 배포전이미지저장소 Artifactory( 옵션 ) Docker Registry( 필수 ) 애플리케이션인스턴스 ( 컨테이너 ) 생성주체 플랫폼내부빌드팩 개발자또는배포파이프라인 컨테이너오케스트레이터 플랫폼내부 Diego Kubernetes 자체 지원컨테이너유형 Garden Linux Docker/RunC/OCI 라우팅기반 DNS IP 주소 컨테이너-스토리지연결 외부스토리지와 API 연동 컨테이너-스토리지직접연결 서비스환경 서비스카탈로그연결 개별백엔드서비스의서비스브로커를통한연결 Helm을통한 Helm Chart 연결 서비스프로비저닝 / 바인딩방식 Open Service Broker APIs 이용 Open Service Broker APIs 이용 운영환경 인프라구성주체플랫폼내부 Bosh 운영자또는 IaaS 자동화도구 모니터링방식 Metric 제공, 저장및가시화는별도구현 Metric 제공, 저장및가시화는별도구현 미터링프레임워크 CF Abacus Operator Metering 보안멀티테넌시지원 Organization/Space, Quota 관리 Namespace(Virtual Cluster), Quota 관리 4
PaaS-TA CaaS 통합전략 Ⅰ. 들어가기 Kubernetes 를 PaaS-TA 에통합하기위한방안검토 (1 안, 2 안 ) 1 Kubernetes 클러스터에파스 - 타배포 2 파스 - 타 Diego Container 를 Kubernetes 로변경 파스 - 타를 Kubernetes 클러스터위에 Bosh 로배포 (bosh kubernetes cpi 활용 ) 모든 kubernetes 클러스터에 BOSH 릴리즈를배포할수있어파스 - 타설치가가능함 현재기업에서운영중인 Kubernetes 클러스터에파스 - 타를바로설치하고운영할수있음 파스 - 타에서사용하는 Diego 대신 Kubernetes 를사용하여 container 를관리 (OpenShift 아키텍처와동일 ) Kubernetes 로변경하기위해서는 CloudFoundry 의많은양의소스를수정하고테스트해야함 5
PaaS-TA CaaS 통합전략 Ⅰ. 들어가기 Kubernetes 를 PaaS-TA 에통합하기위한방안검토 (3 안, 4 안 ) 3 서비스형태로 Kubernetes Cluster 를제공 4 파스 - 타와 Kubernetes 를융합하여사용 파스 - 타에서 Kubernetes 클러스터를서비스형태로제공 개발자포탈기반서비스프로비저닝을통한손쉬운활용지원 사용자가요청한클러스터구조로 Kubernetes 자체제공 사용자가요청한만큼 Kubernetes 환경을제공하므로 IaaS 자원이많이필요 파스 - 타에서 Kubernetes 클러스터를서비스형태로제공 클러스터자동확장할수있게서비스를구성하고 Multi tenancy 기능제공 사용자가개발하는최종어플리케이션은파스 - 타에배포 어플리케이션에필요한백엔드서비스가파스 - 타에없는경우 docker 이미지를통해필요서비스구성 기존 docker 로개발한 third-party 서비스를빠르게런칭 6
PaaS-TA CaaS 통합전략 Ⅰ. 들어가기 PaaS-TA CaaS 설계원칙 설치와운영의용이성, 사용의편의성을제공하고, PaaS/CaaS 각플랫폼들의장점들이서로의플랫폼들이가진약점들을상호보완하도록설계원칙을정의 4 가지안중 3, 4 안을융합한형태로통합전략수립 Kubernetes Virtual Cluster 를서비스형태로제공하여멀티테넌시구현 Bosh 를이용한통합적이고일관성있는설치 / 구성과운영관리 테넌트별별도계정생성과롤기반의접근권한제어 Kubernetes 전용대시보드제공 애플리케이션 Backing Service 용도로활용가능 kubectl (CLI) 기반의컨테이너배포및관리 7
Kubernetes 소개 Ⅰ. 들어가기 Kubernetes 의구조와주요특징 컨테이너화된애플리케이션의배포, 확장및관리를위한오픈소스플랫폼 구글설계후, 현재리눅스재단에서관리, Go 언어로작성, Apache License 2.0 자동배치, 자동재시작, 자동복제, 자동확장으로애플리케이션상태확인및셀프복구수행 컨테이너화된애플리케이션과해당리소스의즉시확장기능지원, 스토리지장착으로스테이트풀애플리케이션실행 컨테이너를 Pod으로분류, 컨테이너급증등의문제해결 효과적인하드웨어활용으로리소스사용효율극대화, 엔터프라이즈애플리케이션실행에용이 8
Kubernetes 소개 Ⅰ. 들어가기 Pivotal 과 RedHat 배포판 Pivotal Container Service RedHat OpenShift 오픈소스 Kubernetes 로구축 (BOSH 로배포및운영하여안정적인릴리즈와지속적인호환성제공 ) Production-ready ( 고가용성제공, Built-in health checks, scaling, auto-healing and rolling upgrade) Multicloud GCP APIs access (GCP Service Broker 를사용하여 Google Cloud API 를엑세스 ) Fully automated Ops (Fully automated deploy, scale, patch, upgrade. No downtime, CD 파이프라인제공 ) Bare-Metal, VM(vSphere, Hyper-V, RHEV 등 ), Public/Private IaaS 제약없이설치 OpenVswitch 를통한자동 Networking 구성 관리및모니터링을위한 Web Console, REST API 및 CLI 제공 AutoScaler 를통한 Docker 컨테이너자동확장 / 축소 (Auto-Scaling) Router 를통한자동부하분산 (Load-Balancing) Wildcard entry 를통한 DNS 연계제공 JBoss EAP 를통한 WAS 클러스터링 (Session Clustering) 기능 9
Kubernetes 소개 Ⅰ. 들어가기 PRANCHER 와 IBM 배포판 RANCHER 2.0 IBM ICP Unified Cluster Management ( 여러 Kubernetes 클러스터를중앙에서관리 ) Modular infrastructure services Application Workload Management ( 통합경보, 로그수집및 CI/CD 파이프라인을구현 ) An app catalog you ll actually use (App 관리가쉽고, 다중 Container 클러스터 App 에반복적으로배포 ) Role based access control High availability Kubernetes - Cloud Foundry 간 Multi-instance 의다이렉트연동 WebSphere Liberty, DB2 및 MQ 애플리케이션의컨테이너최적화 다중클라우드관리자동화, 보안스캐닝, 데이터암호화및접근제어 VMware, Canonical 또는 OpenStack 을사용하여구축및인프라를선택 대부분의 DevOps 도구를지원 10
목차 Ⅰ 들어가기 Ⅱ 2018 년개발내용 2018 년구현범위 PaaS-TA CaaS Kubernetes 개발실적 Ⅲ 발전방향 11
2018 년구현범위 Ⅱ. 2018 년개발내용 CaaS 기능을서비스화 12
PaaS-TA CaaS Kubernetes Ⅱ. 2018 년개발내용 CaaS Bosh Release 개발 Kubernetes 엔진영역 Master 노드 Worker 노드 Docker Registry Master 및 Worker 노드확장가능 CaaS 서비스를하기위한추가개발영역 Service Broker Dashboard UI API Servers Database Server Loader balancer API 및 Dashboard VM 확장가능 13
PaaS-TA CaaS Kubernetes Ⅱ. 2018 년개발내용 Multi Tenant 지원 CaaS 서비스생성시논리적으로완전히격리된공간 (Namespace) 을 CF의조직 (Organization) 단위에제공 CF의조직 (Organization) 단위로필요시 CaaS 서비스생성을요청할수있음 CF의할당조직 (Organization) 에만접근이허용되고, 포탈 /PaaS/CaaS와통합인증 Namespace 자원사용용량 (Quota) 설정가능 PaaS-TA Kubernetes ORG A Virtual Cluster A ORG B Virtual Cluster B 14
PaaS-TA CaaS Kubernetes Ⅱ. 2018 년개발내용 롤기반접근권한제어 Namespace Resources Roles Pod Service Account X Service Account Y Service Account Z Role Binding P Role Binding Q Role A Role B Role C Role D Role E Deployments ReplicationController ReplicaSet StatefulSets DaemonSet Services Volumes Other resources 15
PaaS-TA CaaS Kubernetes Ⅱ. 2018 년개발내용 포털및대시보드 16
PaaS-TA CaaS Kubernetes Ⅱ. 2018 년개발내용 Kubectl 을이용한 Container 관리제공 대시보드의 Access 정보로 kubectl 을이용하기위한환경설정을함 17
개발실적 Ⅱ. 2018 년개발내용 Multi tenancy 개발 - Github URL : https://github.com/paas-ta/paas-ta-caas-api 18
개발실적 Ⅱ. 2018 년개발내용 서비스브로커개발 - Github URL : https://github.com/paas-ta/paas-ta-caas-service-broker 19
개발실적 Ⅱ. 2018 년개발내용 Isolation 사용자대시보드 via Resource 개발 -Control Github URL : https://github.com/paas-ta/paas-ta-caas-dashboard 20
개발실적 Ⅱ. 2018 년개발내용 사용자대시보드개발 - 사용자대시보드개발상세내용 Intro Users 및 Roles 관리 Overview 와 Access 기능으로구성 Overview 에서서비스프로비져닝으로할당된 Namespace, Plan 및 Resource 할당량정보제공 Access 에서 Kubectl 을이용하여 Container 를관리할수있도록, Kubectl 다운로드및환경정보를설정방법을제공 Users 메뉴에서는 CaaS 서비스사용자에게 Role 을할당 (Administrator Role 유저만할당가능 ), 파스 - 타포탈에서초대한사용자는대시보드최초접근시 Init User Role 로할당 Roles 관리에서는 Administrator, Regular User 및 Init User Role 에대해 resource 할당관리 21
개발실적 Ⅱ. 2018 년개발내용 사용자대시보드개발 - 사용자대시보드개발상세내용 Workloads Services Overview 는 deployments, Pods, Replica Sets 상태정보를보여주는대시보드로구성 Deployments 는애플리이션인스턴스들의생성정보와, Event, Yaml 파일정보를제공 Pods 는애플리케이션이구동되는 Pod 정보를제공 Replica Sets 은지정한개수로 Pod 를여러개복제하여유지하는역할로, Event 와 Yaml 파일정보를제공 Services 는 Pod 의논리적집합과액세스정책을정의하는추상화된개념 Load balancing, 내부접근을위한 port 및외부접근가능한 nodeport, 서비스디스커버리를제공하는역할로서비스상세, Events 와 Yaml 파일정보를제공 22
목차 Ⅰ 들어가기 Ⅱ 2018 년개발내용 Ⅲ 발전방향 Tool Set 편의성향상 23
Tool Set Ⅲ. 발전방향 배포파이프라인및애플리케이션라이프사이클관리 배포파이프라인 어플리케이션라이프사이클관리 현재파스 - 타 CI/CD 파이프라인의배포타겟으로 Cloud Foundry 외 Kubernetes 가가능토록구성 빌드후애플리케이션을컨테이너화하여레지스트리에저장하는과정추가 블루 - 그린배포지원 배포파이프라인을 As-a-Service 형태로제공하고파스 - 타포털과통합인증처리 파스 - 타포털에서별도제공되는 GUI 환경 오픈소스 Agile 프로젝트관리 SW 솔루션분석및검증 서비스브로커개발 ( 프로비저닝을통한서비스인스턴스생성및해지기능및서비스정보조회등 ) Bosh2.0 기반의서비스릴리즈형태로개발 프로비저닝을통해제공되는서비스의통합인증기능개발 24
편의성향상 Ⅲ. 발전방향 웹콘솔및모니터링시스템 웹콘솔 모니터링 조회위주의현재대시보드를 Operation 이가능한수준으로고도화 컨테이너배포와운영, 파이프라인구성과운영, 모니터링등이가능한통합웹콘솔 파스 - 타포털통합인증처리 파스 - 타포털과동일한 Look & Feel 제공 Kubernetes 메트릭값을수집하여분석하는클러스터상태모니터링 기존파스 - 타모니터링대시보드와통합 파스 - 타포털통합인증처리 25
26