【问题标题】:Terraform - AKS Private Cloud | Infinite wait on helm relaseTerraform - AKS 私有云 |无限等待 helm release
【发布时间】:2020-06-13 16:27:55
【问题描述】:
  • 我正在尝试使用 Terraform 在 AKS 上创建私有云。
  • 公共路线似乎运行良好,我正在逐步安装安全设备
  • 在放入 Networks azurerm_virtual_network、azurerm_subnet 后,它似乎可以处理我的 Helm 部署
  • 没有日志,只是无限等待。
  • helm_release.ingress: Still creating... [11m0s elapsed](这是一个简单的 NGINX 入口控制器)
resource "azurerm_virtual_network" "foo_network" {
  name                = "${var.prefix}-network"
  location            = azurerm_resource_group.foo_group.location
  resource_group_name = azurerm_resource_group.foo_group.name
  address_space       = ["10.1.0.0/16"]
}

resource "azurerm_subnet" "internal" {
  name                 = "internal"
  virtual_network_name = azurerm_virtual_network.foo_network.name
  resource_group_name  = azurerm_resource_group.foo_group.name
  address_prefixes     = ["10.1.0.0/22"]
}

关于我应该如何调试的任何要点?缺少日志让人难以理解。


完整的脚本

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "foo" {
  name     = "${var.prefix}-k8s-resources"
  location = var.location
}

resource "azurerm_kubernetes_cluster" "foo" {
  name                = "${var.prefix}-k8s"
  location            = azurerm_resource_group.foo.location
  resource_group_name = azurerm_resource_group.foo.name
  dns_prefix          = "${var.prefix}-k8s"

  default_node_pool {
    name           = "system"
    node_count     = 1
    vm_size        = "Standard_D4s_v3"
  }

  identity {
    type = "SystemAssigned"
  }

  addon_profile {
    aci_connector_linux {
      enabled = false
    }

    azure_policy {
      enabled = false
    }

    http_application_routing {
      enabled = false
    }

    kube_dashboard {
      enabled = true
    }

    oms_agent {
      enabled = false
    }
  }
}

provider "kubernetes" {
  version = "~> 1.11.3"

    load_config_file       = false
    host                   = azurerm_kubernetes_cluster.foo.kube_config.0.host
    username               = azurerm_kubernetes_cluster.foo.kube_config.0.username
    password               = azurerm_kubernetes_cluster.foo.kube_config.0.password
    cluster_ca_certificate = base64decode(azurerm_kubernetes_cluster.foo.kube_config.0.cluster_ca_certificate)
}

provider "helm" {
  # Use provider with Helm 3.x support
  version = "~> 1.2.2"
}

resource "null_resource" "configure_kubectl" {
  provisioner "local-exec" {
    command = "az aks get-credentials --resource-group ${azurerm_resource_group.foo.name} --name ${azurerm_kubernetes_cluster.foo.name} --overwrite-existing"

    environment = {
      KUBECONFIG = ""
    }
  }
  depends_on = [azurerm_kubernetes_cluster.foo]
}

resource "helm_release" "ingress" {
  name       = "ingress-foo"
  repository = "https://kubernetes.github.io/ingress-nginx"
  chart      = "ingress-nginx"
  timeout    = 3000
  depends_on = [null_resource.configure_kubectl]
}

【问题讨论】:

  • 你在哪里运行你的 terraform 脚本?
  • 你能分享你完整的精简版 terraform 脚本吗?设置网络时,您似乎正在切断对 API 服务器的访问。因此您的 Helm 提供者失去了访问权限
  • 好的,我将编辑以分享完整的 sn-p。我从 AKS 默认终端(云外壳)运行
  • 看来我参考的脚本已经完成了。得到了更完整的参考。
  • @SrinathGanesh 为什么在这种情况下使用空资源?

标签: terraform azure-aks


【解决方案1】:

调试此问题的最佳方法是能够kubectl 进入 AKS 群集。 (AKS 应该有关于如何设置 kubectl 的文档。)

然后,与kubectl get pods -A 一起玩,看看是否有任何错误提示。具体来说,查找不处于 Running 状态的 nginx-ingress pod。

如果有这样的 pod,请使用 kubectl describe pod <pod_name>kubectl logs -f <pod_name> 进一步调试,具体取决于容器成功启动后是否出现问题。

【讨论】:

  • 看来我参考的脚本已经完成了。得到了更完整的参考。
猜你喜欢
  • 2019-07-21
  • 2019-11-22
  • 2021-08-28
  • 1970-01-01
  • 2021-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
相关资源
最近更新 更多