Successfully reported this slideshow.
Your SlideShare is downloading. ×

AKS+KEDAで実現!Container Functions Pipeline

Ad

AKS+KEDAで実現!
Container Functions Pipeline
JAZUG熊本(くまあず) de:code 2019 振り返り会
2019/06/22
Tsukasa Kato

Ad

Profile
Copyright© 2019, kumaazu All Rights Reserved.
2
Tsukasa Kato / 加藤 司
株式会社オルターブース
テクニカルアーキテクト
Microsoft Azure / AWS ...

Ad

はじめに
本スライドは6月22日時点の情報を元に作成しています。
最新情報はWebで確認してください。
参考セッション
• Keynote
• [CD02] Azure Functions 2.0 Deep Dive デベロッパーのための...

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Loading in …3
×

Check these out next

1 of 39 Ad
1 of 39 Ad

More Related Content

Slideshows for you (19)

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

AKS+KEDAで実現!Container Functions Pipeline

  1. 1. AKS+KEDAで実現! Container Functions Pipeline JAZUG熊本(くまあず) de:code 2019 振り返り会 2019/06/22 Tsukasa Kato
  2. 2. 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
  3. 3. はじめに 本スライドは6月22日時点の情報を元に作成しています。 最新情報はWebで確認してください。 参考セッション • Keynote • [CD02] Azure Functions 2.0 Deep Dive デベロッパーのための 最新開 発ガイド • [DT81]クラウドネイティブ時代の分散トレーシング Copyright© 2019, kumaazu All Rights Reserved. 3
  4. 4. 今日お話しすること 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. 5. 5 Copyright© 2019, kumaazu All Rights Reserved. Cloud Native
  6. 6. クラウドネイティブ クラウドネイティブ技術は、パブリッククラウド、プライベー トクラウド、ハイブリッドクラウドなどの近代的でダイナミッ クな環境において、スケーラブルなアプリケーションを構築お よび実行するための能力を組織にもたらします。 このアプ ローチの代表例に、コンテナ、サービスメッシュ、マイクロ サービス、イミューダブルインフラストラクチャ、および宣言 型APIがあります。 Copyright© 2019, kumaazu All Rights Reserved. 6 https://github.com/cncf/toc/blob/master/DEFINITION.md
  7. 7. クラウドネイティブを支える技術/アーキテクチャ Copyright© 2019, kumaazu All Rights Reserved. 7
  8. 8. 8 Copyright© 2019, kumaazu All Rights Reserved. Azure Kubernetes Service
  9. 9. 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. 10. 10 Copyright© 2019, kumaazu All Rights Reserved. KEDA
  11. 11. 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レベルオートスケールを可能にするフレームワーク
  12. 12. 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
  13. 13. Copyright© 2019, kumaazu All Rights Reserved. 13 Azure DevOps
  14. 14. 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. 15. 15 Azure Boards ドラッグ&ドロップで管理できる操作性の高さ Reposで管理されているリポジトリのコミット、PRの作業項目 とリンク出来て、効率良いタスク管理が可能 GitHubとの統合によりGitHubリポジトリのコミットやPRの作 業項目へのリンクが可能 ダッシュボードをカスタマイズしてプロジェクトの進行状況を 簡単に監視 TeamsやSlackなどからの利用も可能 Copyright© 2019, kumaazu All Rights Reserved.
  16. 16. 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. 17. 17 Azure Repos 趣味のプロジェクトから世界最大規模のリポジトリまでスケー ル可能な無制限のプライベート Git/ TFVCリポジトリのホス ティング マーケットプレイスから検証や拡張機能を追加したり、Web hook と REST API を使用して自分で作成も可能 スレッドを使いディスカッションしたり、変更に対するGitの コードレビューを効果的に実行可能 Azure Pipelines やその他のツールを使用して、CI/CDをセット アップして、 pull request でビルド、テスト、デプロイを自動 的にトリガー可能 Copyright© 2019, kumaazu All Rights Reserved.
  18. 18. 18 Azure Test Plans アプリケーションのテストは、デスクトップ アプリや Web ア プリに対して実行できる ストーリーやフィーチャーに対してエンドツーエンドの追跡可 能性と品質を活用できる テスト実行時に豊富なシナリオ データをキャプチャして、検 出された欠陥に対処できる Azure Pipelinesと連携することでCI/CDワークフローに自動テ ストを組み込む事ができる Copyright© 2019, kumaazu All Rights Reserved.
  19. 19. 19 Azure Artifacts Artifacts は、Azure Pipelines CI/CD ツールとネイティブに統合 されているため、ビルドとリリース内のあらゆる成果物に簡単 にアクセスできる パッケージを共有し、組み込みの CI/CD、バージョン管理、テ ストを使用することが可能 Maven、npm、NuGet、Python を対象とする一般的な成果物 管理でき、バイナリを Git に保管する必要はなく、Universal Packages を使用して簡単に保管可能 規模問わず簡単にコード共有ができる Copyright© 2019, kumaazu All Rights Reserved.
  20. 20. 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
  21. 21. 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. 22. 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プランの機能を含む テストの計画、追跡、実行 注釈付きのブラウザーベーステスト リッチクライアントのテスト実行 ユーザー受け入れテスト 集中管理されたレポート ユーザーライセンス 個別サービス
  23. 23. 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. 24. 24 Copyright© 2019, kumaazu All Rights Reserved. Microservices
  25. 25. マイクロサービス 1つのアプリケーションを、ビジネス機能に沿った複数の小さ いサービスの疎に結合された集合体として構成するサービス指 向アーキテクチャ。 各サービスはきめ細かい粒度を持ち、軽量なプロトコルを用い て通信を行う。 開発が並列化され、少人数の自律的なチームにより、各チーム が所有するサービスを独立に、開発、デプロイ、スケールさせ ることが可能になる。 CI/CDの実装がしやすい。 Copyright© 2019, kumaazu All Rights Reserved. 25
  26. 26. マイクロサービスの課題 Copyright© 2019, kumaazu All Rights Reserved. 26 Communication Discovery Observability Security 複雑なサービス間通信 サービスや依存関係サービス間認証・認可、 通信暗号化 分散アプリの監視・問題検知
  27. 27. サービスメッシュ(Service mesh) サービス間通信を処理するソフトウェアレイヤーで、アプリに変 わってネットワーク要求を送信するサービス サービスメッシュが提供する代表的なネットワークサービス トラフィック制御 回復制、耐障害性処理 可視化、分散トレース 認証、セキュリティ機能 Copyright© 2019, kumaazu All Rights Reserved. 27
  28. 28. Istio Architecture Copyright© 2019, kumaazu All Rights Reserved. 28 https://istio.io/docs/concepts/what-is-istio/ Istioサービスメッシュは、データプ レーンとコントロールプレーンに論 理的に分割されている データプレーンはインテリジェント プロキシ(Envoy)をサイドカーとし て展開。Mixser、汎用ポリシー、テ レメトリハブとともにマイクロサー ビス間のネットワーク通信を仲介・ 制御 コントロールプレーンが管理し、ト ラフィックをルーティングするプロ キシを設定。ポリシーを定期小して テレメトリを収集するようにMixer を構成する。
  29. 29. 分散トレーシング(Distributed tracing) マイクロサービスのようなアプリケーションが複数のサービスで 構成され、複雑化すると1つのリクエストが複数のサービスを跨い でしょりされる。 その分散したリクエスト全体の流れを分析するためのものが分散 トレーシングである。 分散トレーシングシステムにはZipkinやJaegerなどがあり、、 OpenTracing互換のデータモデルとライブラリが提供される。 Copyright© 2019, kumaazu All Rights Reserved. 29
  30. 30. 分散トレーシングの基本概念 Copyright© 2019, kumaazu All Rights Reserved. 30 Span : 処理ユニット Trace : リクエストの一連の関連Spanの集合体 リクエストに対して 一意なIDが振られ、 各リクエスト経由の パスにおいて、その IDはメタデータと セットで伝搬される https://www.jaegertracing.io/docs/1.8/architecture/
  31. 31. 分散トレーシング実装 Copyright© 2019, kumaazu All Rights Reserved. 31 https://github.com/openzipkin/b3-propagation ZipkinのPropagationプロセス
  32. 32. 分散トレーシング実装例 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']); }
  33. 33. Jaeger Architecture Copyright© 2019, kumaazu All Rights Reserved. 33 https://www.jaegertracing.io/docs/1.8/architecture/
  34. 34. Copyright© 2019, kumaazu All Rights Reserved. 34 Demo
  35. 35. 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
  36. 36. まとめ Azure DevOpsのKubernetes対応が入ったため、Kubernetesへ のパイプラインがより組みやすくなった AKSと組み合わせることでより親和性の高いコンテナデプロイ パイプラインを構成できる 新しく発表されたKEDAを利用することで通常動作しなくても よいコンテナアプリケーションを停止しておき、必要に応じて 起動・スケールする構成も組みやすくなる Copyright© 2019, kumaazu All Rights Reserved. 36
  37. 37. Copyright© 2019, kumaazu All Rights Reserved. 37
  38. 38. Copyright© 2019, kumaazu All Rights Reserved. 38 https://www.cncf.io/blog/2018/03/08/introducing-the-cloud-native-landscape-2-0-interactive-edition/
  39. 39. Copyright© 2019, kumaazu All Rights Reserved. 39 ご静聴ありがとうございました!

×