freundcloud

Kubernetes provider

You will need the following environment variables to be set:

  • ARM_SUBSCRIPTION_ID
  • ARM_TENANT_ID
  • ARM_CLIENT_ID
  • ARM_CLIENT_SECRET

Ensure that KUBE_CONFIG_FILE and KUBE_CONFIG_FILES environment variables are NOT set, as they will interfere with the cluster build.

```hcl terraform { required_providers { kubernetes = { source = “hashicorp/kubernetes” version = “>= 2.0.3” } azurerm = { source = “hashicorp/azurerm” version = “2.42” } helm = { source = “hashicorp/helm” version = “>= 2.1.0” } } }

data “azurerm_kubernetes_cluster” “default” { depends_on = [module.aks-cluster] # refresh cluster state before reading name = local.cluster_name resource_group_name = local.cluster_name }

provider “kubernetes” { host = data.azurerm_kubernetes_cluster.default.kube_config.0.host client_certificate = base64decode(data.azurerm_kubernetes_cluster.default.kube_config.0.client_certificate) client_key = base64decode(data.azurerm_kubernetes_cluster.default.kube_config.0.client_key) cluster_ca_certificate = base64decode(data.azurerm_kubernetes_cluster.default.kube_config.0.cluster_ca_certificate) } ```plaintext

Deploy Nginx Controller:

```hcl

Copyright (c) HashiCorp, Inc.

SPDX-License-Identifier: MPL-2.0

terraform { required_providers { kubernetes = { source = “hashicorp/kubernetes” version = “>= 2.0.3” } helm = { source = “hashicorp/helm” version = “>= 2.1.0” } } }

resource “kubernetes_namespace” “test” { metadata { name = “test” } }

resource “kubernetes_deployment” “test” { metadata { name = “test” namespace = kubernetes_namespace.test.metadata.0.name } spec { replicas = 2 selector { match_labels = { app = “test” } } template { metadata { labels = { app = “test” } } spec { container { image = “nginx:1.19.4” name = “nginx”

      resources {
        limits = {
          memory = "512M"
          cpu    = "1"
        }
        requests = {
          memory = "256M"
          cpu    = "50m"
        }
      }
    }
  }
}   } }

resource “helm_release” “nginx_ingress” { name = “nginx-ingress-controller”

repository = “https://charts.bitnami.com/bitnami” chart = “nginx-ingress-controller”

set { name = “service.type” value = “ClusterIP” } }

resource “local_file” “kubeconfig” { content = var.kubeconfig filename = “${path.root}/kubeconfig” } ```plaintext