Интеграция с корпоративной зоной DNS
Чтобы интегрировать кластер Managed Service for Kubernetes с приватной корпоративной зоной DNS:
- Настройте DNS-сервер.
- Укажите корпоративную зону DNS.
- Создайте под dns-utils.
- Проверьте интеграцию DNS.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Создайте ресурсы Managed Service for Kubernetes:
ВручнуюTerraform-
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes. При создании укажите группы безопасности, подготовленные ранее.
Если вы планируете работать с кластером в пределах сети Yandex Cloud, выделять кластеру публичный IP-адрес не нужно. Для подключений извне предоставьте кластеру публичный адрес.
-
Создайте группу узлов. Выделите ей публичный адрес, чтобы предоставить доступ в интернет и возможность скачивать Docker-образы и компоненты. Укажите группы безопасности, подготовленные ранее.
-
Если у вас еще нет Terraform, установите его.
-
Получите данные для аутентификации. Вы можете добавить их в переменные окружения или указать далее в файле с настройками провайдера.
-
Настройте и инициализируйте провайдер. Чтобы не создавать конфигурационный файл с настройками провайдера вручную, скачайте его
. -
Поместите конфигурационный файл в отдельную рабочую директорию и укажите значения параметров. Если данные для аутентификации не были добавлены в переменные окружения, укажите их в конфигурационном файле.
-
Скачайте в ту же рабочую директорию файл конфигурации кластера Managed Service for Kubernetes k8s-cluster.tf
. В файле описаны:-
Сеть.
-
Кластер Managed Service for Kubernetes.
-
Группа узлов Managed Service for Kubernetes.
-
Сервисный аккаунт, необходимый для создания кластера и группы узлов Managed Service for Kubernetes.
-
Группы безопасности, которые содержат необходимые правила для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
-
Укажите в файле конфигурации идентификатор каталога.
-
Проверьте корректность файлов конфигурации Terraform с помощью команды:
terraform validate
Если в файлах конфигурации есть ошибки, Terraform на них укажет.
-
Создайте необходимую инфраструктуру:
-
Выполните команду для просмотра планируемых изменений:
terraform plan
Если конфигурации ресурсов описаны верно, в терминале отобразится список изменяемых ресурсов и их параметров. Это проверочный этап: ресурсы не будут изменены.
-
Если вас устраивают планируемые изменения, внесите их:
-
Выполните команду:
terraform apply
-
Подтвердите изменение ресурсов.
-
Дождитесь завершения операции.
-
В указанном каталоге будут созданы все требуемые ресурсы. Проверить появление ресурсов и их настройки можно в консоли управления
. -
-
-
Установите kubectl
и настройте его на работу с созданным кластером.Если для кластера не предоставлен публичный адрес и
kubectl
настроен через внутренний адрес кластера, выполняйте командыkubectl
на ВМ Yandex Cloud, находящейся в одной сети с кластером.
Настройте DNS-сервер
При настройке важно, чтобы была IP-связность между узлами кластера Managed Service for Kubernetes и DNS-серверами. Сами DNS-серверы могут находиться как в Yandex Virtual Private Cloud, так и быть доступными через VPN или Yandex Cloud Interconnect. Далее рассматривается случай, когда DNS-сервер имеет адрес 10.129.0.3
, имя ns.example.com
и обслуживает зону example.com
.
Укажите корпоративную зону DNS
-
Подготовьте файл
custom-zone.yaml
со следующим содержимым:kind: ConfigMap apiVersion: v1 metadata: name: coredns-user namespace: kube-system labels: addonmanager.kubernetes.io/mode: EnsureExists data: Corefile: | # User can put their additional configurations here, for example: example.com { errors cache 30 forward . 10.129.0.3 }
-
Выполните команду:
kubectl replace -f custom-zone.yaml
Результат:
configmap/coredns-user replaced
Создайте под dns-utils
-
Создайте под:
kubectl run jessie-dnsutils \ --image=registry.k8s.io/jessie-dnsutils \ --restart=Never \ --command sleep infinity
Результат:
pod/jessie-dnsutils created
-
Просмотрите информацию о созданном поде:
kubectl describe pod jessie-dnsutils
Результат:
... Status: Running ...
Проверьте интеграцию DNS
Выполните команду nslookup
в запущенном контейнере:
kubectl exec jessie-dnsutils -- nslookup ns.example.com
Результат:
Server: 10.96.128.2
Address: 10.96.128.2#53
Name: ns.example.com
Address: 10.129.0.3
Примечание
Если корпоративная зона DNS недоступна, убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его. Правила должны разрешать доступ к ресурсам, к которым вы обращаетесь из кластера.
Удалите созданные ресурсы
Некоторые ресурсы платные. Чтобы за них не списывалась плата, удалите ресурсы, которые вы больше не будете использовать:
-
Удалите кластер Managed Service for Kubernetes:
ВручнуюTerraform-
В командной строке перейдите в директорию, в которой расположен актуальный конфигурационный файл Terraform с планом инфраструктуры.
-
Удалите ресурсы с помощью команды:
terraform destroy
Внимание
Terraform удалит все ресурсы, которые были созданы с его помощью: кластеры Managed Service for Kubernetes, сети, подсети, виртуальные машины и т. д.
-
Подтвердите удаление ресурсов.
-
-
Удалите ВМ с DNS-сервером.