K8s meetup containerized_cloud_foundry

Post on 25-Jan-2017

658 views 1 download

Transcript of K8s meetup containerized_cloud_foundry

Real implementation ofContainerized Cloud Foundryon Kubernetes

@jyoshise

Jan 19, 2017

1

自己紹介

• 吉瀬 淳一 (@jyoshise)• 担当 :  ギター(たまにじゃんけんで負けるとベース)

•            

• Lead Architect, Helion Professional Services APJ• IaaS(OpenStack) とか• PaaS(Stackato/CloudFoundry) とか• アジャイル / クラウドネイティブ開発とか

本日のテーマ

大規模な分散システム = マイクロサービスの集合体を、 Kubernetes の上でライフサイクル管理をおこないサービス提供するためにはどんな仕組みが必要なのか。

なんでわざわざ Kubernetesの上でCloud Foundryなのか

5

PaaSとはコード書くンゴ! ビルドするンゴ! デプロイするンゴ! リリースするンゴ!環境構築するンゴ! 運用するンゴ!

6

PaaSとはコード書くンゴ! ビルドするンゴ! デプロイするンゴ! リリースするンゴ!環境構築するンゴ! 運用するンゴ!

このへんを勝手にいい感じにやってくれるのがPaaS

7

PaaSに求められる機能• ソースコードからアプリケーションをビルドする

• コードレポジトリ、 CI ツールとの連動• ビルドパイプラインの管理• 各種言語 / フレームワークへの柔軟な対応

• アプリケーションの実行環境を提供する• インフラリソースの管理• スペースの隔離• ユーザ / クオータの管理• スケーリング• ルーティング / リバースプロキシ

• アプリケーションコンテナを管理する• バージョンの管理• ロールバック、 Blue-Green デプロイメント

• サービス間の接続性を提供する• DB などのマネージドサービス• 外部サービスと接続するためのブローカー• サービスカタログ

• アプリケーションサービス=マイクロサービスの集合体の管理• テンプレート化とオーケストレーション

8

Cloud Foundryのいいところ• 多くの Public PaaS プロバイダが採用している

• NTT-Communications, IBM, Fujitsu, Pivotal, GE, etc• こっちの PaaS で動くアプリはあっちの PaaS でも動く

• エコシステムが充実している• 多様な言語 / フレームワークに対応する Buildpack• .NET にも対応してたりとか• 多様なバックエンドサービスに対応するサービスブローカー

9

Cloud Foundryの微妙なところ• Cloud Foundry 自体が大規模な分散システム

• 多数のマイクロサービスの集合体• 構築と運用がぶっちゃけすげー大変• そのために BOSH という仕組みがあるが BOSH 自体これまた分散システムだったり・・・

• コンテナエンジンが OCI 準拠にはなったものの、全体としてコンテナに最適化された仕組みとは言い難い

10

客観的にみて• 今いちばん使われていて機能が充実している PaaS は Cloud

Foundry

• アプリケーションの開発はコンテナベースにシフトしつつあり、 Containerized Application/Service の実行基盤 (CaaS) が熱い• コンテナオーケストレーションの大本命は Kubernetes

• PaaS と CaaS の境界がなくなりつつある

11

HPEのアプローチ• Kubernetes ベースの CaaS プラットフォームを作る。• 現状完成度が高い PaaS である Cloud Foundry を、それ自体を一つの Containerized Service として、 CaaS プラットフォームの上で実装する。

HPE Helion Stackato 4.0

12

vSphereAWSHelion OpenStack

HPE Helion Stackato Product Overview

13

Platform Services

Cloud Foundry Code Engine (CI)

modern (CF-based) runtime for deploying and managing 12-factor cloud native applications

Developer &Operator

Experience

Console

Tools

CLI

commercial product features

Control Plane

Kubernetes Service Manager

modern (Kubernetes-based) control plane for orchestrating containerized services

14

Stackato4の構成要素• HCP(Helion Control Plane)

• IaaS の API を利用し、 k8s クラスタの管理を行う。• IaaS の API を利用し、 Containerized Service に必要なインフラリソース(ストレージ、 LB など)を後述の HSM に提供する。• 認証 / 認可を管理する( UAA )。

• HSM(Helion Service Manager)• Containerized Services のサービスカタログの管理、サービスインスタンスの作成 / 配備と実行管理を行う。

• Containerized Services• HCF(Helion Cloud Foundry): Cloud Foundry そのもの• HCE(Helion Code Engine) : Concourse CI ベースの CI エンジン• HSC(Helion Service Console): 管理用の Web UI• MySQL, Postgres, Redis など

Stackato4の構成要素

15

• HCP(Helion Control Plane)• IaaS の API を利用し、 k8s クラスタの管理を行う。• IaaS の API を利用し、 Containerized Service に必要なインフラリソース(ストレージ、 LB など)を後述の HSM に提供する。• 認証 / 認可を管理する( UAA )。

• HSM(Helion Service Manager)• Containerized Services のサービスカタログの管理、サービスインスタンスの作成 / 配備と実行管理を行う。

• Containerized Services• HCF(Helion Cloud Foundry): Cloud Foundry そのもの• HCE(Helion Code Engine) : Concourse CI ベースの CI エンジン• HSC(Helion Service Console): 管理用の Web UI• MySQL, Postgres, Redis など

• これらは Kubernetes, Terraform, Cloud Foundry などの OSS を活用していますが、 HCP や HSM などの実装は HPEが開発したプロプラです。

