You are on page 1of 35

Azure Arc Jumpstart

Challenges and why the project was created


Azure Docs
• Documentation of other platforms/clouds architecture and implementation does not exist
• ARM-focused
• Can be challenging to contribute
• At times, can be hard to navigate

Customers/Partners
• Arc is unique in the sense of “touching” almost every aspect of Azure management
• Hybrid can be somewhat confusing
• Hard to create a scale enablement motion for an emerging technology
• No public-facing Hybrid community

Field/Product
• Other platforms/clouds relevant experience
• It’s hard to create a field enablement motion for an emerging technology
• Sprawl of information and content
• Streamlined process from field to engineering
Azure Arc Jumpstart
Rich, automated, open-sourced, community-driven

aka.ms/AzureArcJumpstart
Azure Arc Jumpstart
• Founded in 2020
• Provide a automated “zero to hero” scenarios for multiple environments and
deployment types.
• Create a ”supermarket” experience by being able to take “off the shelf” scenarios
and deploy it.
• Meeting Azure Arc customers and partners where they are!
• Open source, community-driven
• Agile, “startup-like” team.
• Jumpstart ArcBox is a sandbox environment that allows users to explore all the
major capabilities of Azure Arc in a click of a button.
• Jumpstart HCIBox is a sandbox environment that allows users to explore all the
major capabilities of Azure Stack HCI in a click of a button.
• Jumpstart Agora is a collection of industry verticals sandbox environments that
allows users to experience cloud to edge scenarios.
• Ready to go technical demos on YouTube.
• Open-Source diagrams
• Jumpstart Lighting is a show where people come to share their Azure Arc and
Hybrid Cloud stories.
Azure Arc Jumpstart
Core Design Principals

Jumpstart scenarios
• “User never fail” mentality
• Minimum dependency between bootstrap and unified Bootstrap scenarios
Unified Operations
operations scenarios (day-2) scenarios
• If it can be automated, it will be automated
• 1-click automation
• Modular automation, Lego-like coding, reusable,
comprehensive, repeatable, reliable
• Support as many deployment options as possible
• ArcBox
Continuous Agora
No detail is too small, no screenshot, note, disclaimer
or explanation left behind code synergy
• Only public preview and GA services/features Flavors Industry scenarios

HCIBox

Azure (nested) Physical (roadmap)


Committed to open-source
Classified as Microsoft Highly Confidential

Introducing Jumpstart Agora


Jumpstart for Industries and application
development velocity across cloud and edge

Classified as Microsoft Highly Confidential


Classified as Microsoft Highly Confidential

The word "agora" comes from the ancient


Greek term for a public gathering place or
assembly, and it has come to be used more
broadly to refer to any place or forum
where people come together for discussion
or exchange.

Classified as Microsoft Highly Confidential


Classified as Microsoft Highly Confidential

What is the problem?

 Demo is not enough; people need to try it by their selves.


 Lack of hands-on artifacts that supports storytelling.
 Random repositories are confusing and hard to maintain. One Jumpstart to
rule them all.
 Lack of quality “Spaghetti on the wall” mechanism and feedback loop to the
product groups.
 Need to meet users where they are.

Classified as Microsoft Highly Confidential


Jumpstart Agora industries landscape (current and future)

Retail Manufacturing

Contoso Contoso Contoso Contoso Contoso Contoso


Supermarket Pizza Burgers Robotics Electronics Motors

Healthcare

Additional Industry verticals


Contoso Contoso Contoso
Pharmacies Urgent Care Hospitals
Contoso Supermarket
Contoso Supermarket (v1.0 release)
Contoso Supermarket
User experience scenarios

Use case Contoso Supermarket service Contoso Supermarket service or platform

Cosmos DB, Azure Data Explorer, OSS PostgreSQL, AKS


Data pipeline and reporting across cloud and edge for store orders Point of Sale (PoS)
Edge Essentials
IoT Hub, Azure Data Explorer, Mosquitto MQTT Broker,
Data pipeline and reporting across cloud and edge for sensor telemetry Freezer Monitoring for Food Safety
Prometheus, Grafana, AKS Edge Essentials
AKS Edge Essentials, GitOps (Flux), OSS PostgreSQL, Intel
Enabling AI at the Edge & Software configurations rollout with basic GitOps flow Managers Control Center
OpenVino Inference Engine
AKS, AKS Edge Essentials, Azure Arc, Flux, GitHub Actions,
Streamlining the Software Delivery Process using CI/CD Point of Sale (PoS)
Azure Container Registry

