Terraform module for deploying a Domino on AKS
module "aks_cluster" {
source = "github.com/dominodatalab/terraform-azure-aks"
cluster = "cluster-name"
}
For new projects, the following needs to be done only once for the workspace.
az login
terraform init
terraform workspace new [cluster-name]
Run the Terraform deployment
export TF_VAR_service_principal_name=<service-principal-appid>
export TF_VAR_service_principal_secret=<service-principal-password>
terraform apply -auto-approve
Access AKS cluster
az aks get-credentials --resource-group [cluster-name] --name [cluster-name]
- No access to Azure backend store In this case you would need to override the backend configuration. This can be done via the command line:
terraform init -backend-config="storage_account_name=<YourAzureStorageAccountName>" -backend-config="container_name=tfstate" -backend-config="access_key=<YourStorageAccountAccessKey>" -backend-config="key=codelab.microsoft.tfstate"
Please submit any feature enhancements, bug fixes, or ideas via pull requests or issues.
Name | Version |
---|---|
terraform | >= 1.3.0 |
azurerm | ~> 3.45 |
random | ~> 3.1 |
Name | Version |
---|---|
azurerm | ~> 3.45 |
random | ~> 3.1 |
Name | Source | Version |
---|---|---|
domino_acr_ep | ./modules/private_endpoint | n/a |
domino_blob_ep | ./modules/private_endpoint | n/a |
domino_shared_ep | ./modules/private_endpoint | n/a |
Name | Description | Type | Default | Required |
---|---|---|---|---|
additional_node_pools | additional node pools | map(object({ |
{} |
no |
aks_subnet_name | Subnet name for ACR/AKS, required when either private_acr_enabled or private_cluster_enabled is set to true. | string |
null |
no |
aks_vnet_name | VNet name for ACR/AKS, required when either private_acr_enabled or private_cluster_enabled is set to true. | string |
null |
no |
aks_vnet_rg_name | VNet Resource Groupe name for ACR/AKS, required when either private_acr_enabled or private_cluster_enabled is set to true. | string |
null |
no |
api_server_authorized_ip_ranges | The IP ranges to whitelist for incoming traffic to the masters | list(string) |
null |
no |
cluster_sku_tier | The Domino cluster SKU (defaults to Free) | string |
null |
no |
cni_overlay_enabled | Flag to determine whether to use overlay network settings | bool |
false |
no |
containers | storage containers to create | map(object({ |
{ |
no |
deploy_id | Domino Deployment ID. | string |
n/a | yes |
dns_service_ip | IP address assigned to the Kubernetes DNS service, used when CNI Overlay is enabled | string |
"100.97.0.10" |
no |
kubeconfig_output_path | kubeconfig path | string |
n/a | yes |
kubernetes_nat_gateway | Managed NAT Gateway configuration | object({ |
null |
no |
kubernetes_version | Optional Kubernetes version to provision. Allows partial input (e.g. 1.18) which is then chosen from azurerm_kubernetes_service_versions. | string |
null |
no |
log_analytics_workspace_sku | log analytics sku | string |
"PerGB2018" |
no |
namespaces | Namespace that are used for generating the service account bindings | object({ platform = string, compute = string }) |
n/a | yes |
node_pools | default node pools | object({ |
{ |
no |
pod_cidr | CIDR block for Kubernetes pods, used when CNI Overlay is enabled | string |
"192.168.0.0/16" |
no |
private_acr_enabled | Flag to determine whether to deploy a private ACR | bool |
false |
no |
private_cluster_enabled | Flag to determine whether to deploy a private AKS | bool |
false |
no |
private_cluster_public_fqdn_enabled | Flag to determine whether to use a public FQDN when deploying a private AKS cluster | bool |
null |
no |
registry_tier | registry tier | string |
"Standard" |
no |
resource_group | Name or id of optional pre-existing resource group to install AKS in | string |
n/a | yes |
service_cidr | CIDR block for Kubernetes services, used when CNI Overlay is enabled | string |
"100.97.0.0/16" |
no |
storage_account_replication_type | storage replication | string |
"LRS" |
no |
storage_account_tier | storage account tier | string |
"Standard" |
no |
tags | Tags to apply to resources | map(string) |
{} |
no |
Name | Description |
---|---|
aks_identity | AKS managed identity |
blob_dns_zone_name | blob dns zone name |
containers | storage details |
domino_acr | Azure Container Registry details |
oidc_issuer_url | OIDC issuer url |
private_cluster_enabled | Flag to determine if AKS is private or public |
shared_storage_account | shared storage account |
storage_account | storage account |
workload_identities | service identities |