Journal logo

Terraform For Azure APIM to AKS

Write a Terraform Script - Deploy APIM to (AKS) Azure Kubernetes Services

By ManisekaranPublished about a year ago 3 min read
Like
Terraform For Azure APIM to AKS
Photo by Carlos Muza on Unsplash

Terraform script is an example of how to set up an Azure API Management (APIM) service and an Azure Kubernetes Service (AKS) cluster, and it also sets up the necessary resources for continuous integration and continuous development (CI/CD).

The script starts by configuring the Azure provider in Terraform and then creates a resource group in Azure to hold all the other resources.

It then creates an API management service, which is a fully managed service for publishing, documenting and securing APIs.

The next step is to create an Azure Kubernetes Service (AKS) cluster, which allows you to easily deploy and manage containerized applications on Azure. The script configures the cluster to use 3 Linux-based nodes and sets the kubernetes version to 1.19.10

The script then creates a Kubernetes cluster service principal and assigns the principal to the AKS cluster. This service principal allows the AKS cluster to authenticate with other Azure services.

Then it creates a custom role and scope for the AKS cluster and assigns the role to the service principal. This role grants the service principal permissions to perform actions on the AKS cluster.

Lastly it creates a custom role binding, which assigns the custom role to the service principal, allowing the service principal to act with the role's permissions.

Once this script is executed it provisions all the necessary resources for the APIM and AKS cluster in Azure. These resources can then be used to create a CI/CD pipeline to deploy and manage the internal APIs. With Terraform's state management feature, it is easier to version control the infrastructure and also facilitates the rollback to previous version of the infrastructure.

Code

# Configure the Azure provider

provider "azurerm" {

version = "=2.29.0"

features {}

}

# Create a resource group for the APIM and AKS resources

resource "azurerm_resource_group" "hireterraform" {

name = "hireterraform-rg"

location = "eastus"

}

# Create an APIM instance

resource "azurerm_api_management" "hireterraform" {

name = "hireterraform-apim"

location = azurerm_resource_group.hireterraform.location

resource_group_name = azurerm_resource_group.hireterraform.name

publisher_name = "hireterraform"

publisher_email = "[email protected]"

}

# Create an AKS cluster

resource "azurerm_kubernetes_cluster" "hireterraform" {

name = "hireterraform-aks"

location = azurerm_resource_group.hireterraform.location

resource_group_name = azurerm_resource_group.hireterraform.name

dns_prefix = "hireterraform-aks"

kubernetes_version = "1.19.10"

linux_profile {

admin_username = "hireterraform"

ssh_key {

key_data = "ssh-rsa ..."

}

}

service_principal {

client_id = var.client_id

client_secret = var.client_secret

}

network_profile {

network_plugin = "azure"

service_cidr = "10.0.0.0/16"

dns_service_ip = "10.0.0.10"

docker_bridge_cidr = "172.17.0.1/16"

}

}

Save the terraform above file ,

Excute the following command to delpoyment on Azure portal

terraform init: This command initializes a Terraform working directory by downloading and installing the provider plugins required for the configuration. This command should be run before any other Terraform commands.

terraform plan: This command generates and shows an execution plan for the Terraform configuration. It is a good practice to run this command before applying any changes, as it allows you to see what resources will be created, modified, or deleted before making any actual changes.

terraform apply: This command applies the Terraform configuration, creating or modifying resources as specified in the configuration files. It prompts for confirmation before making any changes.

terraform destroy: This command destroys the Terraform-managed infrastructure. It prompts for confirmation before making any changes.

terraform output: This command shows the output values from the Terraform configuration.

terraform state: This command allows you to interact with the state of your Terraform resources.

If you would like to hire our experts , Kindly contanct Go2Hire through portal , they help you for implementaion and deployments

Note that these commands should be executed in a specific order and with correct options. It's also important to test and validate your terraform scripts before executing them in production.

product reviewworkflowhow tohistoryeconomycareerbusiness warsbusinessbook reviewadvice
Like

About the Creator

Manisekaran

Reader insights

Be the first to share your insights about this piece.

How does it work?

Add your insights

Comments

There are no comments for this story

Be the first to respond and start the conversation.

Sign in to comment

    Find us on social media

    Miscellaneous links

    • Explore
    • Contact
    • Privacy Policy
    • Terms of Use
    • Support

    © 2024 Creatd, Inc. All Rights Reserved.