Infrastructure observability for Kubernetes and Arc-enabled Kubernetes Infrastructure AKS, AKS Edge Essentials, Prometheus, Grafana

Infrastructure observability for Azure Arc-enabled servers using Azure Monitor Infrastructure Azure Arc-enabled servers, Azure Monitor

Infrastructure security with Microsoft Defender for Servers Infrastructure Azure Arc-enabled servers, Microsoft Defender for Cloud
Contoso Supermarket architecture
Contoso Supermarket
Applications and technology stack
Tooling and operations Contoso Supermarket applications stack
Inner loop process Checkout Queue Freezer Monitoring for
Point of Sale (PoS)
Outer loop process Monitoring Food Safety
Dev Containers
IDE
Microsoft Defender for Cloud Azure Log Analytics Prometheus and Grafana Observability stack (OSS)
GitHub Actions
GitOps
Dashboards
Cost management
Client interfaces
Azure Container Registry (ACR) Azure Monitor AKS Edge Essentials Azure Kubernetes Service
(as Arc-enabled Kubernetes)

Windows 11 IoT (as Arc-enabled servers)


Azure Automation Azure Data Explorer (ADX)

Azure IoT Hub Azure Cosmos DB Azure Compute, storage and network stack

Azure
Point of Sale (PoS) and Checkout Queue Monitoring
Contoso Supermarket
Point of Sale (PoS) service architecture
1 Customer select products and place order

When the order is placed, an entry is generated in


2 the local PostgresSQL DB containing the order date, Azure Data Explorer (ADX) Azure Cosmos DB
5 Orders Container
the order details, and the store ID.
A cloud sync daemon is querying the Orders
3 table every 2 minutes and creating a JSON
document
The JSON document is then pushed to Azure ADX Dashboards
4 Cosmos DB for consolidation while allowing the 6
store to operate locally
Using Azure Data Explorer (ADX), the data is
5
consolidated by timestamp and storeID

Dashboard reports are created in ADX to analyze


6
and render PoS order data

JSON: { orderId, orderDate,


4 orderdetails, storeID,
cloudSynced }

Store AKS Edge Essentials cluster (Arc-enabled)

Store Point of Sale (POS) Local PostgreSQL Cloud Sync daemon


PSQL: INSERT INTO database server (OSS) PSQL: SELECT FROM
1 contoso.Orders (orderDate, contoso.Orders where
orderDetails, storeID) cloudSynced = 0

2 3
Contoso Supermarket
customer
Contoso Supermarket
Checkout Queue Monitoring service architecture
Checkout Queue Monitoring frontend service – A web
1 application that allows the monitoring of checkout queues,
updates to products and a live camera feed view. Store cameras

Checkout Queue Monitoring backend service – A background service


2 that generates queue data, with a minimal API that powers the frontend
service and interface with PostgreSQL database server.

PostgreSQL database server – Interact with the Queue Monitoring


3
backend service and holds the service generated data.

Checkout Queue Monitoring AI API service – Provides an API for the


4
Queue Monitoring frontend service to display a live camera feed view. Store AKS Edge Essentials cluster (Arc-enabled)

Queue Monitoring Local PostgreSQL


AI API service database server (OSS)

Queue Monitoring Queue Monitoring


frontend service backend service

Contoso Supermarket
store manager
Contoso Supermarket
Point of Sale (PoS) service – Shopper view
Contoso Supermarket
Point of Sale (PoS) service – Data-driven dashboards
Contoso Supermarket
Queue Monitoring service – Store manager checkout queue management
Contoso Supermarket
Queue Monitoring service – Store manager video monitoring
Freezer Monitoring for Food Safety service
Contoso Supermarket
Freezer Monitoring for Food Safety service architecture
MQTT publisher streams temperature change
1
messages to the MQTT broker
Azure Data Explorer (ADX) MQTT: {"Temperature (F)": 2}, Azure IoT Hub
{"Humidity (%)": 43} (MQTT Subscriber)
MQTT broker streams temperature change
2a
messages to the observability stack
4
MQTT broker streams temperature change
2b messages to the IoT Hub ADX Dashboards

