Skip to content

Commit

Permalink
Issue #3: Initial setup of aks cluster
Browse files Browse the repository at this point in the history
  • Loading branch information
SonOfLope committed Feb 12, 2024
1 parent 97fad13 commit a83dec6
Show file tree
Hide file tree
Showing 16 changed files with 594 additions and 59 deletions.
21 changes: 0 additions & 21 deletions main.tf

This file was deleted.

34 changes: 0 additions & 34 deletions providers.tf

This file was deleted.

14 changes: 14 additions & 0 deletions terraform/modules/azure-cluster-network/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
resource "azurerm_virtual_network" "vnet" {
name = var.vnet_name
address_space = var.address_space
location = var.location
resource_group_name = var.resource_group_name
tags = var.tags
}

resource "azurerm_subnet" "subnet" {
name = var.subnet_name
resource_group_name = var.resource_group_name
virtual_network_name = var.vnet_name
address_prefixes = var.subnet_address_prefixes
}
11 changes: 11 additions & 0 deletions terraform/modules/azure-cluster-network/outputs.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
output "virtual_network_name" {
value = azurerm_virtual_network.vnet.name
}

output "subnet_name" {
value = azurerm_subnet.subnet.name
}

output "resource_group_name" {
value = azurerm_virtual_network.vnet.resource_group_name
}
35 changes: 35 additions & 0 deletions terraform/modules/azure-cluster-network/variables.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
variable "resource_group_name" {
description = "Name of the resource group"
type = string
}

variable "location" {
description = "Azure location for resources"
type = string
}

variable "vnet_name" {
description = "Name of the virtual network"
type = string
}

variable "address_space" {
description = "Address space for the virtual network"
type = list(string)
}

variable "subnet_name" {
description = "Name of the subnet"
type = string
}

variable "subnet_address_prefixes" {
description = "Address prefix for the subnet"
type = list(string)
}

variable "tags" {
description = "Optional tags for the resources"
type = map(string)
default = {}
}
1 change: 1 addition & 0 deletions terraform/modules/azure-kubernetes-cluster/accounts.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
// todo.
51 changes: 51 additions & 0 deletions terraform/modules/azure-kubernetes-cluster/main.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
resource "azurerm_kubernetes_cluster" "k8s" {

name = local.prefix
resource_group_name = var.resource_group
location = var.location
dns_prefix = "${local.prefix}-dns"
kubernetes_version = var.k8s_version

linux_profile {

admin_username = var.admin_username

ssh_key {
key_data = tls_private_key.pair.public_key_openssh
}
}

default_node_pool {
name = "main"
vm_size = var.vm_size
vnet_subnet_id = local.subnet_id
enable_auto_scaling = var.auto_scaling_default_node
zones = var.zones
node_count = var.node_count
min_count = var.node_min_count
max_count = var.node_max_count
max_pods = var.max_pods


}

identity {
type = "SystemAssigned"
}

azure_rbac_enabled {
azure_rbac_enabled = var.rbac_enabled
}

network_profile {
network_plugin = "kubenet"
service_cidr = var.service_cidr
dns_service_ip = var.dns_service_ip
pod_cidr = var.pod_cidr
docker_bridge_cidr = var.docker_bridge_cidr
}

tags = var.tags

sku_tier = var.sku_tier
}
18 changes: 18 additions & 0 deletions terraform/modules/azure-kubernetes-cluster/node_pool.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
resource "azurerm_kubernetes_cluster_node_pool" "aks" {

for_each = var.additional_node_pools

kubernetes_cluster_id = azurerm_kubernetes_cluster.k8s.id
vnet_subnet_id = local.subnet_id
name = substr(each.key, 0, 12)
vm_size = each.value.vm_size
os_disk_size_gb = each.value.os_disk_size_gb
enable_auto_scaling = each.value.enable_auto_scaling
zones = each.value.zones
node_count = each.value.node_count
min_count = each.value.min_count
max_count = each.value.max_count
max_pods = each.value.max_pods
node_labels = each.value.node_labels
node_taints = each.value.taints
}
25 changes: 25 additions & 0 deletions terraform/modules/azure-kubernetes-cluster/output.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
output "cluster_name" {
description = "Cluster name to be used in the context of kubectl"
value = azurerm_kubernetes_cluster.k8s.name
}

# output "kube_config_raw" {
# description = "Client configuration file for connecting to the cluster"
# value = azurerm_kubernetes_cluster.k8s.kube_config_raw
# sensitive = true
# }

# output "kube_config_file" {
# description = "Kubeconfig file"
# value = local_file.kubeconfig_file.filename
# }

# output "config" {
# description = "Commands to configure kubectl local"
# value = <<EOF
# Run the following commands to configure kubectl local:
# $ terraform output kube_config_raw > ~/.kube/aksconfig
# $ export KUBECONFIG=~/.kube/aksconfig
# EOF

# }
24 changes: 24 additions & 0 deletions terraform/modules/azure-kubernetes-cluster/resources.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
locals {

prefix = var.prefix
sp_name = "${var.prefix}-sp"
subnet_id = data.azurerm_subnet.subnet.id
location = var.location
tags = var.tags
}

data "azurerm_subnet" "subnet" {
name = var.network_subnet
virtual_network_name = var.network_vnet
resource_group_name = var.network_resource_group
}


resource "tls_private_key" "pair" {
algorithm = "RSA"
}

resource "local_file" "kubeconfig_file" {
content = azurerm_kubernetes_cluster.k8s.kube_config_raw
filename = "${azurerm_kubernetes_cluster.k8s.name}_config"
}
11 changes: 11 additions & 0 deletions terraform/modules/azure-kubernetes-cluster/storage_account.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
resource "azurerm_storage_account" "st" {
count = var.storage_account_name != null ? 1 : 0
name = var.storage_account_name
resource_group_name = azurerm_kubernetes_cluster.k8s.node_resource_group
location = var.location
account_tier = var.storage_account_tier
account_replication_type = var.storage_account_replication_type
account_kind = var.storage_account_kind

tags = local.tags
}
Loading

0 comments on commit a83dec6

Please sign in to comment.