SlideShare a Scribd company logo
AKS+KEDAで実現!
Container Functions Pipeline
JAZUG熊本(くまあず) de:code 2019 振り返り会
2019/06/22
Tsukasa Kato
Profile
Copyright© 2019, kumaazu All Rights Reserved.
2
Tsukasa Kato / 加藤 司
株式会社オルターブース
テクニカルアーキテクト
Microsoft Azure / AWS / C# / PHP / Xamarin
Windows Server / Linux
Microsoft MVP for Microsoft Azure
2
はじめに
本スライドは6月22日時点の情報を元に作成しています。
最新情報はWebで確認してください。
参考セッション
• Keynote
• [CD02] Azure Functions 2.0 Deep Dive デベロッパーのための 最新開
発ガイド
• [DT81]クラウドネイティブ時代の分散トレーシング
Copyright© 2019, kumaazu All Rights Reserved.
3
今日お話しすること
Cloud Native
Azure DevOps
Azure Kubernetes Service (AKS)
Kubernetes-based Event Driven Autoscaling Component (KEDA)
Microservices
Service Mesh(Istio)
Distributed tracing(Jeager)
Copyright© 2019, kumaazu All Rights Reserved.
4
5
Copyright© 2019, kumaazu All Rights Reserved.
Cloud Native
クラウドネイティブ
クラウドネイティブ技術は、パブリッククラウド、プライベー
トクラウド、ハイブリッドクラウドなどの近代的でダイナミッ
クな環境において、スケーラブルなアプリケーションを構築お
よび実行するための能力を組織にもたらします。 このアプ
ローチの代表例に、コンテナ、サービスメッシュ、マイクロ
サービス、イミューダブルインフラストラクチャ、および宣言
型APIがあります。
Copyright© 2019, kumaazu All Rights Reserved.
6
https://github.com/cncf/toc/blob/master/DEFINITION.md
クラウドネイティブを支える技術/アーキテクチャ
Copyright© 2019, kumaazu All Rights Reserved.
7
8
Copyright© 2019, kumaazu All Rights Reserved.
Azure Kubernetes
Service
What’s New (AKS)
KEDA(Kubernetes-based Event Drive Autoscaling)でオートス
ケーリングがサポート
Authenticated IP for Azure Kubernetes Service – Preview
Azure Dev Spacesによるエンドツーエンドのテストサポート - GA
Windowsコンテナーサポート - Private Preview
西日本リージョン - GA
AKS virtual nodes - GA
Multi node pools - Preview
Copyright© 2019, kumaazu All Rights Reserved.
9
10
Copyright© 2019, kumaazu All Rights Reserved.
KEDA
KEDA
(Kubernetes-based Event Driven Autoscaling Component)
Kubernetesのスケーリング「Horizontal
pod autoscaler (HPA)」はPodのCPUやメ
モリ消費量で調整される
KEDAは非HTTPなイベントに連動してク
ラスターへのデプロイを自動スケールで
きる
Kafka、Rabbit MQ、Azure Storage
Queues、Azure Service Bus Queues and
Topics、AWS Simple Queue Serviceをサ
ポートをサポート
HPAなどのKubernetesコンポーネントと
ネイティブに統合され、クラウドとエッ
ジの両方で実行できる
Copyright© 2019, kumaazu All Rights Reserved.
11
K8sでイベント駆動型の
Podレベルオートスケールを可能にするフレームワーク
KEDAの実装
Copyright© 2019, kumaazu All Rights Reserved.
12
# kedacoreリポジトリのクローン
$ git clone https://github.com/kedacore/keda.git
$ cd keda
# k8sクラスタへhelmのインストール(tiller他)
$ helm init
# helm repoの追加
$ helm repo add kedacore https://kedacore.azureedge.net/helm
# helm repoのアップデート
$ helm repo update
# keda-edge chartのインストール
$ helm install kedacore/keda-edge --devel --set logLevel=debug --namespace keda --name keda
# Azure Functions Core Toolsのデプロイ
$ func kubernetes install --namespace keda
# minikube等へのhelmを使用しない場合
$ kubectl apply -f KedaScaleController.yaml
https://github.com/kedacore/keda
Copyright© 2019, kumaazu All Rights Reserved.
13
Azure DevOps
Copyright© 2019, kumaazu All Rights Reserved.
14
Azure Boards Azure Pipelines Azure Repos
Azure Test Plans
Azure Artifacts
かんばんボード、バック
ログ、チームのダッシュ
ボード、カスタム レポー
トを使用して作業を追跡
Linux、macOS、および
Windows 用のクラウド
ホステッド パイプライン
無料のプライベート Git
リポジトリ、プルリクエ
スト、コード検索
計画された探索的テスト
ソリューションによる
コードの品質を向上
パブリックおよびプライ
ベートのソースから、
Maven、npm、NuGet、
Python パッケージの
フィードを作成して共有
Azure DevOps
15
Azure Boards
ドラッグ&ドロップで管理できる操作性の高さ
Reposで管理されているリポジトリのコミット、PRの作業項目
とリンク出来て、効率良いタスク管理が可能
GitHubとの統合によりGitHubリポジトリのコミットやPRの作
業項目へのリンクが可能
ダッシュボードをカスタマイズしてプロジェクトの進行状況を
簡単に監視
TeamsやSlackなどからの利用も可能
Copyright© 2019, kumaazu All Rights Reserved.
16
Azure Pipelines
オープンソース用に10個の無料並列ジョブを実行可能(時間制
限なし)
Linux、macOS、Windows用のクラウドホステッドなビルド環
境が提供
Node.js、Python、Java、PHP、Ruby、C/C++、.NET、
Android、および iOS アプリをビルド、テスト、デプロイでき
る
コンテナーイメージをビルドし、Docker HubやACRへプッ
シュでき、Kubernetesや個別ホストへデプロイできる
Azure、AWS、GCP など、任意のクラウドへのソフトウェアの
継続的デリバリー (CD)を実装できる
Copyright© 2019, kumaazu All Rights Reserved.
17
Azure Repos
趣味のプロジェクトから世界最大規模のリポジトリまでスケー
ル可能な無制限のプライベート Git/ TFVCリポジトリのホス
ティング
マーケットプレイスから検証や拡張機能を追加したり、Web
hook と REST API を使用して自分で作成も可能
スレッドを使いディスカッションしたり、変更に対するGitの
コードレビューを効果的に実行可能
Azure Pipelines やその他のツールを使用して、CI/CDをセット
アップして、 pull request でビルド、テスト、デプロイを自動
的にトリガー可能
Copyright© 2019, kumaazu All Rights Reserved.
18
Azure Test Plans
アプリケーションのテストは、デスクトップ アプリや Web ア
プリに対して実行できる
ストーリーやフィーチャーに対してエンドツーエンドの追跡可
能性と品質を活用できる
テスト実行時に豊富なシナリオ データをキャプチャして、検
出された欠陥に対処できる
Azure Pipelinesと連携することでCI/CDワークフローに自動テ
ストを組み込む事ができる
Copyright© 2019, kumaazu All Rights Reserved.
19
Azure Artifacts
Artifacts は、Azure Pipelines CI/CD ツールとネイティブに統合
されているため、ビルドとリリース内のあらゆる成果物に簡単
にアクセスできる
パッケージを共有し、組み込みの CI/CD、バージョン管理、テ
ストを使用することが可能
Maven、npm、NuGet、Python を対象とする一般的な成果物
管理でき、バイナリを Git に保管する必要はなく、Universal
Packages を使用して簡単に保管可能
規模問わず簡単にコード共有ができる
Copyright© 2019, kumaazu All Rights Reserved.
What’s New (Azure DevOps)
Azure DevOpsにGitHubアカウントでサインインできるように
なった
Azure PipelinesのCI/CDをYAMLで管理できるようになった
Azure PipelinesでAKSなどのKubernetesへデプロイ可能になった
Azure Artifactはコンサンプションモデルになり、組織で2GBまで
無料に、その他価格体系の変更
Azure Pipelines Appを使ってTeams上でPipelinesの通知と承認処
理が可能になった
Copyright© 2019, kumaazu All Rights Reserved.
20
Azure Pipelines YAML (一部抜粋)
Copyright© 2019, kumaazu All Rights Reserved.
21
pool:
name: Hosted Ubuntu 1604
variables:
dockerimage: 'web'
steps:
- task: Docker@0
displayName: 'Build an image'
inputs:
azureSubscription: xxxxxxxxxx (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)'
azureContainerRegistry: '{"loginServer":”xxxxxxxxxx.azurecr.io", "id" : "/subscriptions/ xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /resourceGroups/”}’
imageName: '$(dockerimage):$(Build.BuildNumber)'
- task: Docker@0
displayName: 'Push an image'
inputs:
azureSubscription: xxxxxxxxxx (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)'
azureContainerRegistry: '{"loginServer":"tsukatohdemo.azurecr.io","id" : "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /resourceGroups/”}’
action: 'Push an image'
imageName: '$(dockerimage):$(Build.BuildNumber)'
- bash: |
# Write your commands here
22
Pricing
Copyright© 2019, kumaazu All Rights Reserved.
Azure Pipelines
Azure Artifacts
1個の無料のMicrosoft Hosted CI/CD
1パラレルジョブ 1,800分/月
1個の無料のSelf Hosted CI/CD
1パラレルジョブ 時間無制限
2GBは無料
以降1GBあたり ¥224
0~2GB : Free
2~10GB : ¥244/GB
10~100GB : ¥112/GB
100~1,000GB : ¥56/GB
1,000+GB : ¥28/GB
5ユーザーまでは無料、その後Boards/Reposについては
ユーザー毎に¥672/月
Azure Pipelines : 従量課金制プランを含む
Azure Boards : 作業項目トラッキングとかんばんボード
Azure Repos : 無制限のプライベートGitリポジトリ
Azure Artifacts : 2GBは無料
ロードテスト : 20,000 VUM/月
1ユーザー ¥5,824/月
全てのBasicプランの機能を含む
テストの計画、追跡、実行
注釈付きのブラウザーベーステスト
リッチクライアントのテスト実行
ユーザー受け入れテスト
集中管理されたレポート
ユーザーライセンス 個別サービス
Teams連携
Copyright© 2019, kumaazu All Rights Reserved.
23
• Build,Releaseの終了通知
• 承認要求
https://docs.microsoft.com/en-us/azure/devops/pipelines/integrations/microsoft-teams?view=azure-devops
【コマンド例】
追加するには以下のコマンドを入力
@azurepipelines subscribe[pipelineurl]
Build pipelinesの監視
@azurepipelines subscribehttps://dev.azure.com/myorg/myproject/_build?definitionId=123
Release pipelinesの監視
@azurepipelines subscribehttps://dev.azure.com/myorg/myproject/_release?definitionId=123&view=mine&_a=releases
利用するにはTeamsのストアでAzure Pipelines app
をインストールして以下コマンドを入力するだけ
24
Copyright© 2019, kumaazu All Rights Reserved.
Microservices
マイクロサービス
1つのアプリケーションを、ビジネス機能に沿った複数の小さ
いサービスの疎に結合された集合体として構成するサービス指
向アーキテクチャ。
各サービスはきめ細かい粒度を持ち、軽量なプロトコルを用い
て通信を行う。
開発が並列化され、少人数の自律的なチームにより、各チーム
が所有するサービスを独立に、開発、デプロイ、スケールさせ
ることが可能になる。
CI/CDの実装がしやすい。
Copyright© 2019, kumaazu All Rights Reserved.
25
マイクロサービスの課題
Copyright© 2019, kumaazu All Rights Reserved.
26
Communication
Discovery
Observability
Security
複雑なサービス間通信
サービスや依存関係サービス間認証・認可、
通信暗号化
分散アプリの監視・問題検知
サービスメッシュ(Service mesh)
サービス間通信を処理するソフトウェアレイヤーで、アプリに変
わってネットワーク要求を送信するサービス
サービスメッシュが提供する代表的なネットワークサービス
トラフィック制御
回復制、耐障害性処理
可視化、分散トレース
認証、セキュリティ機能
Copyright© 2019, kumaazu All Rights Reserved.
27
Istio Architecture
Copyright© 2019, kumaazu All Rights Reserved.
28
https://istio.io/docs/concepts/what-is-istio/
Istioサービスメッシュは、データプ
レーンとコントロールプレーンに論
理的に分割されている
データプレーンはインテリジェント
プロキシ(Envoy)をサイドカーとし
て展開。Mixser、汎用ポリシー、テ
レメトリハブとともにマイクロサー
ビス間のネットワーク通信を仲介・
制御
コントロールプレーンが管理し、ト
ラフィックをルーティングするプロ
キシを設定。ポリシーを定期小して
テレメトリを収集するようにMixer
を構成する。
分散トレーシング(Distributed tracing)
マイクロサービスのようなアプリケーションが複数のサービスで
構成され、複雑化すると1つのリクエストが複数のサービスを跨い
でしょりされる。
その分散したリクエスト全体の流れを分析するためのものが分散
トレーシングである。
分散トレーシングシステムにはZipkinやJaegerなどがあり、、
OpenTracing互換のデータモデルとライブラリが提供される。
Copyright© 2019, kumaazu All Rights Reserved.
29
分散トレーシングの基本概念
Copyright© 2019, kumaazu All Rights Reserved.
30
Span : 処理ユニット
Trace : リクエストの一連の関連Spanの集合体
リクエストに対して
一意なIDが振られ、
各リクエスト経由の
パスにおいて、その
IDはメタデータと
セットで伝搬される
https://www.jaegertracing.io/docs/1.8/architecture/
分散トレーシング実装
Copyright© 2019, kumaazu All Rights Reserved.
31
https://github.com/openzipkin/b3-propagation
ZipkinのPropagationプロセス
分散トレーシング実装例
Copyright© 2019, kumaazu All Rights Reserved.
32
Node.js
if (req.headers['x-request-id']!== undefined) {
res.header('x-request-id',req.headers['x-request-id']);
res.header('x-b3-traceid', req.headers['x-b3-traceid']);
res.header('x-b3-spanid', req.headers['x-b3-spanid']);
res.header('x-b3-parentspanid', req.headers['x-b3-parentspanid']);
res.header('x-b3-sampled', req.headers['x-b3-sampled']);
res.header('x-b3-flags', req.headers['x-b3-flags']);
res.header('x-ot-span-context',req.headers['x-ot-span-context']);
}
Jaeger Architecture
Copyright© 2019, kumaazu All Rights Reserved.
33
https://www.jaegertracing.io/docs/1.8/architecture/
Copyright© 2019, kumaazu All Rights Reserved.
34
Demo
Demo Architecture
Copyright© 2019, kumaazu All Rights Reserved.
35
Azure DevOps
Azure Pipelines
Azure Boards
Azure Repos
Visual StudioGit
Azure Container
Registry
Azure Kubernetes Service
ObservabilityDevelopment
git push
docker build
docker push
Notification
kubectl apply
Logging, Monitoring
Azure Storage
Queue Trigger
Front Back
まとめ
Azure DevOpsのKubernetes対応が入ったため、Kubernetesへ
のパイプラインがより組みやすくなった
AKSと組み合わせることでより親和性の高いコンテナデプロイ
パイプラインを構成できる
新しく発表されたKEDAを利用することで通常動作しなくても
よいコンテナアプリケーションを停止しておき、必要に応じて
起動・スケールする構成も組みやすくなる
Copyright© 2019, kumaazu All Rights Reserved.
36
Copyright© 2019, kumaazu All Rights Reserved.
37
Copyright© 2019, kumaazu All Rights Reserved.
38
https://www.cncf.io/blog/2018/03/08/introducing-the-cloud-native-landscape-2-0-interactive-edition/
Copyright© 2019, kumaazu All Rights Reserved.
39
ご静聴ありがとうございました!