Temperature change messages are ingested into 3


3
an Azure Data Explorer database

Temperature change events are visualized using


4
Grafana or Azure Data Explorer Web UI

2b MQTT: {"Temperature (F)": 2},


{"Humidity (%)": 43}

Store AKS Edge Essentials cluster (Arc-enabled)

Store Freezer integrated Mosquitto MQTT Broker Observability stack


MQTT client (Publisher)
MQTT: {"Temperature (F)": 2}, MQTT: {"Temperature (F)": 2},
{"Humidity (%)": 43} {"Humidity (%)": 43}
Prometheus Grafana

1 2a
Contoso Supermarket
Freezer Monitoring for Food Safety service – Store manager view (Azure Data Explorer)
Contoso Supermarket
Freezer Monitoring for Food Safety service – Operator view (Grafana)
Streamlining the Software Delivery Process using CI/CD
Contoso Supermarket
AKS Edge Essentials L0-1-2 virtualization stack architecture

Seattle AKS EE cluster Chicago AKS EE cluster Local Dev AKS EE cluster

L2 VM CBT Mariner Linux L2 VM CBT Mariner Linux L2 VM CBT Mariner Linux

L2 Hyper-V virtual machine deployed as nested VM L2 Hyper-V virtual machine deployed as nested VM L2 Hyper-V virtual machine deployed as nested VM
by the AKS EE cluster as a by the AKS EE cluster as a by the AKS EE cluster as a
Kubernetes control-plane node Kubernetes control-plane node Kubernetes control-plane node

L1 VM Seattle L1 VM Chicago L1 VM Local Dev


W11-IoT VM W11-IoT VM W11-IoT VM

Windows 11 IoT Windows 11 IoT Windows 11 IoT


L1 Hyper-V virtual machine deployed as nested VM L1 Hyper-V virtual machine deployed as nested VM L1 Hyper-V virtual machine deployed as nested VM
on the L0 VM and Hyper-V role and on the L0 VM and Hyper-V role and on the L0 VM and Hyper-V role and
nested virtualization enabled by itself nested virtualization enabled by itself nested virtualization enabled by itself

L0 VM Windows Server 2022 Client VM (deployed in Azure, nested virtualization enabled)


Contoso Supermarket
Development and deployment cycle environment mapping

Inner Loop Outer Loop

Build Push Push

Debug Code Release Integrate


Debug Code
Continues
Local Continues Continues Delivery Delivery
Development Integration via GitOps via GitOps
(Canary/Staging)
(Production)
Test Deploy Build Deploy Test

Local Dev Staging Chicago Canary Seattle Production


AKS Edge Essentials AKS AKS Edge Essentials AKS Edge Essentials
1.

2.
Developer makes code change in VSCode devContainer, check-in code to remote fork
feature branch, test, and debug in Dev Kubernetes cluster.
Upon successful testing and debug, developer will submit a pull request (PR) against base
Dev cluster
(AKS-EE)

Test & Debug


Contoso Supermarket
CI/CD workflow
branch.
3. Once PR is approved, feature branch is merged to base branch.

Continues Integration (CI) workflow starts


