SlideShare a Scribd company logo
Real implementation of
Containerized Cloud Foundry
on Kubernetes
@jyoshise
Jan 19, 2017
1
自己紹介
• 吉瀬 淳一 (@jyoshise)
• 担当: ギター(たまにじゃんけんで負けるとベース)
•
• Lead Architect, Helion Professional Services APJ
• IaaS(OpenStack)とか
• PaaS(Stackato/CloudFoundry)とか
• アジャイル/クラウドネイティブ開発とか
本日のテーマ
大規模な分散システム=マイクロサービスの集合体
を、Kubernetesの上でライフサイクル管理をおこな
いサービス提供するためにはどんな仕組みが必要
なのか。
なんでわざわざKubernetesの上で
Cloud Foundryなのか
PaaSとは
5
コード
書くンゴ!
ビルド
するンゴ!
デプロイ
するンゴ!
リリース
するンゴ!
環境構築
するンゴ!
運用
するンゴ!
PaaSとは
6
コード
書くンゴ!
ビルド
するンゴ!
デプロイ
するンゴ!
リリース
するンゴ!
環境構築
するンゴ!
運用
するンゴ!
このへんを勝手にいい感じにやってくれるのがPaaS
PaaSに求められる機能
7
• ソースコードからアプリケーションをビルドする
• コードレポジトリ、CIツールとの連動
• ビルドパイプラインの管理
• 各種言語/フレームワークへの柔軟な対応
• アプリケーションの実行環境を提供する
• インフラリソースの管理
• スペースの隔離
• ユーザ/クオータの管理
• スケーリング
• ルーティング/リバースプロキシ
• アプリケーションコンテナを管理する
• バージョンの管理
• ロールバック、Blue-Greenデプロイメント
• サービス間の接続性を提供する
• DBなどのマネージドサービス
• 外部サービスと接続するためのブローカー
• サービスカタログ
• アプリケーションサービス=マイクロサービスの集合体の管理
• テンプレート化とオーケストレーション
Cloud Foundryのいいところ
8
• 多くのPublic PaaSプロバイダが採用している
• NTT-Communications, IBM, Fujitsu, Pivotal, GE, etc
• こっちのPaaSで動くアプリはあっちのPaaSでも動く
• エコシステムが充実している
• 多様な言語/フレームワークに対応するBuildpack
• .NETにも対応してたりとか
• 多様なバックエンドサービスに対応するサービスブローカー
Cloud Foundryの微妙なところ
9
• Cloud Foundry自体が大規模な分散システ
ム
• 多数のマイクロサービスの集合体
• 構築と運用がぶっちゃけすげー大変
• そのためにBOSHという仕組みがあるが
BOSH自体これまた分散システムだった
り・・・
• コンテナエンジンがOCI準拠にはなったもの
の、全体としてコンテナに最適化された仕組
みとは言い難い
客観的にみて
10
• 今いちばん使われていて機能が充実しているPaaSはCloud Foundry
• アプリケーションの開発はコンテナベースにシフトしつつあり、
Containerized Application/Serviceの実行基盤(CaaS)が熱い
• コンテナオーケストレーションの大本命はKubernetes
• PaaSとCaaSの境界がなくなりつつある
HPEのアプローチ
11
• KubernetesベースのCaaSプラットフォームを作る。
• 現状完成度が高いPaaSであるCloud Foundryを、それ自体を一つの
Containerized Serviceとして、CaaSプラットフォームの上で実装する。
HPE Helion Stackato 4.0
12
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
Stackato4の構成要素
14
• 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
Helion Control Plane
18
Helion
Control
Plane
Kubernetes
Helion Service Manager
Helion Cloud Foundry Helion Code Engine MySQL
…
Authentication and Authorization
Infrastructure:
Control Plane:
Services
implemented in
Containers:
P
O
D
P
O
D
P
O
D
…
P
O
D
P
O
D
P
O
D
…
P
O
D
P
O
D
B
IaaSへのKubernetesクラスタの展開
– インストール時は、インストーラ(bootstrap)が設定ファイルを読み込んで、TerraformがIaaSのAPIを叩
いてKubernetesクラスタを展開
– Core Service(HCP,UAA,HSM)のコンテナイメージをDockerHubからPullしてサービスを構成
19
Jump System:
$ bootstrap install …
Infrastructure as a
Service API endpoints
Bootstrap.
properties
Define Infrastructure
Kube-Master
Kube-Node
Kube-Node
Gluster
Gluster
IaaSへの展開イメージ(OpenStackの例)
20
Stackato Tenant Network
DHCP
provided by
OpenStack
External Network
Gluster1 Gluster2
Kubernetes
Master
Kubernetes
Node1
Kubernetes
Node2
Kubernetes
Node3
Centralized
Virtual
Router
LBaaS
LBaaS
LBaaS
LBaaS
LBaaS
LBaaS
Internet
Jump
DNS Server
Required
21
Application
Platform
Services
(i.e. HCF )
Control Plane
M
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
AZ # 1 AZ # 2 AZ # 3
MM NN
MMM NN
MMM NN
HA構成
見てみましょう
22
• 設定ファイル(bootstrap.properties)
• IaaS(OpenStack)から見ると: Horizon
• HCPから見ると:
• $ hcp list-nodes
• Kubernetesから見ると:
• $ kubectl get nodes
• ノード追加してみる?
HSM (Helion Service Manager)
23
HSM Services
24
HSMで管理されるサービスの定義
–SDL: Service Definitions
–サービスのテンプレート
–k8sの”deployment”,”service”の構成情報
–IDL: Instance Definitions
–サービスをデプロイする際のパラメーター
25
Service Deployment – High-Level Flow
Service
Creation
Initiated
Create
Volumes
Pre-Flight
Create
Services
Create
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

More Related Content

K8s meetup containerized_cloud_foundry