Container x Azure x kubernetes
Cloud Native Sapporo #01
2019/01/27
Yasuaki Matsuda
自己紹介
 松田 恭明(Yasuaki Matsuda)
• Microsoft MVP for Microsoft Azure(2016~)
• きたあずの スタッフ
• (@DarkCrash3 )
• Facebook: vnext.y
• 札幌 Azure もくもく会 のメンバー
2
3
JAZUG 札幌支部
■正式名称
Japan Azure User Group 札幌支部 / 略称:きたあず
■活動概要
Cloudにちょっと興味のあるゆるふわな方から実ビジネスで
使用される方まで学べる勉強会を開催しています。
■Webサイト
https://kitaazu.azurewebsites.net/
■Webサイト
きたあずちゃん
(@kitaazu_chan)
4
JAZUGの紹介
JAZUG
女子部
学生部
札幌支部 (きたあず)
青森支部
仙台支部
福島支部
静岡支部
信州支部
名古屋支部(なごあず)
関西Azure研究会
福岡支部 (ふくあず) / ふくあず女子部
熊本支部
沖縄支部
http://r.jazug.jp/
2019/01/25 時点
の情報を元に
作成しています
Copyright© 2015, JAZUG All Rights Reserved.
5
Microsoft Azure
Copyright© 2015, JAZUG All Rights Reserved.
6
CNCF
(Cloud Native Computing Foundation)
Copyright© 2015, JAZUG All Rights Reserved.
7
CNCF
(Cloud Native Computing Foundation)
https://azure.microsoft.com/ja-jp/blog/announcing-cncf/
Microsoft joins Cloud Native Computing Foundation
Kubernetes: Microsoft has been contributing code to the Kubernetes project, as
well as running Kubernetes as part of the Azure Container Service. Engineering
manager and architect Brendan Burns is one of the Kubernetes project
maintainers.
Helm: The Helm project was started by Deis before being acquired by Microsoft
and continues to be developed and improved by Microsoft engineers. Adam
Reese, Michelle Noorali, and Matt Butcher are all project maintainers.
containerd: Microsoft engineers contribute code to expand containerd to
Windows Containers; John Howard from the Windows team is one of the project
maintainers.
gRPC: A universal, high-performance RPC framework, covering multiple
languages such as Node.js, Java, Ruby, Go, and C#, we plan to increase our
participation.
Copyright© 2015, JAZUG All Rights Reserved.
8
Cloud Native
Copyright© 2015, JAZUG All Rights Reserved.
9
Cloud Native
Copyright© 2015, JAZUG All Rights Reserved.
10
Cloud Native
Copyright© 2015, JAZUG All Rights Reserved.
11
マイクロサービス
Copyright© 2015, JAZUG All Rights Reserved.
12
サーバーレス
サーバーレス関数
Azure Functions
サーバーレス コンテナー
Azure Container Instances
サーバーレス Kubernetes オーケストレー
ション
Virtual Kubelet
Azure Kubernetes Service (AKS)
サーバーレス アプリケーション環境
App Service
Service Fabric Mesh
Copyright© 2015, JAZUG All Rights Reserved.
13
サーバーレス データベース
Azure Cosmos DB
サーバーレス メッセージング
Event Grid
CloudEvents
Service Bus
サーバーレス ワークフロー オーケストレーション
Logic Apps
サーバーレス分析
Azure Stream Analytics
Event Hubs
サーバーレス インテリジェンス
Bot Service
Cognitive Services
サーバーレス
サーバーレス関数
Azure Functions
サーバーレス コンテナー
Azure Container Instances
サーバーレス Kubernetes オーケストレー
ション
Virtual Kubelet
Azure Kubernetes Service (AKS)
サーバーレス アプリケーション環境
App Service
Service Fabric Mesh
Copyright© 2015, JAZUG All Rights Reserved.
14
サーバーレス データベース
Azure Cosmos DB
サーバーレス メッセージング
Event Grid
CloudEvents
Service Bus
サーバーレス ワークフロー オーケストレーション
Logic Apps
サーバーレス分析
Azure Stream Analytics
Event Hubs
サーバーレス インテリジェンス
Bot Service
Cognitive Services
コンテナー
Azure Kubernetes Service (AKS)
Azure App Service
Azure Container Instances
Azure Batch
Azure Service Fabric
Azure Container Registry
Copyright© 2015, JAZUG All Rights Reserved.
15
コンテナー
Azure Kubernetes Service (AKS)
Azure App Service
Azure Container Instances
Azure Batch
Azure Service Fabric
Azure Container Registry
Copyright© 2015, JAZUG All Rights Reserved.
16
コンテナー
Copyright© 2015, JAZUG All Rights Reserved.
17
Azure App Service on Linux
Container の PaaS としても扱える
独自のDocker イメージを デプロイ
ホストとなるVMのインスタンスでスケーリング
スケールアップで、CPUメモリを増やす
スケールアウトで、インスタンス数を増やす
自動スケーリング可能
HTTP/HTTPS としてのロードバランサーが組み込まれている
DevOps のサポート
認証機能
バックアップ機能
共有ストレージのマウント
複数コンテナーのデプロイ
Docker Compose (プレビュー)、Kubernetes (プレビュー)
・・・Docker イメージをアプリケーションサーバーとして活用するだけなら、これだけでもいい
Copyright© 2015, JAZUG All Rights Reserved.
18
Azure App Service on Linux
Copyright© 2015, JAZUG All Rights Reserved.
19
Azure Container Instances
数秒で Azure でコンテナーを開始
IP アドレスと完全修飾ドメイン名 (FQDN)
ハイパーバイザーレベルのセキュリティ
NVIDIA Tesla GPU リソース (プレビュー)
永続的ストレージ
Azure Files 共有を直接マウント
仮想ネットワークのデプロイ (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
20
Azure Container Registry
プライベート Docker コンテナー レジストリ
geo レプリケーション(Premium )
同一のイメージパスで、複数リージョンに
マネージドなイメージ格納用のストレージ
Webhook、EventGrid を利用した通知
イメージのプッシュで副作用を作りたいときとか。
認証
ユーザーID(開発者向け)
サービスプリンシパル(ビルド、デプロイのパイプライン向け)
Copyright© 2015, JAZUG All Rights Reserved.
21
Azure Kubernetes Service (AKS)
Copyright© 2015, JAZUG All Rights Reserved.
22
Azure Kubernetes Service (AKS)
Managedな Master サービス
VM, Vnet, ルートテーブル, Public IP, NSG, LoadBalancer, DNS
ゾーン, 可用性セット のIaaSリソースを自動的に生成する。
Copyright© 2015, JAZUG All Rights Reserved.
23
Azure Kubernetes Service (AKS)
Azure Dev Spaces
Copyright© 2015, JAZUG All Rights Reserved.
24
Azure Dev Spaces
開発者用のPodを提供する
ツールによってはデバッグ可能
Visual Studio 2017 + ASP.NET Core の .csprojプロジェクト
デバッグ感覚でビルド、デプロイされてデバッグ実行される
ネットワーク越しになるため、時間は少しかかるものの環境依存し
た問題の発見や、ローカルにリソースがない場合などにものすごく
いい。
Copyright© 2015, JAZUG All Rights Reserved.
25
Azure Dev Spaces & .ASP NET Core
https://docs.microsoft.com/ja-
jp/visualstudio/deployment/tutorial-kubernetes-tools?view=vs-
2017
要件
Visual Studio 2017
Visual Studio Tools for Kubernetes (拡張機能)
Docker for Windows
Copyright© 2015, JAZUG All Rights Reserved.
26
Azure Dev Spaces & .ASP NET Core
Copyright© 2015, JAZUG All Rights Reserved.
27
Azure Dev Spaces & .ASP NET Core
Copyright© 2015, JAZUG All Rights Reserved.
28
Azure Kubernetes Service (AKS)
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
29
Virtual node (プレビュー)
https://azure.microsoft.com/en-us/updates/aks-virtual-node-
public-preview/
2018/12/04
https://azure.microsoft.com/en-us/blog/bringing-serverless-to-
azure-kubernetes-service/
Copyright© 2015, JAZUG All Rights Reserved.
30
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
31
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
32
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
33
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
34
Virtual node (プレビュー)
Copyright© 2015, JAZUG All Rights Reserved.
35
https://azure.microsoft.com/ja-jp/services/kubernetes-service/
Azure Kubernetes Service (AKS)
Azure Load Balancer
Copyright© 2015, JAZUG All Rights Reserved.
36
Azure Load Balancer
https://kubernetes.io/docs/concepts/services-
networking/service/
Azureで外部ロードバランサー
Copyright© 2015, JAZUG All Rights Reserved.
37
Azure Load Balancer
Front end IP (フロントエンドIP)
Backend pool (バックエンドプール)
health probes (正常性プローブ)
Copyright© 2015, JAZUG All Rights Reserved.
38
Load
Balancer
Public IP
Public IP
Backend pool
Backend pool
Azure Load Balancer
Front end IP (フロントエンドIP)
Service で定義されたPublic ip があてられる
Backend pool (バックエンドプール)
K8s ノードのマシンが追加される
health probes (正常性プローブ)
Service が公開するポートに対して設定される
Copyright© 2015, JAZUG All Rights Reserved.
39
Azure Load Balancer
ポート80を公開。Container は3080。Node は30125。
LBは、フロントエンドの80をバックエンドプールの30125に負
荷分散。プローブ。
Copyright© 2015, JAZUG All Rights Reserved.
40
Load
Balancer
Public IP
xxx.xxx.xxx.xxx
port 80
Other Public IP
xxx.xxx.xxx.xxx
port xxx
Node 0 port 30125
Pod1 Port 3080
Node 1 port 30125
Pod3 Port 3080
Pod2 Port 3080
Azure Kubernetes Service (AKS)
Azure Monitor
Copyright© 2015, JAZUG All Rights Reserved.
41
Azure Monitor
Copyright© 2015, JAZUG All Rights Reserved.
42
Azure Monitor
Copyright© 2015, JAZUG All Rights Reserved.
43
Azure Kubernetes Service (AKS)
Log Analytics
Copyright© 2015, JAZUG All Rights Reserved.
44
Log Analytics
Copyright© 2015, JAZUG All Rights Reserved.
45
Azure Kubernetes Service (AKS)
Cluster Autoscaler
Copyright© 2015, JAZUG All Rights Reserved.
46
Cluster Autoscaler
https://docs.microsoft.com/ja-jp/azure/aks/autoscaler
現在はプレビュー段階
Nodes のスケーリング
Podの水平スケーラー HPA と組み合わせるとグングン伸び縮み
Role-based access control (RBAC)が有効な AKS クラスター
があることを前提
Copyright© 2015, JAZUG All Rights Reserved.
47
Azure DevOps
Copyright© 2015, JAZUG All Rights Reserved.
48
https://azure.microsoft.com/ja-
jp/blog/introducing-azure-devops/
Copyright© 2015, JAZUG All Rights Reserved.
49
Azure DevOps Tokyo, Japan - 11月24日
https://jazug.connpass.com/event/105229/
クラウド ネイティブ開発と Azure DevOps
https://www.slideshare.net/chack411/azure-devops-123863999
Copyright© 2015, JAZUG All Rights Reserved.
50
DevOpsの要素いくつか
リードタイムの短縮
ビルド
テスト
デプロイ
経験を学習
ユーザーのフィードバック
運用中のフィードバック
実験的なリリース
カナリアリリース、A/Bテスト … etc.
Copyright© 2015, JAZUG All Rights Reserved.
51
運用(ビジネス)も含めて考える
開発
テスト
リリース
運用
要求・フィー
ドバック
Copyright© 2015, JAZUG All Rights Reserved.
52
自動化で時間を短縮する
ビルド、テストを自動化する
個々の開発マシンによる結果ではなく一つの正解を作る
• 環境依存するようなコードが生まれなくなる
自動化されたパイプラインを作る
• ライブラリ取得、ミドルウェア追加、リポジトリ作成
リリースを自動化する
本番環境への手順を一つのパイプラインにする
Copyright© 2015, JAZUG All Rights Reserved.
53
自動化大変
いつやるの?
最初からやらないとやるタイミングなくなる
リリース直前にやると、自動化パイプラインの品質評価がない
自動化するにあたってスクリプトの作成
テスト可能なコーディングをしないとテストできなくなる
運用している環境のモニタリング(可視化)
最初の一歩が重い・・・そんな私に(あなたに)
Copyright© 2015, JAZUG All Rights Reserved.
54
Azure DevOps
テンプレートから作るk8s
Copyright© 2015, JAZUG All Rights Reserved.
55
Azure Portalから
Copyright© 2015, JAZUG All Rights Reserved.
56
DevOps Project
Copyright© 2015, JAZUG All Rights Reserved.
57
DevOps Project
Copyright© 2015, JAZUG All Rights Reserved.
58
DevOps Project
Copyright© 2015, JAZUG All Rights Reserved.
59
DevOps Project
Copyright© 2015, JAZUG All Rights Reserved.
60
DevOps Project
Copyright© 2015, JAZUG All Rights Reserved.
61
Project 選択
Copyright© 2015, JAZUG All Rights Reserved.
62
Project
Copyright© 2015, JAZUG All Rights Reserved.
63
Project
Overview – プロジェクト概要、ダッシュボード、Wiki
Boards – ワークアイテム(作業項目)の管理、可視化
Repos – ソースリポジトリ
Pipelines – ビルド、リリースの自動化
Test Plans – テスト計画、クラウド上のロードテスト
Artifacts – 成果物の管理、 nuget.org, npmjs.com へのFeed
Copyright© 2015, JAZUG All Rights Reserved.
64
k8s テンプレート
Copyright© 2015, JAZUG All Rights Reserved.
65
Pipeline - Build
Copyright© 2015, JAZUG All Rights Reserved.
66
コンテナレジストリの作成
ビルド
コンテナへプッシュ
Helm インストール
Helm パッケージ
ARMテンプレートを成果物
成果物をパブリッシュ
Pipeline - Release
Copyright© 2015, JAZUG All Rights Reserved.
67
AKSクラスタ作成(IaaS)
成果物のARMテンプレート
Helm インストール
Helm 初期化
Helm アップグレード
コンテナレジストリより
リソース
• ARMテンプレート
• ビルド後のイメージ格納
コンテナ
レジストリ
• ARMテンプレートK8s クラスタ
• HelmK8s デプロイ
Copyright© 2015, JAZUG All Rights Reserved.
68
レイヤー
Azure
IaaS – VNET, VM,
LB
K8s cluster
Kubernetes サー
ビス
Container
Registry
Copyright© 2015, JAZUG All Rights Reserved.
69
Azure Dev Ops
テンプレートから作成すると、パイプラインが構築された状態
から始めることができる。
小さくスタートして少しづつ進化させる
関わる人の力を発揮+成長+継続できるといいなと思う
Copyright© 2015, JAZUG All Rights Reserved.
70
Application Insights
Copyright© 2015, JAZUG All Rights Reserved.
71
Application Insights
Copyright© 2015, JAZUG All Rights Reserved.
72
Application Insights の監視対象
要求レート、応答時間、およびエラー率: 最も人気のあるページがどの時間帯にどの場所のユー
ザーからアクセスされているかを調べます。 最もパフォーマンスの高いページを確認します。 要
求が多いときに、応答時間と失敗率が高くなる場合は、おそらくリソースに問題があります。
依存率、応答時間、およびエラー率: 外部サービスによって応答が遅くなっているかどうかを調べ
ます。
例外: 集計された統計を分析します。または特定のインスタンスを選択し、スタック トレースと
関連する要求を調べます。 サーバーとブラウザーの両方の例外が報告されます。
ページ ビューと読み込みのパフォーマンス: ユーザーのブラウザーから報告されます。
Web ページからの AJAX 呼び出し: レート、応答時間、およびエラー率。
ユーザー数とセッション数。
Windows または Linux サーバー コンピューターの CPU、メモリ、ネットワーク使用率などのパ
フォーマンス カウンター。
Docker または Azure のホスト診断。
アプリの診断トレース ログ: これにより、トレース イベントを要求に関連付けることができます。
販売された品目や勝利したゲームなどのビジネス イベントを追跡するためにクライアントまたは
サーバーのコード内に書き込んだカスタム イベントとメトリック。
Copyright© 2015, JAZUG All Rights Reserved.
73
CLOUD NATIVE APPLICATION BUNDLE
ANNOUNCING CLOUD NATIVE APPLICATION BUNDLE (CNAB)
https://blog.docker.com/2018/12/announcing-cloud-native-
application-bundle-cnab/
https://cnab.io/
Copyright© 2015, JAZUG All Rights Reserved.
74
Visual Studio Code Extension Duffle
Copyright© 2015, JAZUG All Rights Reserved.
75
Introducing Cloud Native Application
Bundles (CNAB)
https://azure.microsoft.com/ja-jp/resources/videos/connect-
2018-introducing-cloud-native-application-bundles-cnab/
Copyright© 2015, JAZUG All Rights Reserved.
76
Copyright© 2015, JAZUG All Rights Reserved.
77
Microsoft Learn
https://docs.microsoft.com/ja-jp/learn/
無料で使える学習サイト
Copyright© 2015, JAZUG All Rights Reserved.
78
Azure DevOps
https://azure.microsoft.com/ja-jp/services/devops/
https://azure.com/devops
Copyright© 2015, JAZUG All Rights Reserved.
79
Developer Community
https://developercommunity.visualstudio.com/
問題点の共有、機能の提案・投票
Copyright© 2015, JAZUG All Rights Reserved.
80
ご清聴
ありがとうございました
Copyright© 2015, JAZUG All Rights Reserved.
81

Container x azure x kubernetes