1 Code check-in
4. GitHub Action CI workflow starts and runs unit tests, and container image building
5. Once completed, new image version with stage-v1.x tag is pushed to ACR. Client VM
Continues Integration (CI) workflow end and VSCode
Continues Delivery (CD) workflow starts devContainer Pull request stage-v1.x image
4
6. GitHub Actions workflow creates a PR to update the Helm manifest which holds the Staging Source code PR merged Azure Container
GitOps configuration. PR is auto approved via the workflow. Developer Base branch GitHub Actions Registry (ACR)
7. Flux operator capture the new commit in staging branch, pull the stage-v1.x image from 2
ACR and deploy to staging cluster.
8. Upon deployment, flux notification controller trigger GitHub Action workflow for staging 3 5
integration tests in Staging.
9
Err
Staging branch
9Err. If staging Integration tests fail, return to developer. 7 Auto approved PR
6
9. Upon Integration tests completion, GitHub Actions workflow push new Helm manifest
canary-v1.x image to ACR. Holding GitOps
10. Once canary-v1.x image pushed to ACR, DevOps engineer creates a PR against canary environment variables
branch to update the Helm manifest which holds the Canary GitOps configuration.
11. PR is manually approved by release manager.
12. Flux operator capture the new commit in canary branch, pull the canary-v1.x image from HTTPS request
Staging cluster (AKS) canary-v1.x image
ACR and deploy to canary cluster. GitHub Actions 9
13. Upon deployment, flux notification controller trigger GitHub Action workflow for canary 8
testing.
14 prod-v1.x image
14Err. If canary tests fail, return to Release Manager for further investigation. Integration tests
PR merged
14. Upon canary tests completion, GitHub Actions workflow push new prod-v1.x image to ACR. Pull request HTTPS request
15. Once prod-v1.x image pushed to ACR, DevOps engineer creates a PR against production Canary branch Canary cluster
branch to update the Helm manifest which holds the Production GitOps configuration. (AKS-EE, Arc-enabled) GitHub Actions
16. PR is manually approved by release manager. 13
17. Flux operator capture the new commit in production branch, pull the prod-v1.x image from Helm manifest
ACR and deploy to production cluster. Holding GitOps
DevOps 10 11
18. Upon deployment, flux notification controller trigger GitHub Action workflow for environment variables Release Canary tests
production testing. Manager latest image
12 14
Err
19Err. If production tests fail, return to Release Manager for further investigation.
PR merged
Pull request HTTPS request
19. Upon production tests completion, GitHub Actions workflow push new latest image to ACR. Production branch Production cluster
(AKS-EE, Arc-enabled) GitHub Actions
Continues Delivery (CD) workflow ends 19
18
Helm manifest
Holding GitOps 16
15 environment variables 19 Production tests
Err
17
Infrastructure observability for Kubernetes and Arc-enabled Kubernetes
Contoso Supermarket
Observability infrastructure stack architecture

AKS Staging cluster AKS Edge Essentials AKS Edge Essentials AKS Edge Essentials
Local Development cluster Seattle Production cluster Chicago Production cluster

Staging Staging Dev Dev Production Production


Prometheus Grafana Prometheus Grafana Prometheus Prometheus

L1 Local Dev L1 Seattle L1 Chicago


Azure
VM W11-IoT VM VM W11-IoT VM VM W11-IoT VM

L0
VM
Production Grafana (Windows
Windows Server 2022 Client VM MSI Web Client)
(deployed in Azure, nested virtualization enabled)

Azure
Contoso Supermarket
Kubernetes operational infrastructure observability
Contoso Supermarket
Deployment flow 5

Azure resources deployment


1

2 Client VM
Azure Developer
Azure CLI 3 4
CLI (azd)
“Bootstrap” PowerShell “Bootstrap” PowerShell
script runtime via script inject the
Custom Script Extension “Logon” PowerShell script
to the Client VM

Bicep template

6
“Logon” script runtime
User uses either Azure CLI or Azure Developer CLI (azd) to
1 Configuring nested
deploy a single Azure Bicep template. Environment Agora Apps GitHub
Creating Azure IoT virtualization
automation repository
resources infrastructure for AKS
preparations preparations
Template deploys multiple Azure resource, including the Edge Essentials
2
Client virtual machine.

Client VM is using Custom Script Extension to run the Bootstrap PowerShell Configuring GitOps Azure Arc
3 Additional Kubernetes Deploying AKS Edge
script, responsible from initial environment bootstrap and preparation. and deploying integration and
configurations Essentials
applications extensions config
Bootstrap PowerShell script inject the “Logon” PowerShell script
4
to Client VM.
Additional
User log in to Client VM via RDP or Azure Bastion, which Deploying Logging and
5 Installing dev tools environment
observability stack cleanup
automatically start the “Logon” PowerShell script. preparations

6 “Logon” PowerShell script runtime perform multiple additional


automated operations to prepare the rest of the environment.
Questions?! Issues?! Jumpstart feedback?!

Submit an issue or a feature request or join our


GitHub Discussions in our GitHub repository,

it’s simple as that!


Thank you!

You might also like