ibm cloud private...2018/12/06  · ibm cloudにデプロイする際のアプリのurl?...

44
IBM Cloud Private IBM Cloud Private Microservice Builder ⽇本アイ・ビー・エム株式会社 クラウド事業本部

Upload: others

Post on 07-Oct-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM CorporationIBM Cloud Private

IBM Cloud PrivateMicroservice Builder

⽇本アイ・ビー・エム株式会社クラウド事業本部

Page 2: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation

アジェンダMicroservice Builder概要

— マイクロサービス・ライフサイクル— Microservice Builder(MSB)— MSBに含まれるツール— MSBライセンス

2

Microservice Builder機能詳細— 開発

l bx devl Liberty App Acceleratorl MicroProfile

— ビルド/デプロイl MSBパイプライン

— 監視l MSBファブリックl ELKスタック

Page 3: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation

Microservice Builder概要

Page 4: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

マイクロサービス・ライフサイクル

ライフサイクルを⼩さく・素早く・継続的に回すことでビジネスの変化に柔軟に対応

モノリシック

各機能の結び付きが強い素早く環境を準備

コンテナー

迅速に新たなサービスを提供したい!

4

ビルド/デプロイ開発 監視 ⼩さいサイクルで素早くアプリを更新

機能の追加や更新がしづらい

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

ビルド/デプロイ開発 監視

モノリシック+物理

マイクロサービス×コンテナー ×DevOps

開発と運⽤が連携環境の準備に時間がかかる

オンプレ物理仮想化統合

マイクロサービス

機能ごとにアプリを更新

DevOps×

××

4

Page 5: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

ビルド/デプロイ

Microservice Builder

5

マイクロサービス・ライフサイクルをスムーズに回すために必要なツール⼀式を提供

IBM Cloud PrivateGitHub

監視

Microservice Builder

開発

k8s

bx dev create/build/run

src

Page 6: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builderに含まれるツール

6

Microservice Builderに含まれるツール⼀式

・ IBM Cloud Developer Tools CLI

・Liberty app Accelerator

・MicroProfile

・Microservice Builderパイプライン

Jenkins

Maven

・Microservice Builderファブリック

Zipkin

証明書管理

・ELKスタック

elasticsearch logstash kibana

開発 ビルド/デプロイ 監視

bx dev create/build/run

Page 7: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

MSBライセンス

7

n 以下の製品にライセンスが同梱されておりサポートが受けられる

IBM WebSphere Application Server NDIBM Cloud Private

Page 8: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation

機能詳細

Page 9: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder

9

ライフサイクルの流れに沿って機能を紹介します

・ IBM Cloud Developer Tools CLI

・Liberty app Accelerator

・MicroProfile

・Microservice Builderパイプライン

Jenkins

Maven

・Microservice Builderファブリック

Zipkin

証明書管理

・ELKスタック

elasticsearch logstash kibana

開発 ビルド/デプロイ 監視

bx dev create/build/run

Page 10: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

IBM Cloud Developer Tools CLI (bx dev)n bx dev コマンドを使⽤してローカル環境でアプリ開発– IBM Cloud CLI (bx)• IBM Cloudでリソースを管理するためのコマンドライン• Bluemix CLIの後継

– IBM Cloud Developer Tools CLI (bx dev)• IBM Cloud CLIの拡張としてインストール• Web プロジェクトを作成、開発、デプロイするためのコマンドライン

n 主な bx dev コマンド

10

bx dev create bx dev build bx dev runアプリケーションの作成 アプリケーションのビルド アプリケーションの実⾏

⾃動⽣成されたContainer(Maven)をベースにビルド Dockerコンテナーのビルドと実⾏アプリケーションプロジェクトの雛形作成

DockerfileJenkinsfilechartcli-config.ymlmanifest.ymlmanifestspom.xmlsrc

src

ローカル環境で開発bx dev

GitHubにpush

bx dev

Liberty Liberty

Page 11: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

manifest.ymlにホスト名が追加されるIBM Cloudにデプロイする際のアプリの URL

? ⾔語の選択:1. Java - MicroProfile / Java EE2. Node3. Python4. Java - Spring FrameworkEnter a number> 1

? プロジェクトの名前を⼊⼒> demo

? プロジェクトのホスト名を⼊⼒> hostname

? サービスをプロジェクトに追加しますか? [y/n]> nプロジェクト demo は、現⾏ディレクトリーに正常に保存されました。

bx dev create 実⾏例

$ bx dev create

