代码之家  ›  专栏  ›  技术社区  ›  Srinath Ganesh

Terraform-AKS私有云|无限等待掌舵放松

  •  0
  • Srinath Ganesh  · 技术社区  · 6 年前
    • 我正在尝试用Terraform在AKS上创建一个私有云。
    • 公共线路似乎可以正常工作,我正在一步一步地投入安保工作
    • 没有日志,只是无限的等待。
    • helm_release.ingress: Still creating... [11m0s elapsed]
    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]
    }
    
    0 回复  |  直到 6 年前
        1
  •  1
  •   weichung.shaw    6 年前

    最好的调试方法是 kubectl 进入AKS集群。(AKS应该有关于如何设置的文档 .)

    然后,玩玩 kubectl get pods -A 看看有没有什么是错的。具体来说,查找不在 Running 状态。

    如果存在这样的pods,请使用 kubectl describe pod <pod_name> 或 kubectl logs -f <pod_name> ,这取决于问题是否在容器成功启动后发生。