diff --git a/terraform-azure/.gitignore b/terraform-azure/.gitignore new file mode 100644 index 0000000..66df410 --- /dev/null +++ b/terraform-azure/.gitignore @@ -0,0 +1 @@ +.terraform* \ No newline at end of file diff --git a/terraform-azure/main.tf b/terraform-azure/main.tf new file mode 100644 index 0000000..890a562 --- /dev/null +++ b/terraform-azure/main.tf @@ -0,0 +1,34 @@ +resource "random_pet" "prefix" {} + +resource "azurerm_resource_group" "default" { + name = "${random_pet.prefix.id}-rg" + location = "West US 2" + + tags = { + environment = "Demo" + } +} + +resource "azurerm_kubernetes_cluster" "default" { + name = "o11ylab-k23-aks" + location = azurerm_resource_group.default.location + resource_group_name = azurerm_resource_group.default.name + dns_prefix = "o11ylab-k23-aks-k8s" + + default_node_pool { + name = "default" + node_count = 3 + vm_size = "Standard_B2s" + os_disk_size_gb = 30 + } + + identity { + type = "SystemAssigned" + } + + role_based_access_control_enabled = true + + tags = { + environment = "Demo" + } +} \ No newline at end of file diff --git a/terraform-azure/outputs.tf b/terraform-azure/outputs.tf new file mode 100644 index 0000000..c1efcc2 --- /dev/null +++ b/terraform-azure/outputs.tf @@ -0,0 +1,7 @@ +output "resource_group_name" { + value = azurerm_resource_group.default.name +} + +output "kubernetes_cluster_name" { + value = azurerm_kubernetes_cluster.default.name +} \ No newline at end of file diff --git a/terraform-azure/readme.md b/terraform-azure/readme.md new file mode 100644 index 0000000..9c6794d --- /dev/null +++ b/terraform-azure/readme.md @@ -0,0 +1,34 @@ +## Azure Terraform + +This provisions an AKS cluster using the `az` CLI for authentication. + +### 1. Authentication + +``` + # Login to an azure account + az login +``` + +### 2. Creating a cluster + +``` + terraform init + # Verify terraform plan output looks correct before continuing + terraform plan + terraform apply + +``` + +Your cluster name and Azure resource group name will be output after running `terraform apply`. + +### 3. Connect to cluster + +``` + az aks get-credentials --resource-group YOUR_RESOURCE_GROUP --name YOUR_CLUSTER_NAME +``` + +Verify kubectl is now configured for the cluster + +``` + kubectl cluster-info +``` \ No newline at end of file diff --git a/terraform-azure/versions.tf b/terraform-azure/versions.tf new file mode 100644 index 0000000..607bc58 --- /dev/null +++ b/terraform-azure/versions.tf @@ -0,0 +1,18 @@ +terraform { + required_providers { + azurerm = { + source = "hashicorp/azurerm" + version = "=3.0.0" + } + random = { + source = "hashicorp/random" + version = "=3.5.1" + } + } +} + +# Defaults to CLI authentication +provider "azurerm" { + features {} +} +