? パターンの選択:1. Web アプリ2. モバイル・アプリ3. Backend for Frontend4. マイクロサービスEnter a number> 4

? スターターの選択:1. BasicEnter a number> 1

IBM Cloud上にサービスが追加されるserver.envにサービス構成情報が追加される

対話式でプロジェクトの雛形を作成

11

Page 12: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

bx dev createで⽣成されるファイル

12

n MicroProfile / JavaEE ソース– src : Java コード・テンプレート、Liberty 構成ファイル、Webデプロイメント記述⼦– target : ビルドで⽣成された成果物が配置される(bx dev build)

n Maven– pom.xml :定義ファイル– .m2 :ビルドで⽣成されるローカルレポジトリ(bx dev build)

n Jenkins– Jenkinsfile :Jenkins のパイプラインの定義ファイル

n Docker / Kubernetes– Dockerfile : Libertyランタイム ⽤コンテナ環境を構成– Dockerfile-tools : Javaランタイム+maven で、アプリケーション・ビルド⽤コンテナ環境を構成– chart : ⽣成された Dockerイメージを Kubernetes ⽤にパッケージング– manifests/kube.deploy.yaml : kubernetesにデプロイするための定義ファイル

n Git (⼿動 git init)

n IBM Cloud Developer Tools CLI– cli-config.yml : Bluemix Dev Toolの構成ファイル、ビルドのための定義など

n Cloud Foundry– manifest.yml:Cloud Foundry⽤の定義ファイル

$ ls -asrctargetpom.xml.m2 JenkinsfileDockerfileDockerfile-tools .dockerignorechart manifests .git.gitignore.bluemixcli-config.yml.cfignoremanifest.yml.ibm-project README.mdLICENSE

Page 13: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Liberty App AcceleratorLiberty App Accelerator–Webから簡単にプロジェクトの雛形を作成し、ダウンロード/Githubに登録可能https://liberty-app-accelerator.wasdev.developer.ibm.com/start/–bx dev createコマンドの中⾝とは⼀部異なる(CLI定義ファイルが含まれていないなど)

13

Page 14: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Twelve Factor App

14

モダンなクラウド・アプリ開発のベストプラクティスの1つhttp://12factor.net/ja/

I. コードベース II. 依存関係 III. 設定 IV. バックエンドサービス

V. ビルド,リリース,実⾏ VI. プロセス VII. ポートバインディング VIII. 並⾏性

依存関係の”明確化”と”暗黙の依存”を撤廃

バージョン管理されたリポジトリと複数のデプロイ

設定を環境変数に格納しコードから厳密に分離

サービスをアタッチされたリソースとして扱う

ビルド, リリース, 実⾏の3つのステージを経てデプロイ

プロセスはステートレスで、“状態”はサービスに格納

アプリにアクセスするポートを公開する

スケールアウトにより容易に並⾏性を保証できる

IX. 廃棄容易性 X. 開発/本番⼀致 XI. ログ

即座に起動・終了することができる

開発〜本番環境をできるだけ⼀致させた状態を保つ

ログをイベントストリームとして扱う(ファイルは×)

XII. 管理プロセス

管理(設定)タスクを1回限りのプロセスとしてアプリから実⾏

Page 15: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

MicroProfile– マイクロサービス・アプリを開発するためのJavaフレームワーク作成を⽬的としたEclipse Foundationプロジェクト– Profile…APIを⽬的に応じてグルーピングしたもの

– 最新 Liberty v17.0.0.3 では Eclipse MicroProfile V1.2 をサポート

MicroProfile

15

Eclipse MicroProfile 1.2

Config 1.1 FaultTolerance 1.0

HealthCheck 1.0 Metrics 1.0 JWT

Propagation 1.0

Eclipse MicroProfile 1.3(リリース予定) Open Tracing

1.0 Open API 1.0 Type-safe Rest Client 1.0

構成情報を複数の場所から取得してポータビリティー

を改善

Fallback, CircuitBreaker, Timeoutなどの機能を実装してレジリエンスを

向上

サービスが稼働しているか、SLAを満たして

いるか確認

サービスの稼働状況をモニター

MicroProfile JSON Webトークンを

認証トークンとして受け⼊れるよう

構成

複数のマイクロサービスにまたがるリクエストのフローを可視化

Open API仕様(Swagger)

への対応REST API を

タイプセーフに呼び出す

mpConfig-1.1 mpFaultTolerance-1.0 mpHealth-1.0 mpMetrics-1.0 mpJwt-1.0 opentracing-1.0

