Установка ExternalDNS c плагином для Yandex Cloud DNS
ExternalDNS
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте сервисный аккаунт, необходимый для работы c Cloud DNS.
-
Назначьте ему роль
dns.editor
. -
Создайте авторизованный ключ для сервисного аккаунта в формате JSON и сохраните его в файл
key.json
:yc iam key create \ --service-account-name <имя_сервисного_аккаунта> \ --format json \ --output key.json
-
Убедитесь, что группы безопасности для кластера Managed Service for Kubernetes и его групп узлов настроены корректно. Если отсутствует какое-либо из правил — добавьте его.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
Установка с помощью Yandex Cloud Marketplace
- Перейдите на страницу каталога
и выберите сервис Managed Service for Kubernetes. - Нажмите на имя нужного кластера Managed Service for Kubernetes и выберите вкладку
Marketplace. - В разделе Доступные для установки приложения выберите ExternalDNS c плагином для Yandex Cloud DNS и нажмите кнопку Перейти к установке.
- Задайте настройки приложения:
- Пространство имен — выберите пространство имен для ExternalDNS или создайте новое.
- Название приложения — укажите название приложения.
- Ключ сервисной учетной записи — вставьте содержимое файла
key.json
или создайте новый авторизованный ключ для сервисного аккаунта. Сервисный аккаунт должен иметь рольdns.editor
. - ID каталога — укажите каталог, в котором находится зона Cloud DNS.
- Нажмите кнопку Установить.
- Дождитесь перехода приложения в статус
Deployed
.
Установка с помощью Helm-чарта
-
Установите менеджер пакетов Helm
версии не ниже 3.8.0. -
Установите kubectl
и настройте его на работу с созданным кластером. -
Для установки Helm-чарта
с ExternalDNS выполните команду:helm pull oci://cr.yandex/yc-marketplace/yandex-cloud/externaldns/chart/externaldns \ --version 0.5.1-a \ --untar && \ helm install \ --namespace <пространство_имен> \ --create-namespace \ --set config.folder_id=<идентификатор_каталога_с_DNS-зоной> \ --set-file config.auth.json=<путь_к_файлу_с_авторизованным_ключом_сервисного_аккаунта> \ externaldns ./externaldns/
Примечание
Если вы используете версию Helm ниже 3.8.0, добавьте в начало команды строку
export HELM_EXPERIMENTAL_OCI=1 && \
, чтобы включить поддержку Open Container Initiative (OCI) в клиенте Helm.
Особенности работы
Чтобы автоматически создавать DNS-записи с помощью приложения ExternalDNS c плагином для Yandex Cloud DNS:
-
С Ingress-контроллерами
не нужны дополнительные настройки. -
Для сервисов типа LoadBalancer
необходимо использовать аннотацию"external-dns.alpha.kubernetes.io/hostname=<ваш_домен>"
.Чтобы установить значение TTL для DNS-записи, используйте аннотацию
"external-dns.alpha.kubernetes.io/ttl=<значение_TTL_в_секундах>"
.
Примеры использования
- Настройка логирования для L7-балансировщика Yandex Application Load Balancer с помощью Ingress-контроллера.
- Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием.