Terraform Azure AKS 集群不导出 kubeconfig 文件
Terraform Azure AKS Cluster not exporting kubeconfig file
我正在尝试使用 Terraform 在 Azure (AKS) 上配置一个 kubernetes 集群。配置工作得很好,但我无法将 kube_config_raw
中的 kubeconfig 导出到文件中。
下面是我的main.tf
和outputs.tf
。我抑制了 resource_group
和 user_assigned_identity
资源。
这是我用于创建配置的资源:https://learnk8s.io/terraform-aks
main.tf
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
]
}
outputs.tf
- 我在文件名中尝试了“./kubeconfig”和“kubeconfig”,但没有任何内容导出到任何地方
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。
我正在尝试使用 Terraform 在 Azure (AKS) 上配置一个 kubernetes 集群。配置工作得很好,但我无法将 kube_config_raw
中的 kubeconfig 导出到文件中。
下面是我的main.tf
和outputs.tf
。我抑制了 resource_group
和 user_assigned_identity
资源。
这是我用于创建配置的资源:https://learnk8s.io/terraform-aks
main.tf
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
]
}
outputs.tf
- 我在文件名中尝试了“./kubeconfig”和“kubeconfig”,但没有任何内容导出到任何地方
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。