• これら HPE が開発したコードはMicrofocus との提携により、 SUSE に移管され、 HPE はディストリビューションに注力します。

• SUSE は Kubernetes および Cloud Foundry のコミュニティーへのコントリビュートを強化していくと表明しています。

16

見てみましょう• HSC• HCF• HCE• ビルドパイプラインの作成

HCP (Helion Code Engine)

17

18

Infrastructure-as-a-Service PlatformvSphere, AWS or Openstack with HOS or CloudSystem

Helion Control Plane

HelionControl Plane

Kubernetes

Helion Service Manager

Helion Cloud Foundry Helion Code Engine MySQL

Authentication and Authorization

Infrastructure:

Control Plane:

Services implemented in Containers:

POD

POD

POD

… POD

POD

POD

… POD

POD

19

B

IaaSへの Kubernetesクラスタの展開

– インストール時は、インストーラ (bootstrap) が設定ファイルを読み込んで、 Terraform が IaaSの API を叩いて Kubernetes クラスタを展開– Core Service(HCP,UAA,HSM) のコンテナイメージを DockerHub から Pull してサービスを構成

Jump System:$ bootstrap install …

Infrastructure as a Service API endpoints

Bootstrap.properties

Define Infrastructure

Kube-Master

Kube-NodeKube-Node

Gluster

Gluster

SW Install

20

IaaSへの展開イメージ( OpenStackの例)

Stackato Tenant Network

DHCP provided by OpenStack

External Network

Gluster1 Gluster2 Kubernetes Master

Kubernetes Node1

Kubernetes Node2

Kubernetes Node3

Centralized Virtual Router

LBaaSLBaaS

LBaaSLBaaS

LBaaSLBaaS

Internet

Jump

DNS Server Required

21

App_i_0Application

PlatformServices

(i.e. HCF )

IaaS

HCF HA components are multi-instance (including Diego Cells) & distributed across AZs by Control Plane

Control PlaneMultiple Kubernetes Masters and Nodes across AZs

M

Compute, Storage, Network Isolation

CF_A_0 CF_A_1 CF_A_2

CF_B_0

CF_C_0

CF_B_1

CF_C_1

CF_B_2

CF_C_2

App_i_3 App_i_1 App_i_4 App_i_2 App_i_n

AZ # 1 AZ # 2 AZ # 3

User creates multiple instances of Apps that are distributed across Diego Cells

MM NNMMM NN

MMM NN

HA構成

22

見てみましょう• 設定ファイル( bootstrap.properties)• IaaS(OpenStack) から見ると : Horizon• HCP から見ると :

• $ hcp list-nodes• Kubernetes から見ると :

• $ kubectl get nodes• ノード追加してみる?

HSM (Helion Service Manager)

23

24

HSM Services

25

HSMで管理されるサービスの定義–SDL: Service Definitions

–サービスのテンプレート–k8s の” deployment”,”service” の構成情報

–IDL: Instance Definitions–サービスをデプロイする際のパラメーター

Service Deployment – High-Level Flow

Service Creation Initiated

Create Volumes Pre-Flight Create

ServicesCreate

Deployment Post-Flight Completed

26

HSM Create service

HSM Service Created

- HSM service creation and validation- Hand off to HCP Instance manager

- Creation of required volume for service- Handled by the HCP Resource Manager

- Run the Pre-Flight POD for the service- Performs pre-instance configuration tasks- If an Update, perform any update-specific tasks

- Create the Kubernetes “Service” objects- Handles network Endpoints and Load Balancers

- Creates the Kubernetes “Deployment”- Initiates the creation of PODs for the service- Schedules PODs according to AZ definitions

- Run the Post-Flight POD for the instance- Performs deployment configuration tasks- If an Update, perform any update-specific tasks

- Post-Flight completes- No errors encountered

27

見てみましょう• Service Catalog

• $ hsm list-services• SDL• IDL

• $ hsm create-instance stackato.hpe.redis 3.0 -d --ask-all-params• インスタンスの作成

• $ kubectl logs –f ipmgr-0-xxx --namespace hcp• $ hsm create-instance stackato.hpe.redis 3.0• $ hsm list-instances

• HCF のインスタンスはどうなっているか• $ hsm get-instance hcf• $ kubectl get pods --namespace hcf• $ kubectl get services --namespace hcf• $ kubectl get deployment api-0 -o json --namespace hcf• $ kubectl get pv | grep hcf

運用で気になるところ

28

29

運用で気になるところ• ログはどうすんの?

• Pod レベルのログは、 HCP の” flight-recorder” pod に集められてそこから Logstash などに送ります。• Cloud Foundry 上のアプリケーションレベルのログは、 Cloud Foundry の loggregatorサービスで管理できます。

• 監視はどうすんの?• 一般的には Cloud Foundry の監視は BOSH で行いますが、 Stackato は BOSH を使っていません。• Containerized Cloud Foundry の監視= Kubernetes の Pod の監視なので、 Prometheusなどを使うのがよいと思います。

• パッチとかバージョンアップはどうすんの?• HSM で管理されるサービスは、新たな SDL を使ってバージョンアップできます。 Kubernetes のローリングアップグレードの仕組みを使います。• HCP/HSM 自体も Containerized Service なので同様にアップグレードできます。• Kubernetes 自体のバージョンアップは、新ノード追加→旧ノード削除 で行います。

Questions?

30