Azure AKS Terraform Module

The aks/azure Terraform module provides a way to install and configure:

Requirements

Name Version

>= 0.13

~> 2.0

~> 2.62

~> 2.0

~> 2.0

~> 2.0

~> 3.0

tls

~> 3.0

Providers

Name Version

~> 2.0

~> 2.62

~> 3.0

Modules

Name Source Version

Azure/aks/azurerm

4.13.0

Inputs

Name Description Type Default Required

A list of Object IDs of Azure Active Directory Groups which should have Admin Role on the Cluster.

list(string)

[]

no

The number of Agents that should exist in the Agent Pool. Please set agents_count null while enable_auto_scaling is true to avoid possible agents_count changes.

number

2

no

A map of Kubernetes labels which should be applied to nodes in the Default Node Pool. Changing this forces a new resource to be created.

map(string)

{}

no

(Optional) The maximum number of pods that can run on each agent. Changing this forces a new resource to be created.

number

null

no

The default Azure AKS agentpool (nodepool) name.

string

"nodepool"

no

The default virtual machine size for the Kubernetes agents

string

"Standard_D4s_v3"

no

Map of argoCD apps to node selector

map(map(string))

{}

no

App of apps values overrides.

string

""

no

ArgoCD Server Secert Key to avoid regenerate token on redeploy.

string

null

no

Azure User Assigned Identities to create

list(object({
    namespace = string
    name      = string
  }))

[]

no

The base domain used for Ingresses.

string

n/a

yes

The name of the Kubernetes cluster to create.

string

n/a

yes

Extra AppProjects objects to deploy.

any

[]

no

Extra ApplicationSets objects to deploy.

any

[]

no

Extra Applications objects to deploy.

any

[]

no

The admin password for Grafana.

string

null

no

Specify which Kubernetes release to use.

string

"1.21.9"

no

Enable network policy for the azure CNI

string

null

no

Map of node pools

map(any)

{}

no

OIDC configuration for core applications.

object({
    issuer_url              = string
    oauth_url               = string
    token_url               = string
    api_url                 = string
    client_id               = string
    client_secret           = string
    oauth2_proxy_extra_args = list(string)
  })

null

no

Disk size of nodes in GBs.

number

128

no

n/a

object({
    prometheus_oauth2_proxy_extra_args = list(string)
    prometheus_oauth2_proxy_image      = string
    prometheus_oauth2_proxy_extra_volume_mounts = list(object({
      name       = string
      mount_path = string
    }))
  })
{
  "prometheus_oauth2_proxy_extra_args": [],
  "prometheus_oauth2_proxy_extra_volume_mounts": [],
  "prometheus_oauth2_proxy_image": "quay.io/oauth2-proxy/oauth2-proxy:v7.1.3"
}

no

A custom ssh key to control access to the AKS cluster

string

""

no

The source repo URL of ArgoCD’s app of apps.

string

"https://github.com/camptocamp/devops-stack.git"

no

A list of repositories to add to ArgoCD.

map(map(string))

{}

no

The Resource Group where the Managed Kubernetes Cluster should exist.

string

n/a

yes

The SKU Tier that should be used for this Kubernetes Cluster. Possible values are Free and Paid

string

"Free"

no

Storage account replication type for storing loki logs

string

"GRS"

no

Storage account tier used for storing loki logs

string

"Standard"

no

The source target revision of ArgoCD’s app of apps.

string

"v0.56.0"

no

The ID of a Subnet where the Kubernetes Node Pool should exist. Changing this forces a new resource to be created.

string

n/a

yes

Allow to disable wait for app of apps

bool

true

no

Outputs

Name Description

App of Apps values

The token to set in ARGOCD_AUTH_TOKEN environment variable.

The URL of the ArgoCD server.

The ArgoCD admin password.

Azure User Assigned Identities created

n/a

n/a

The admin password for Grafana.

n/a

The content of the KUBECONFIG file.

n/a

n/a

n/a

n/a

n/a

n/a