*beta版で使⽤可能(2017/12/6時点)

MicroProfileプログラミング・モデルを使⽤してマイクロサービス・アプリを開発

Page 16: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder

16

ライフサイクルの流れに沿って機能を紹介します

・ IBM Cloud Developer Tools CLI

・Liberty app Accelerator

・MicroProfile

・Microservice Builderパイプライン

Jenkins

Maven

・Microservice Builderファブリック

Zipkin

証明書管理

・ELKスタック

elasticsearch logstash kibana

開発 ビルド/デプロイ 監視

bx dev create/build/run

Page 17: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

n Jenkins– オープンソースの継続的インテグレーションツール• 予め定義しておいた作業(ビルドやシェルの実⾏など)を、分散環境で、ブラウザからの簡単操作で⾃動実⾏• Jenkins2からパイプラインが採⽤され、コードベースで定義可能に• パイプラインが開始すると、Jenkins(master)管理下のslaveが処理を実⾏する• Jenkinsfile…パイプライン定義ファイル

n Maven– Javaプロジェクトを管理するためのツール• プロジェクト情報の⼀元管理• 依存ライブラリの管理• ビルドプロセスの単純化、⾃動化• pom.xml…mavenプロジェクトの定義ファイル

n Docker– Docker社によってリリースされているLinux環境のコンテナ環境• Dockerfile…Docker container定義ファイル

n Helm– k8s⽤のパッケージマネージャー• Chart.yml…Helm Chart定義ファイル

Microservice Builder パイプラインで使⽤される主なツール

17

Page 18: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

helm

Extract Maven Build

Docker Build Verify Deploy

Jenkins pipeline

Microservice Builder パイプラインの流れ

git push

bx dev

git push

bx dev

IBM Cloud Private

docker pushhelm install

helm

k8s

GitHub

”ibm-microservicebuilder-pipeline”② Microservice Builder パイプラインデプロイ

④Jenkins slaveがパイプライン実⾏

③Jenkins masterが起動

⑤プロジェクトをデプロイ

①GitHub設定

② ③ ④ ⑤

18

Page 19: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ①GitHub設定GitHub内のマイクロサービス・プロジェクトに Jenkins がアクセスするためのパーソナル・アクセス・トークンを⽣成https://www.ibm.com/support/knowledgecenter/ja/SS5PWC/pipeline.html

19

(GitHub画⾯)

Page 20: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ①GitHub設定ユーザーが認証のために GitHub を使⽤して Jenkins にログインできるようにOAuth 統合を追加

20

(GitHub画⾯)

Page 21: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ①GitHub設定ユーザーが認証のために GitHub を使⽤して Jenkins にログインできるようにOAuth 統合を追加

21

(GitHub画⾯)

Page 22: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

git pushをトリガーにしてJenkinsのパイプラインが起動するようWeb フックをセットアップ

Microservice Builder パイプライン設定 ①GitHub設定

22

(GitHub画⾯)

Page 23: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

git pushをトリガーにしてJenkinsのパイプラインが起動するようWeb フックをセットアップ

Microservice Builder パイプライン設定 ①GitHub設定

23

(GitHub画⾯)

Page 24: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ② Microservice Builder パイプラインデプロイ

”ibm-microservicebuilder-pipeline”のHelm Chartを選択※Microservice Builderファブリックを事前にインストールする

24

(ICP画⾯)

Page 25: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ② Microservice Builder パイプラインデプロイ

Configureを選択して設定を⾏う

25

(ICP画⾯)

Page 26: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ② Microservice Builder パイプラインデプロイ

プロジェクトが配置されているGithubの情報や、その他必要な情報を⼊⼒してInstall

26

GitHubのURL

(ICP画⾯)

(1/2)

組織名 レポジトリ名

パーソナルトークン

Client ID Client Password

OAuthユーザー

管理者ユーザー

Page 27: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ② Microservice Builder パイプラインデプロイ

プロジェクトが配置されているGithubの情報や、その他必要な情報を⼊⼒してInstall

27

(ICP画⾯)

(2/2)

Page 28: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Jenkinsがデプロイされる(初回デプロイ時は⾃動的にパイプラインが起動する)

パイプラインが開始されるとjenkins-slaveが処理を実⾏– 5つのコンテナーが含まれている1つのPod(jenkins-slave-*)として起動する– デフォルトではプロジェクト内のJenkinsファイルから、

