Kubernetes провайдер
Тема дорожной карты · Terraform
Провайдер Kubernetes — это официальный плагин от HashiCorp для Terraform, который позволяет управлять ресурсами Kubernetes, такими как Deployment, Service, ConfigMap, Namespace и Ingress, используя язык конфигурации HashiCorp (HCL) вместо сырого YAML. Этот провайдер значительно упрощает управление Kubernetes-кластерами и позволяет интегрировать их в общий процесс управления инфраструктурой с использованием IaC (Infrastructure as Code).
Провайдер Kubernetes объявляется в файле конфигурации Terraform через required_providers с указанием source = "hashicorp/kubernetes". Для подключения к кластеру Kubernetes используется файл kubeconfig, который содержит информацию о подключении к кластеру. Этот файл может быть либо локально доступен, либо указан через переменные окружения. В случае использования внутрикластерного сервисного аккаунта, провайдер автоматически находит и использует его для подключения к кластеру.
Запуск команды terraform init загружает и настраивает провайдер Kubernetes, а команда terraform plan позволяет увидеть, какие ресурсы Kubernetes будут созданы или изменены перед тем, как terraform apply согласует состояние кластера. Это обеспечивает командам возможность управления Kubernetes-ресурсами с тем же уровнем контроля и повторяемости, что и для инфраструктурных ресурсов AWS, Azure или GCP.
Провайдер Kubernetes часто комбинируется с провайдером helm для управления Helm chart-релизами наряду с сырыми Kubernetes-ресурсами в единой конфигурации Terraform. Такой подход позволяет командам эффективно управлять как структурами Kubernetes, так и Helm-чартами в рамках одного IaC-процесса.
Как это работает
Kubernetes провайдер — это плагин, транслирующий конфигурации HCL в соответствующие API-вызовы к таргету (AWS, Yandex Cloud, GitHub, Cloudflare, DNS-провайдеры, k8s, Helm). У каждого провайдера есть свои типы ресурсов и data-источников, которые могут быть объявлены и использованы в конфигурации Terraform. Провайдеры пинятся в required_providers, скачиваются terraform init в директорию .terraform/providers/. Несколько провайдеров могут сосуществовать в одном проекте; алиасы (provider "aws" { alias = "us" }) позволяют конфигурировать несколько экземпляров одного провайдера для работы в разных регионах или аккаунтах.
Когда применять
Всегда используйте официальный провайдер вашей платформы (Yandex Cloud, AWS, Cloudflare). Для разработки и тестирования — Yandex Cloud + selectel-провайдеры. Микс провайдеров в одном конфиге — когда приложение распределено через облака. Алиасы — для multi-region/multi-account. Избегайте community-провайдеров для критичного state без предварительного чтения исходников — баги провайдера могут повредить state.
Типичные ошибки
Ловушки Kubernetes провайдер: расхождение версий провайдера между членами команды (lockfile не закоммичен); provider "aws" {} без явного region → деплой не туда; авторизация провайдера через статичные ключи в *.tf (коммит, leak, сожаление — используйте env vars или assumed roles); слишком много провайдеров в одном root-модуле (init минутами).