Getting Started with Azure Cloud Kit
- 1. Prerequisites
- 2. Download the Azure Cloud Kit
- 3. Configure Azure CLI
- 4. Prepare Environment for Terraform State
- 5. Initialize terraform
- 6. Customize Terraform for your Setup
- 7. Run
terraform plan
- 8. Run
terraform apply
- 9. Use
kubectl
to Connect to Kubernetes Cluster - 10. Cleanup Terraform Deployed Items
Azure Cloud Kit lets you quickly deploy your Vaadin application to Microsoft’s Azure Cloud.
The Azure Cloud Kit includes a set of Terraform blueprints that helps you to deploy your application to Azure Cloud, specifically to Azure Kubernetes Service (AKS). Terraform is an open-source infrastructure as code (IaC) software tool that provides a consistent CLI workflow that allows you safely and predictably to create, change, and improve your cloud infrastructure.
2. Download the Azure Cloud Kit
The Azure Cloud Kit is available in a private GitHub repository. If your commercial subscription includes the right to use the Azure Cloud Kit, or if you’d like to obtain a trial license, please contact us through this form, and we’ll provide you access to the private GitHub repository. Once you have access, download the Azure Cloud Kit from github.com/vaadin/azure-kit. When you’ve done this, unzip it to a local directory.
3. Configure Azure CLI
To start, you need to use Azure CLI from a terminal to login to your Azure account. Then select the Azure subscription you want to use for your deployment.
-
Login to Azure
az login
-
Select the Azure subscription you want to use for your deployment
az account set --subscription <SUBSCRIPTION_ID>
-
Verify that you are logged in and the correct subscription is selected
az account show
4. Prepare Environment for Terraform State
To use the Azure Cloud Kit, you need to create a storage account and a container for Terraform state.
Terraform state is used to keep track of the resources that have been created.
Terraform uses this information to determine what changes need to be made when you run the terraform apply
command, which is used to deploy your application to Azure.
The Azure Cloud Kit provides a script called, create_terraform_storage.sh
. This script creates a storage account and a container for Terraform state in the Azure subscription you selected.
To run the script, open a terminal and navigate to the folder where you unzipped the Azure Cloud Kit. Then run the following:
create_terraform_storage.sh
The output of the script contains the name of the storage account, storageaccount
. This name is generated randomly and unique for your Azure subscription. You need to use this name in the next step, so make sure you save the storageaccount
value.
5. Initialize terraform
Next, you need to initialize the directory where you unzipped the Azure Cloud Kit as a Terraform working directory. To do this, open a terminal and navigate to that directory and execute the following:
terraform init
Terraform will then download the Azure provider and other required plugins. During the initialization, Terraform will ask you to provide the name of the storage account you created in the previous step.
Initializing modules...
- acr in modules/acr
- aks in modules/aks
- keyvault in modules/keyvault
- network in modules/network
Initializing the backend...
storage_account_name
The name of the storage account.
Enter a value: <enter storageaccount name>
Successfully configured the backend "azurerm"! Terraform will automatically
use this backend unless the backend configuration changes.
Initializing provider plugins...
...
6. Customize Terraform for your Setup
The Azure Cloud Kit stores the configuration that defines your deployment in two files: variables.tf
and settings.tf
.
You’ll find these files in the root directory of the Azure Cloud Kit.
The variables.tf
file contains most the variables that describe the deployment. These variables include:
-
The name of your application and the name of your environment;
-
The Azure region where you want to deploy your application;
-
The number of nodes in your Kubernetes cluster; and
-
The size of the nodes.
This list of variables is not comprehensive. There may be others.
The settings.tf
file contains the network settings for your deployment.
The variables.tf
and settings.tf
files are already populated with default values.
However, you can customize these files to match your needs.
7. Run terraform plan
Before you deploy your application to Azure, you should run the terraform plan
command to see what resources will be created.
This command won’t create any resources, but it will show you what resources will be created if you run the terraform apply
command.
This is a good way to verify that the configuration is correct and that you’re satisfied with the resources that will be created.
terraform plan -out=plan.out
Verify the output on screen and proceed if the proposed setup is acceptable.
8. Run terraform apply
When you’re satisfied with the output of the terraform plan
command, you can run terraform apply
to deploy your application to Azure.
This command will create all the resources that are defined in the variables.tf
and settings.tf
files.
$ terraform apply "plan.out"
azurerm_resource_group.resource_group: Creating...
...
Apply complete! Resources: 8 added, 0 changed, 0 destroyed.
9. Use kubectl
to Connect to Kubernetes Cluster
To connect to the Kubernetes cluster that was created by the Azure Cloud Kit, use the kubectl
command with the kubeconfig
file. This configuration file was auto-generated by running the terraform apply
command in the earlier step.
To connect specifically to the Kubernetes cluster, run the following from the command line:
$ export KUBECONFIG="./kubeconfig"
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
aks-nodepool-31060480-vmss000000 Ready agent 3m v1.23.12
aks-nodepool-31060480-vmss000001 Ready agent 3m v1.23.12
In order to get the ingress IP address, you would execute the following from the command line:
$ kubectl -n kube-system get service ingress-nginx-controller
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.240.97.40 a.b.c.d 80:30799/TCP,443:31928/TCP 106m
10. Cleanup Terraform Deployed Items
If you want to remove all of the resources that were created by the Azure Cloud Kit, you can run the terraform destroy
command like so:
terraform destroy
Additionally, you will need to remove manually from the Azure portal the storage account, which is in a file called storageaccount
, and the resource group called, Terraform-ResourceGroup
, which was created by the shell script above.
3EFFB1E4-FEF7-4836-90A4-30B9B6CB455E