GitHub上にあるJenkinsファイルを呼び出しhttps://github.com/WASdev/microservicebuilder.lib/blob/master/vars/microserviceBuilderPipeline.groovy

Microservice Builder パイプライン設定 ③Jenkins masterが起動

28

kubectlhelm jnlp

slave

master

28

Page 29: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ④slaveがパイプライン実⾏

①ExtractGitHubからプロジェクトを抽出

②Maven Buildpom.xmlを使⽤してアプリケーションをビルド

③Docker BuildDockerfileを使⽤してコンテナーを作成しICP上のprivate registryにpush

④Verifynamespaceを作成し、Helm Chartをインストールできるかテスト

⑤DeployHelm Chartをインストール設定に従ってdocker imageをprivate registryから取得プロジェクト起動

29

docker pushhelm install

helmhelm

① ② ③ ④ ⑤

Page 30: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプライン設定 ⑤プロジェクトをデプロイJenkinsのパイプラインが完了するとプロジェクトのHelm Chartがインストールされる

プロジェクトが起動

30

(ICP画⾯)

(Liberty画⾯)

Page 31: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプラインFAQn 複数の環境⽤にデプロイしたいhttps://www.ibm.com/support/knowledgecenter/ja/SS5PWC/multi_env_deployments.html

–各環境⽤にパイプラインを⽤意する

31

test

staging

production

branchnamespacetest

staging

production

admin

Page 32: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder パイプラインFAQn Dockerビルドフェーズとデプロイフェーズを分けたいhttps://www.ibm.com/support/knowledgecenter/ja/SS5PWC/split_build_deploy.html– Jenkinsfileをビルド⽤とデプロイ⽤の2つに分割lビルド⽤…deploy=falseまたはchartは配置しないlデプロイ⽤…build=false,chartを配置

32

Docker build

Jenkinsfilebuild=truedeploy=false

docker push

helm install

chart/

Deploy

Jenkinsfilebuild=falsedeploy=true

src/

REPOSITORY:TAG

repository

chart/overrides.yamlを編集

Page 33: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder

33

ライフサイクルの流れに沿って機能を紹介します

・ IBM Cloud Developer Tools CLI

・Liberty app Accelerator

・MicroProfile

・Microservice Builderパイプライン

Jenkins

Maven

・Microservice Builderファブリック

Zipkin

証明書管理

・ELKスタック

elasticsearch logstash kibana

開発 ビルド/デプロイ 監視

bx dev create/build/run

Page 34: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック

n Zipkin• マイクロサービス・アプリのタイミング・データを収集および分析、可視化する分散トレース・システム

n 証明書管理• Liberty サーバーで使⽤する証明書を⽣成/管理• Scalingしても同じ証明書を使⽤できる、構成情報をコンテナから分離しておくことでポータビリティー向上

34

Microservice Builder ファブリックで、分散トレース/証明書管理

opentracing-1.0

opentracing-1.0

usr:opentracingZipkin

usr:opentracingZipkin

#kubectl get secretsmb-keystoremb-keystore-passwordmb-truststoremb-truststore-password

Page 35: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定”ibm-microservicebuilder-fabric"のhelm chartを選択

35

(ICP画⾯)

Page 36: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定Configureを選択して設定を⾏い、インストール

36

(ICP画⾯)

Page 37: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定3つの設定が反映される– kubernetes secret(idやpasswordなどの情報を含むオブジェクト) … コンテナー内のLibertyが使⽤する鍵ストア

– kubernetes configmap(構成情報) … ⽣成される証明書を使⽤するようLibertyを構成するための構成情報

• 追加されるserver.xml…鍵ストアの設定

– fablic-zipkin deployment

37

<?xml version="1.0" encoding="UTF-8"?><server><ssl id="defaultSSLConfig" keyStoreRef="defaultKeyStore" trustStoreRef="defaultTrustStore"/><keyStore id="defaultKeyStore" location="/etc/wlp/config/keystore/key.jks"

password="${env.MB_KEYSTORE_PASSWORD}" /> <keyStore id="defaultTrustStore" location="/etc/wlp/config/truststore/trust.jks" password="${env.MB_TRUSTSTORE_PASSWORD}" /></server>

#kubectl get secretsmb-keystoremb-keystore-passwordmb-truststoremb-truststore-password

#kubectl get configmapliberty-config

#kubectl get deploymentfabric-zipkin

configmap

37

Page 38: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定ファブリックによって⽣成される証明書を使⽤するための設定⽅法– Liberty サーバーの deployment.yamlに以下を追加• volume…secretおよびconfigmapが保管されるボリュームを作成

