Terraform Azure AKS 集群不导出 kubeconfig 文件

Terraform Azure AKS Cluster not exporting kubeconfig file

我正在尝试使用 Terraform 在 Azure (AKS) 上配置一个 kubernetes 集群。配置工作得很好,但我无法将 kube_config_raw 中的 kubeconfig 导出到文件中。

下面是我的main.tfoutputs.tf。我抑制了 resource_groupuser_assigned_identity 资源。

这是我用于创建配置的资源:https://learnk8s.io/terraform-aks

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = ">=2.79.1"
    }
  }
}

provider "azurerm" {
  features {}
  subscription_id = "..."
}

resource "azurerm_kubernetes_cluster" "aks" {
  name                = "myCluster"
  location            = azurerm_resource_group.rg.location
  resource_group_name = azurerm_resource_group.rg.name
  dns_prefix          = "my-cluster-dns"

  default_node_pool {
    name            = "agentpool"
    node_count      = 1
    os_disk_size_gb = 64
    vm_size         = "Standard_B2ms"
  }

  identity {
    type                      = "UserAssigned"
    user_assigned_identity_id = azurerm_user_assigned_identity.user_assigned_identity.id
  }

  depends_on = [
    azurerm_user_assigned_identity.user_assigned_identity
  ]
}
resource "local_file" "kubeconfig" {
  depends_on   = [azurerm_kubernetes_cluster.aks]
  filename     = "./kubeconfig"
  content      = azurerm_kubernetes_cluster.aks.kube_config_raw
}

奖励:是否可以直接导出到现有的~/.kube/config文件?就像 az aks get-credentials 命令一样?

outputs.tf - I've tried "./kubeconfig" and "kubeconfig" in the filename but nothing gets exported anywhere

我测试了您拥有的相同代码 terraform-apply ,它将本地文件保存到执行应用的位置。

例如:

如果我 运行 来自 C:\Users\user\terraform\aksconfig>main.tf 文件存在,那么 kubeconfig 文件将保存在同一路径中。

输出:


Bonus: is it possible to export it directly to the existing ~/.kube/config file? Like the az aks get-credentials command does?

az aks get-credentials --resource-group myresourcegroup --name myCluster存放配置文件的路径:

将脚本保存在与 az 命令相同的路径中的代码:

resource "local_file" "kubeconfig" {
  depends_on   = [azurerm_kubernetes_cluster.aks]
  filename     = "C:/Users/user/.kube/config" this is where the config file gets stored
  content      = azurerm_kubernetes_cluster.aks.kube_config_raw
}

输出:

/.kube/config

中存在配置文件

新建文件覆盖现有文件:

注意: 在此处使用 local_file 块将完全覆盖文件,而不会将上下文附加到前一个文件。如果您正在寻找像 az 命令那样将内容合并到单个文件中,那么它不可能来自 terraform。