Tutorial - Use PaaS services with an Azure Kubernetes Service (AKS) cluster
With Kubernetes, you can use PaaS services, such as Azure Service Bus, to develop and run your applications.
In this tutorial, part five of seven, you create an Azure Service Bus namespace and queue to test your application. You learn how to:
- Create an Azure Service Bus namespace and queue.
- Update the Kubernetes manifest file to use the Azure Service Bus queue.
- Test the updated application by placing an order.
Before you begin
In previous tutorials, you packaged an application into a container image, uploaded the image to Azure Container Registry, created a Kubernetes cluster, and deployed an application. To complete this tutorial, you need the pre-created aks-store-quickstart.yaml
Kubernetes manifest file. This file download was included with the application source code in a previous tutorial. Make sure you cloned the repo and changed directories into the cloned repo. If you haven't completed these steps and want to follow along, start with Tutorial 1 - Prepare application for AKS.
This tutorial requires Azure CLI version 2.34.1 or later. Run az --version
to find the version. If you need to install or upgrade, see Install Azure CLI.
Create environment variables
Create the following environment variables to use for the commands in this tutorial:
LOC_NAME=chinanorth3 RAND=$RANDOM RG_NAME=myResourceGroup AKS_NAME=myAKSCluster SB_NS=sb-store-demo-$RAND
Create Azure Service Bus namespace and queue
In previous tutorials, you used a RabbitMQ container to store orders submitted by the order-service
. In this tutorial, you use an Azure Service Bus namespace to provide a scoping container for the Service Bus resources within the application. You also use an Azure Service bus queue to send and receive messages between the application components. For more information on Azure Service Bus, see Create an Azure Service Bus namespace and queue.
Create an Azure Service Bus namespace using the
az servicebus namespace create
command.az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
Create an Azure Service Bus queue using the
az servicebus queue create
command.az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
Create an Azure Service Bus authorization rule using the
az servicebus queue authorization-rule create
command.az servicebus queue authorization-rule create \ --name sender \ --namespace-name $SB_NS \ --resource-group $RG_NAME \ --queue-name orders \ --rights Send
Get the Azure Service Bus credentials for later use using the
az servicebus namespace show
andaz servicebus queue authorization-rule keys list
commands.az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
Update Kubernetes manifest file
Configure
kubectl
to connect to your cluster using theaz aks get-credentials
command.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Open the
aks-store-quickstart.yaml
file in a text editor.Remove the existing
rabbitmq
StatefulSet, ConfigMap, and Service sections and replace the existingorder-service
Deployment section with the following content:apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.cn/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.chinacloudapi.cn - name: ORDER_QUEUE_PORT value: "5671" - name: ORDER_QUEUE_TRANSPORT value: "tls" - name: ORDER_QUEUE_USERNAME value: "sender" - name: ORDER_QUEUE_PASSWORD value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi
Note
Directly adding sensitive information, such as API keys, to your Kubernetes manifest files isn't secure and may accidentally get committed to code repositories. We added it here for simplicity. For production workloads, use Managed Identity to authenticate with Azure Service Bus or store your secrets in Azure Key Vault.
Save and close the updated
aks-store-quickstart.yaml
file.
Deploy the updated application
Deploy the updated application using the
kubectl apply
command.kubectl apply -f aks-store-quickstart.yaml
The following example output shows the successfully updated resources:
deployment.apps/order-service configured service/order-service unchanged deployment.apps/product-service unchanged service/product-service unchanged deployment.apps/store-front configured service/store-front unchanged
Test the application
Place a sample order
Get the external IP address of the
store-front
service using thekubectl get service
command.kubectl get service store-front
Navigate to the external IP address of the
store-front
service in your browser usinghttp://<external-ip>
.Place an order by choosing a product and selecting Add to cart.
Select Cart to view your order, and then select Checkout.
View the order in the Azure Service Bus queue
- Navigate to the Azure portal and open the Azure Service Bus namespace you created earlier.
- Under Entities, select Queues, and then select the orders queue.
- In the orders queue, select Service Bus Explorer.
- Select Peek from start to view the order you submitted.
Next steps
In this tutorial, you used Azure Service Bus to update and test the sample application. You learned how to:
- Create an Azure Service Bus namespace and queue.
- Update the Kubernetes manifest file to use the Azure Service Bus queue.
- Test the updated application by placing an order.
In the next tutorial, you learn how to scale an application in AKS.