API Management - Hands-on Lab Script
Additional Topics - Provision your own instance of ColorWeb/ColorAPI
Some of the demos use the ColorWeb web application and the ColorAPI api application. In this lab we will show you how to deploy your own instances of the Color Web and Color API.
The code for the ColorWeb / ColorAPI applications is available here:
Docker Containers exist for these applications and so provides an easy deployment option ( IMPORTANT : due to the new pull restrictions on Docker images, in this lab we will be using the github registry):
- Github
- docker pull ghcr.io/markharrison/coloursapi:latest
- docker pull ghcr.io/markharrison/coloursweb:latest
- DockerHub
- docker pull markharrison/colorweb:latest
- docker pull markharrison/colorapi:latest
With the container we can deploy to multiple hosting options : VM’s, App Services, ACI and also AKS. In this lab we are going to show you how to do it with Azure Container Instances.
Deploying Web and API containers with Azure Container Instances
- Login to Azure Portal at http://portal.azure.com.
-
Open the Azure Cloud Shell and choose Bash Shell (do not choose Powershell)
- The first time Cloud Shell is started will require you to create a storage account.
-
We proceed to create a unique identifier suffix for resources created in this Lab:
APIMLAB_UNIQUE_SUFFIX=$USER$RANDOM # Remove Underscores and Dashes APIMLAB_UNIQUE_SUFFIX="${APIMLAB_UNIQUE_SUFFIX//_}" APIMLAB_UNIQUE_SUFFIX="${APIMLAB_UNIQUE_SUFFIX//-}" # Check Unique Suffix Value (Should be No Underscores or Dashes) echo $APIMLAB_UNIQUE_SUFFIX # Persist for Later Sessions in Case of Timeout echo export APIMLAB_UNIQUE_SUFFIX=$APIMLAB_UNIQUE_SUFFIX >> ~/.bashrc
-
Now we proceed to create a resource group for our ACI objects:
#we define some variables first APIMLAB_RGNAME=myColorsAppRg-$APIMLAB_UNIQUE_SUFFIX APIMLAB_LOCATION=eastus # Persist for Later Sessions in Case of Timeout echo export APIMLAB_RGNAME=$APIMLAB_RGNAME >> ~/.bashrc echo export APIMLAB_LOCATION=$APIMLAB_LOCATION >> ~/.bashrc #we create the resource group az group create --name $APIMLAB_RGNAME --location $APIMLAB_LOCATION
-
Now we create our ACI and specify our colors-web github container
#we define some variables first APIMLAB_COLORS_WEB=mycolorsweb-$APIMLAB_UNIQUE_SUFFIX APIMLAB_IMAGE_WEB=ghcr.io/markharrison/coloursweb:latest APIMLAB_DNSLABEL_WEB=acicolorweb$APIMLAB_UNIQUE_SUFFIX # Persist for Later Sessions in Case of Timeout echo export APIMLAB_COLORS_WEB=$APIMLAB_COLORS_WEB >> ~/.bashrc echo export APIMLAB_IMAGE_WEB=$APIMLAB_IMAGE_WEB >> ~/.bashrc echo export APIMLAB_DNSLABEL_WEB=$APIMLAB_DNSLABEL_WEB >> ~/.bashrc #we create the container instance for the colors web az container create --resource-group $APIMLAB_RGNAME --name $APIMLAB_COLORS_WEB --image $APIMLAB_IMAGE_WEB --dns-name-label $APIMLAB_DNSLABEL_WEB --ports 80 --restart-policy OnFailure --no-wait
-
Now we run the following command to check the status of the deployment and get the FQDN to access the app:
#we check the status az container show --resource-group $APIMLAB_RGNAME --name $APIMLAB_COLORS_WEB --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
The output should something like this:
FQDN ProvisioningState ---------------------------------------------------- ------------------- aci-color-web-fernando22287.eastus.azurecontainer.io Succeeded
Once we have a “Succeeded” message we proceed to navigate to the FQDN. And we should see our home page for our Colors Web:
-
Now we proceed to create the ACI for the colors-api github container:
#we define some variables first APIMLAB_COLORS_API=mycolorsapi-$APIMLAB_UNIQUE_SUFFIX APIMLAB_IMAGE_API=ghcr.io/markharrison/coloursapi:latest APIMLAB_DNSLABEL_API=aci-color-api-$APIMLAB_UNIQUE_SUFFIX # Persist for Later Sessions in Case of Timeout echo export APIMLAB_COLORS_WEB=$APIMLAB_COLORS_WEB >> ~/.bashrc echo export APIMLAB_IMAGE_WEB=$APIMLAB_IMAGE_WEB >> ~/.bashrc echo export APIMLAB_DNSLABEL_WEB=$APIMLAB_DNSLABEL_WEB >> ~/.bashrc #we create the container instance for the colors api az container create --resource-group $APIMLAB_RGNAME --name $APIMLAB_COLORS_API --image $APIMLAB_IMAGE_API --dns-name-label $APIMLAB_DNSLABEL_API --ports 80 --restart-policy OnFailure --no-wait
-
Now we run the following command to check the status of the deployment and get the FQDN to access the app:
#we check the status az container show --resource-group $APIMLAB_RGNAME --name $APIMLAB_COLORS_API --query "{FQDN:ipAddress.fqdn,ProvisioningState:provisioningState}" --out table
The output should something like this:
FQDN ProvisioningState ---------------------------------------------------- ------------------- aci-color-api-fernando22287.eastus.azurecontainer.io Succeeded
Once we have a “Succeeded” message we proceed to navigate to the FQDN. And we should see our home page for our Colors Web: