Houssem Dellai
Cloud Solution Architect at Microsoft
Redhat Openshift Kubernetes Service App Service Container Instance Function App
Deploy apps into Scale and orchestrate Deploy web apps Elastically burst Run containers
a managed Linux containers using or APIs using Web from your Azure on a serverless
Openshift cluster Kubernetes App for Kubernetes Service platform
Containers (AKS) cluster
Infrastructure control Developer productivity
Redhat Openshift Kubernetes Service App Service Container Instance Function App
Deploy apps into Scale and orchestrate Deploy web apps Elastically burst Run containers
a managed Linux containers using or APIs using Web from your Azure on a serverless
Openshift cluster Kubernetes App for Kubernetes Service platform
Containers (AKS) cluster
Container Apps
Infrastructure control Developer productivity
Fully-managed, serverless abstraction
running on Kubernetes infrastructure,
purpose built for managing and scaling
event-driven microservices with a
consumption-based pricing model.
Event-driven Public API Background
Microservices processing endpoints processing
MICROSERVICE A MICROSERVICE B
HTTP TRAFFIC
80% 20%
MICROSERVICE C
REVISION 1 REVISION 2
Deploy and manage a microservices E.g. queue reader application HTTP requests are split between two E.g. continuously-running
architecture with the option to that processes messages as versions of the container app where background process that
integrate with DAPR. they arrive in a queue. the first revision gets 80% of the transforms data in a database.
traffic, while a new revision receives
the remaining 20%.
AUTO-SCALE CRITERIA AUTO-SCALE CRITERIA AUTO-SCALE CRITERIA AUTO-SCALE CRITERIA
Individual microservices can Scaling is determined Scaling is determined Scaling is determined
scale independently using by the number of by the number of by the level of CPU
any KEDA scale triggers messages in the queue concurrent HTTP requests or memory load
Environment
Container app 1
Revision 1 Revision 2
Pod Pod
Environments define an
isolation and Container(s) Container(s)
observability boundary
around a collection of
Container app 2
container apps
Revision 1 Revision 2
Pod Pod
Container(s) Container(s)
Environment
Container app 1
Revision 1 Revision 2
Pod Pod
Containers in Azure
Container Apps can use Container(s) Container(s)
any and development
stack of your choice
Container app 2
Linux only Revision 1 Revision 2
Pod Pod
Container(s) Container(s)
Environment
Container app 1
Revision 1 Revision 2
Pod Pod
Internal or external
visibility with TLS Container(s) Container(s)
termination and
support for HTTP/1.1
and HTTP/2
80% 20%
Ingress
"template": {
"containers": [
{
"image": "myregistry/myQueueApp:v1",
"name": "myQueueApp",
"env": [
{
Securely store sensitive
"name": "QueueName",
"value": "myqueue"
configuration elements that },
{
are then available to containers "name": "ConnectionString",
through environment variables,
"secretref": "queue-connection-string"
}
scale rules, and Dapr }
]
],
}
Environment
Container app 1
Revision 1 Revision 2
Pod Pod
Containers write logs to
standard output or Container(s) Container(s)
standard error streams
surfaced via Log
Analytics
stderr/stdout stderr/stdout
Log Analytics
Environment
Container app 1
Revision 1 Revision 2
Pod Pod
Publish revisions as
Container(s) Container(s)
commits are pushed to
your GitHub repository
by triggering a GitHub Build container
using GitHub Action Azure Container Registry
Action to build a new
container image GitHub repository
Code check-in
Creating a Container App
in the Azure portal