More Related Content

PDF
半日でわかる コンテナー技術 (応用編)
PDF
Kubernetes雑にまとめてみた 2019年12月版
PDF
Introduction of Azure Docker Integration
PDF
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
PDF
Kubernetes雑にまとめてみた 2020年8月版
PDF
ダイ・ハード in the Kubernetes world
PDF
Wordpress案件にgkeを採用してみた(短縮版)
PDF
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
半日でわかる コンテナー技術 (応用編)
Kubernetes雑にまとめてみた 2019年12月版
Introduction of Azure Docker Integration
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Kubernetes雑にまとめてみた 2020年8月版
ダイ・ハード in the Kubernetes world
Wordpress案件にgkeを採用してみた(短縮版)
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~

What's hot (20)

PDF
Quarkus Technical Deep Dive - Japanese
PDF
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
PPTX
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
PDF
俺的 Ignite update 萌えポイント portal&arm, compute, network -
PPTX
Kubernetes × 可用性 -- cndjp第3回勉強会
PDF
Kubernetesのワーカーノードを自動修復するために必要だったこと
PDF
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
PDF
半日でわかる コンテナー技術 (入門編)
PDF
de:code 2019 Cloud トラック 総まとめ!
PDF
Azure Stack HCI - パフォーマンス履歴 と Azure Monitor
PDF
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
PDF
Terraform Bootcamp - Azure Infrastructure as Code隊
PPTX
Private Azure Kubernetes Service cluster を触ってみよう♪
PDF
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
PDF
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
PDF
Docker国内外本番環境サービス事例のご紹介
PDF
Juju/MAASで作る Kubernetes + GPU
PDF
GKE のアプリデプロイは Spinnaker に任せて!
PDF
俺とHashiCorp
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Quarkus Technical Deep Dive - Japanese
[Cloud OnAir] Talks by DevRel Vol.5 アプリケーションのモダナイゼーション 2020年9月3日 放送
0から始めるコンテナの学び方(Kubernetes Novice Tokyo #14 発表資料)
俺的 Ignite update 萌えポイント portal&arm, compute, network -
Kubernetes × 可用性 -- cndjp第3回勉強会
Kubernetesのワーカーノードを自動修復するために必要だったこと
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
半日でわかる コンテナー技術 (入門編)
de:code 2019 Cloud トラック 総まとめ!
Azure Stack HCI - パフォーマンス履歴 と Azure Monitor
Google Cloud Game Servers 徹底入門 | 第 10 回 Google Cloud INSIDE Games & Apps Online
Terraform Bootcamp - Azure Infrastructure as Code隊
Private Azure Kubernetes Service cluster を触ってみよう♪
[Cloud OnAir] Google Cloud Next '20: OnAir 特別編 〜世界で人気のあったセッション特集〜 2020年9月24日 放送
[Cloud OnAir] Google Cloud 主催イベント Anthos Day 情報 2020 年 2 月 13 日放送
Docker国内外本番環境サービス事例のご紹介
Juju/MAASで作る Kubernetes + GPU
GKE のアプリデプロイは Spinnaker に任せて!
俺とHashiCorp
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Ad

Similar to AKS+KEDAで実現!Container Functions Pipeline (20)

PDF
Azure Kubernetes ServiceとCI/CD pipeline
PDF
DevOps on Azure Kubernetes
PDF
Azure Kubernetes Service Overview
PPTX
Container x azure x kubernetes
PPTX
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
PDF
JAZUG Nagoya Azure Update 20140607
PDF
de:code 2019 Cloud トラック 総まとめ! 完全版
PDF
kubernetes on Azure 最新情報
PDF
Azuredevopsakskeda
PDF
Azure DevOps と開発管理
PDF
これから始めるAzure Kubernetes Service入門
PDF
Azure DevOps 関西 2019 - Overview
PPTX
Running Kubernetes on Azure
PDF
試して学べるクラウド技術! OpenShift
PDF
Open Source x AI
PDF
Osc fukuoka xAI Meetup
PDF
Azure Lab Services.pdf
PDF
インフラ野郎AzureチームProX
PDF
ゆるふわAzure Functions
PPTX
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
Azure Kubernetes ServiceとCI/CD pipeline
DevOps on Azure Kubernetes
Azure Kubernetes Service Overview
Container x azure x kubernetes
Tech Night Recap Sapporo - Ignite & .NET Conf -.pptx
JAZUG Nagoya Azure Update 20140607
de:code 2019 Cloud トラック 総まとめ! 完全版
kubernetes on Azure 最新情報
Azuredevopsakskeda
Azure DevOps と開発管理
これから始めるAzure Kubernetes Service入門
Azure DevOps 関西 2019 - Overview
Running Kubernetes on Azure
試して学べるクラウド技術! OpenShift
Open Source x AI
Osc fukuoka xAI Meetup
Azure Lab Services.pdf
インフラ野郎AzureチームProX
ゆるふわAzure Functions
サポート エンジニアが語る、Microsoft Azure を支えるインフラの秘密
Ad

More from Tsukasa Kato (20)

PDF
すぐにでも使える Windows Virtual Desktop
PDF
ニューノーマルな働き方!?Teams投稿をセンチメント分析!
PDF
WVD運用に欠かせない5つのポイント
PDF
ARM版Windows Virtual Desktop事始め
PDF
Container x AI
PDF
Power Automate with kintone
PDF
ぼうけんにでかけよう Kubernetes KEDA
PDF
Azure Private Linkのご紹介
PDF
Azure Vnet の拡張と強化
PDF
マネージドBastion​ Azure Bastion​
PDF
SendGridを使ったスマホアプリ運用
PDF
よりお手軽なBotへ 〜APIで効率的なBotを〜
PDF
Container deployment on Azure
PDF
Build2019発表情報一気見せ
PDF
俺のセキュリティを超えてゆけ
PDF
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
PDF
Azure serverlesssummit2018
PDF
はたらく認証
PDF
Microservices and Servcie Mesh on Azure
PDF
あなたとわたしの仲介人♡サービスブローカー
すぐにでも使える Windows Virtual Desktop
ニューノーマルな働き方!?Teams投稿をセンチメント分析!
WVD運用に欠かせない5つのポイント
ARM版Windows Virtual Desktop事始め
Container x AI
Power Automate with kintone
ぼうけんにでかけよう Kubernetes KEDA
Azure Private Linkのご紹介
Azure Vnet の拡張と強化
マネージドBastion​ Azure Bastion​
SendGridを使ったスマホアプリ運用
よりお手軽なBotへ 〜APIで効率的なBotを〜
Container deployment on Azure
Build2019発表情報一気見せ
俺のセキュリティを超えてゆけ
今後のContainerの行く末の感じたこと、思ったこと 〜JKD参加報告〜
Azure serverlesssummit2018
はたらく認証
Microservices and Servcie Mesh on Azure
あなたとわたしの仲介人♡サービスブローカー

AKS+KEDAで実現!Container Functions Pipeline