• volumemount…作成されたボリュームをマウント

• env…secretを参照する環境変数を指定

38

volumes: -name: keystores secret: secretName: mb-keystore-name: truststores secret: secretName: mb-truststore-name: liberty-config configMap:

-name: liberty-config items: -key: keystore.xml path: defaults/keystore.xml

volumeMounts: - name: keystores mountPath: /etc/wlp/config/keystore readOnly: true - name: truststores mountPath: /etc/wlp/config/truststore readOnly: true - name: liberty-config mountPath: /config/configDropins

env:- name: MB_KEYSTORE_PASSWORD valueFrom: secretKeyRef: name: mb-keystore-password key: password - name: MB_TRUSTSTORE_PASSWORD valueFrom: secretKeyRef: name: mb-truststore-password key: password

configmap

38

Page 39: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定ファブリックによって⽣成される証明書を使⽤するようLibertyが構成される

• 鍵ストアが配置される

• configDropinsに追加の構成ファイルが配置される

39

/etc/wlp/config/keystore# lskey.jks

opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults# lskeystore.xml

opt/ibm/wlp/usr/servers/defaultServer/configDropins/defaults# cat keystore.xml<?xml version="1.0" encoding="UTF-8"?><server>

<keyStore id="defaultKeyStore" location="/etc/wlp/config/keystore/key.jks" password="${env.MB_KEYSTORE_PASSWORD}" />

<keyStore id="defaultTrustStore" location="/etc/wlp/config/truststore/trust.jks" password="${env.MB_TRUSTSTORE_PASSWORD}" /></server>

/etc/wlp/config/truststore# lstrust.jks

configmap

configmapHTTPS

39

Page 40: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

Microservice Builder ファブリック設定Zipkin設定⽅法– opentracing の Zipkin 固有のメソッドを実装するサンプルZipkin ユーザー・フィーチャー(usr:opentracingZipkin-

0.30)を追加することで、コードを変更することなく、Zipkinサーバーにトレースを送信https://github.com/WASdev/sample.opentracing.zipkintracer

40

opentracing-1.0usr:opentracingZipkin

40

Page 41: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

ELKスタックn ELKスタック– ロギングデータを収集・分析・可視化• Logstash…ログを収集し、Elasticserachにデータを出⼒• Elasticserach…Logstashから送られたデータを保管する、リアルタイムの検索分析エンジン• Kibana…Elasticsearchに保管されたログ・データを検索、分析、可視化するための Web ベースのGUI

n logstashCollector-1.0フィーチャーを使⽤して、Libertyのロギング・データを ELK (Elasticsearch、Logstash、Kibana) スタックに送信

41

logstashCollector-1.0 収集 解析 可視化

logstashCollector-1.0

elasticsearch logstash kibana

Page 42: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

ELKスタック サンプル設定ELKサンプル設定– ELKサンプルHelm Chartをインストール

– deployment.ymlに、ファブリックによって⽣成される証明書を使⽤する設定に加え、ロギングの設定を追加https://github.com/WASdev/sample.microservicebuilder.helm.elk

configDropinsに追加されるロギング構成のserver.xml

42

<?xml version="1.0" encoding="UTF-8"?><server><featureManager><feature>logstashCollector-1.0</feature><feature>ssl-1.0</feature>

</featureManager><logstashCollectorsource="message,trace,garbageCollection,ffdc,accessLog”hostName="logserver” port="5043” sslRef="defaultSSLConfig"/>

<logging traceSpecification="*=info" maxFiles="5"/><httpEndpoint id="defaultHttpEndpoint"host="*” httpPort="9080” httpsPort="9443" ><accessLogging filepath="${server.output.dir}/logs/http_access.log"/>

</httpEndpoint></server>

Page 43: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

ELKスタック サンプル設定KibanaのダッシュボードからLibertyのログを確認

43

Page 44: IBM Cloud Private...2018/12/06  · IBM Cloudにデプロイする際のアプリのURL? 語の選択: 1. Java -MicroProfile / Java EE 2. Node 3. Python 4. Java -Spring Framework Enter

@2017 IBM Corporation@2017 IBM Corporation

ビルド/デプロイ

44

Microservice Builderを活⽤してマイクロサービス・ライフサイクルをスムーズに

IBM Cloud PrivateGitHub

監視

Microservice Builder

開発

bx dev create/build/run

src

まとめ

k8s