Вопрос:
Я пытаюсь создать кластер kubernetes, пространство имен и секреты с помощью terraform. Кластер создан, но не удается создать ресурсы, основанные на кластере.
Справочная информация
Сообщение об ошибке:
Это сообщение об ошибке, выданное terraform после создания кластера kubernetes, когда необходимо создать пространство имен:
azurerm_kubernetes_cluster_node_pool.mypool: Creation complete after 6m4s [id=/subscriptions/aaabcde1-abcd-abcd-abcd-aaaaaaabdce/resourcegroups/myrg/providers/Microsoft.ContainerService/managedClusters/my-aks/agentPools/win]
Error: Post https://my-aks-abcde123.hcp.australiaeast.azmk8s.io:443/api/v1/namespaces: dial tcp: lookup my-aks-abcde123.hcp.australiaeast.azmk8s.io on 10.128.10.5:53: no such host
on mytf.tf line 114, in resource "kubernetes_namespace" "my":
114: resource "kubernetes_namespace" "my" {
Обходной путь вручную:
Я могу решить эту проблему, вручную проверив аутентификацию в кластере kubernetes через командную строку и применив невыполненные изменения terraform через другое terraform apply
:
az aks get-credentials -g myrg -n my-aks --overwrite-existing
Автоматическая попытка обхода:
Моя попытка автоматизировать этот шаг аутентификации не удалась. Я попытался с локальным exe c инициатором внутри определения кластера kubernetes, но безуспешно:
resource "azurerm_kubernetes_cluster" "myCluster" {
name = "my-aks"
location = azurerm_resource_group.rg.location
resource_group_name = azurerm_resource_group.rg.name
dns_prefix = "my-aks"
network_profile {
network_plugin = "azure"
}
default_node_pool {
name = "default"
node_count = 1
vm_size = "Standard_B2s"
}
service_principal {
client_id = azuread_service_principal.tfapp.application_id
client_secret = azuread_service_principal_password.tfapp.value
}
tags = {
Environment = "demo"
}
windows_profile {
admin_username = "myself"
admin_password = random_string.password.result
}
provisioner "local-exec" {
command="az aks get-credentials -g myrg -n my-aks --overwrite-existing"
}
}
Это пример ресурса, который не может быть создан:
resource "kubernetes_namespace" "my" {
metadata {
name = "my-namespace"
}
}
Есть ли способ полностью автоматизировать создание моих ресурсов, в том числе тех, которые основаны на кластере kubernetes, без ручной аутентификации?