В моих файлах конфигурации terraform я создаю кластер Kubernetes на GKE и при создании настраиваю поставщика Kubernetes для доступа к указанному кластеру и выполнения различных действий, таких как настройка пространств имен.
Проблема в том, что некоторые новые пространства имен были созданы в кластере без терраформирования, и теперь мои попытки импортировать эти пространства имен в мое состояние кажутся неудачными из-за невозможности подключиться к кластеру, что, как я считаю, связано со следующим (взято из официальной документации Terraform команды импорта):
Единственное ограничение, которое Terraform имеет при чтении файлов конфигурации, состоит в том, что конфигурации поставщика импорта не должны зависеть от неизменяемых входных данных. Например, конфигурация поставщика не может зависеть от источника данных.
Команда, которую я использовал для импорта пространств имен, довольно проста:
terraform import kubernetes_namespace.my_new_namespace my_new_namespace
Я также пробовал использовать -provdier=""
и -config=""
, но безуспешно.
Конфигурация моего поставщика Kubernetes такова:
provider "kubernetes" {
version = "~> 1.8"
host = module.gke.endpoint
token = data.google_client_config.current.access_token
cluster_ca_certificate = base64decode(module.gke.cluster_ca_certificate)
}
Вот пример ресурса пространства имен, который я пытаюсь импортировать:
resource "kubernetes_namespace" "my_new_namespace" {
metadata {
name = "my_new_namespace"
}
}
Команда импорта приводит к следующему:
Ошибка: получите http://localhost/api/v1/namespaces/my_new_namespace: наберите tcp [: : 1]: 80: connect: в соединении отказано
Очевидно, что он обречен на неудачу, поскольку пытается достичь localhost
вместо фактического IP-адреса кластера и его конфигураций.
Есть ли обходной путь для этого варианта использования?
Заранее спасибо.
gcloud container clusters get-credentials
для генерации локального kubeconfig, я считаю, что командаterraform import
будет использовать ваш локальный kubeconfig / context, я предполагаю, чтоmodule.gke.endpoint
не возвращается сlocalhost
, поэтому он получает его откуда-то ... - person Jai Govindani   schedule 14.07.2021