Slide 1

Slide 1 text

Cloud-Native Apps: standardized deployments for Azure with Porter Thorsten Hans @ThorstenHans Consultant

Slide 2

Slide 2 text

Consultant @ Thinktecture #Azure #Kubernetes #CloudNative #Terraform [email protected] thinktecture.com thorsten-hans.com @ThorstenHans Thorsten Hans

Slide 3

Slide 3 text

What will you see today - We will ”install” a cloud-native application which consists of - Some cloud infrastructure automated with Terraform - Dependencies being deployed to Kubernetes using Helm - A containerized application, being deployed to Kubernetes as a helm chart Preview

Slide 4

Slide 4 text

What we will cover today • Introduction • What is CNAB • Why should one use it • What is Porter • Adopting the Porter workflow Talking Points

Slide 5

Slide 5 text

Why are we talking about that • Distributed (cloud-based or cloud-native) apps consist of many artifacts • Infrastructure • Application binaries (packages, containers, functions) • Related services • Configuration Data (sensitive and non-sensitive) • Rather complex toolchains are used to manage and interact with them Introduction

Slide 6

Slide 6 text

Why are we talking about that Build & test the app Build and push Docker image(s) Provision cloud infrastructure Configure cloud infrastructure Deploy dependencies Deploy application Introduction P

Slide 7

Slide 7 text

Why are we talking about that Introduction az (Azure CLI) Bash (Shell Scripts) PowerShell (PowerShell Scripts) terraform (Terraform CLI) tfenv (Terraform Version Manager) nvm (Node Version Manager) npm (Node Package Manager) dotnet (.NET CLI) docker (Docker CLI) kubectl (Kubernetes CLI) helm (Helm CLI) CMD (Batch Files) azcopy (Azure Storage Copy) bicep (Project Bicep CLI)

Slide 8

Slide 8 text

Why are we talking about that Introduction Source: https://media.giphy.com/media/rnTXYK5dIKEtGdQAO2/source.gif

Slide 9

Slide 9 text

There is hope Introduction Source: https://media.giphy.com/media/J1nr4o7oolWz6/source.gif

Slide 10

Slide 10 text

What we will cover today • Introduction • What is CNAB • Why should one use it • What is Porter • Adopting the Porter workflow Talking Points

Slide 11

Slide 11 text

https://cnab.io/ - Cloud-Native Application Bundles (CNAB) - Specifies how distributed apps are packaged, installed, mutated, and destroyed - CNAB is cloud agnostic - CNAB artifacts are - easy to share / consume - signed to verify integrity - consumed and stored in trusted locations What is CNAB

Slide 12

Slide 12 text

Anatomy of a CNAB bundle What is CNAB Application Image(s) Invocation Image Bundle Descriptor Cloud Native Application Bundle

Slide 13

Slide 13 text

Application Image(s) • Your good old application image • (Docker) Container Image • Containerized applications are typical use-case • But not mandatory What is CNAB

Slide 14

Slide 14 text

Invocation Image • Technically it is a container image • The invocation image contains all required tools • Desired tool configuration applied • Desired version is installed • It contains all templates, manifests, metadata, and configuration • THIS IS THE CLOUD-INSTALLER What is CNAB Source https://media.giphy.com/media/mXnO9IiWWarkI/source.gif

Slide 15

Slide 15 text

Bundle Descriptor • JSON document containing essential information about the CNAB bundle • Application image(s) with its/their digests • Invocation image with its digests • Definitions of inputs and outputs • Can be singed What is CNAB

Slide 16

Slide 16 text

CNAB Distribution Channels • Bundles are OCI compliant aritfacts • The can be stored in OCI Registries • For example a Docker Registry such as Azure Container Registry (ACR) What is CNAB

Slide 17

Slide 17 text

What we will cover today • Introduction • What is CNAB • Why should one use it • What is Porter • Adopting the Porter workflow Talking Points

Slide 18

Slide 18 text

• Keep using the tools you know and love • Abstract away the complexities with a single command • Eleminate truck factor • Establish trust • by signing bundles • by distributing your applications using trusted channels Why should one use it

Slide 19

Slide 19 text

• Simplifies cloud-native application lifecycle • Everything becomes version-controlled • Installing, and upgrading cloud-native applications becomes • atomic • easy Why should one use it

Slide 20

Slide 20 text

What we will cover today • Introduction • What is CNAB • Why should one use it • What is Porter • Adopting the Porter workflow Talking Points

Slide 21

Slide 21 text

https://porter.sh/ - Open-source CNAB implementation - Establishes patterns to improve productivity - Parameters - Outputs - Credentials - Mixins - Makes authoring CNAB bundles easy and offers a single CLI What is Porter

Slide 22

Slide 22 text

The Porter Manifest - Single YAML Manifest provides all capabilities - Porter creates a CNAB bundle from the manifest - Required tools (mixins) will be added to the invocation image by Porter - Dockerfile template can be fully customized - if required What is Porter

Slide 23

Slide 23 text

Porter mixins - Porter mixins are managed using the porter mixin commands - Available mixins - az, aws, gcloud - exec - terraform - Kubernetes, helm2, helm3 What is Porter

Slide 24

Slide 24 text

What happens where Porter Interactions local machine Invocation image destination Parameters and Credentials Actions and Steps

Slide 25

Slide 25 text

What we will cover today • Introduction • What is CNAB • Why should one use it • What is Porter • Adopting the Porter workflow Talking Points

Slide 26

Slide 26 text

What was the outcome of the poll

Slide 27

Slide 27 text

Demo Time § Provision Azure Resource to deal with Terraform state correctly § Use Terraform to spin-up the application platform (AKS) § Install 3rd party dependencies in the cluster (NGINX Ingress) § Deploy the application (containerized .NET API) in the cluster Adopting the Porter workflow

Slide 28

Slide 28 text

Q&A If you have further questions: shoot me a mail at [email protected] / [email protected] or tweet at @ThorstenHans