Slide 1

Slide 1 text

Nilesh Gule @nileshgule | www.HandsOnArchitect.com Scaling .Net Core Containers with Event Driven Workloads

Slide 2

Slide 2 text

$whoami { “name” : “Nilesh Gule”, “website” : “https://www.HandsOnArchitect.com", “github” : “https://GitHub.com/NileshGule" “twitter” : “@nileshgule”, “linkedin” : “https://www.linkedin.com/in/nileshgule”, “likes” : “Technical Evangelism, Cricket”, “co-organizer” : “Azure Singapore UG” }

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

@nileshgule RabbitMQ Demo setup 1000 (configurable) messages Batch of 50 (configurable) messages https://github.com/NileshGule/pd-tech-fest-2019

Slide 6

Slide 6 text

@nileshgule RabbitMQ Demo setup 1000 (configurable) messages Batch of 50 (configurable) messages https://github.com/NileshGule/pd-tech-fest-2019  RabbitMQ Messaging layer  Producer produces configurable number of messages  Consumer consumes configurable number of messages in a batch  Consumer simulates a long running process with artificial delay

Slide 7

Slide 7 text

Demo build & publish docker images

Slide 8

Slide 8 text

Demo deploy application containers

Slide 9

Slide 9 text

AKS Managed Identity (aksmqcluster-agentpool) nileshgule/techtalksmqproducer nileshgule/techtalksmqconsumer ngACRRegistry aksmqCluster ngacrregistry.azurecr.io/nileshgule /techtalksmqproducer ngacrregistry.azurecr.io/nileshgule/ techtalksmqconsumer Acr pull acrResourceGroup demo-kedaSeriesRG docker push using azure user token Acr login using AAD No need to use Admin user

Slide 10

Slide 10 text

KEDA Architecture

Slide 11

Slide 11 text

Azure Event Hub Azure Service Bus Queues and Topics Azure Storage Queues Kafka Prometheus RabbitMQ Redis Lists Liiklus NATS AWS CloudWatch AWS Simple Queue Service GCP PubSub Integrates with Azure functions

Slide 12

Slide 12 text

Demo deploy KEDA on AKS cluster

Slide 13

Slide 13 text

apiVersion: keda.k8s.io/v1alpha1 kind: ScaledObject metadata: name: rabbitmq-consumer namespace: default labels: deploymentName: rabbitmq-consumer-deployment spec: scaleTargetRef: deploymentName: rabbitmq-consumer pollingInterval: 5 # Optional. Default: 30 seconds cooldownPeriod: 30 # Optional. Default: 300 seconds minReplicaCount: 1 # Optional. Default: 0 maxReplicaCount: 30 # Optional. Default: 100 triggers: - type: rabbitmq metadata: queueName: hello queueLength : ‘5’ authenticationRef: name: trigger-auth-rabbitmq-host

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

Pros Cons

Slide 16

Slide 16 text

Scale RabbitMQ Consumer with Virtual Node kedaVNet kedaAKSSubnet kedaVirtualNodeSubnet Producer - .Net Core API Consumers - .Net Core exe

Slide 17

Slide 17 text

Demo extend KEDA with Virtual Node

Slide 18

Slide 18 text

Summary • Self contained application with all its dependencies Docker • Orchestrates containers • Self healing • Service discovery • Scaling Kubernetes • Extends Kubernetes with event driven capabilities KEDA

Slide 19

Slide 19 text

Play with Docker Play with Kubernetes Kubernetes Learning Path : MSLearn Linux Academy learning paths

Slide 20

Slide 20 text

AKS cluster-autoscalar Virtual Node Horizontal pod autoscale virtual kubelet KEDA https://azure.microsoft.com/mediahandler/files/resourcefiles/kubernetes-learning- path/Kubernetes%20Learning%20Path%20version%201.0.pdf

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Azure Kubernetes Service Workshop References

Slide 23

Slide 23 text

https://github.com/NileshGule/pd-tech-fest-2019

Slide 24

Slide 24 text

Thank you very much Code with Passion and Strive for Excellence https://www.slideshare.net/nileshgule/presentations https://speakerdeck.com/nileshgule/

Slide 25

Slide 25 text

Nilesh Gule ARCHITECT | MICROSOFT MVP “Code with Passion and Strive for Excellence” nileshgule @nileshgule Nilesh Gule NileshGule www.handsonarchitect.com

Slide 26

Slide 26 text

Q&A