Добавление статических DNS-записей
Компонент Node Hosts Injector позволяет автоматизировать управление статическими DNS-записями на узлах кластера Managed Kubernetes. После установки компонента на каждом узле кластера запускается контроллер DaemonSet, который переносит DNS-записи из ресурса ConfigMap в файл /etc/hosts и поддерживает файл в актуальном состоянии. При удалении компонента добавленные им DNS-записи удаляются автоматически.
Чтобы установить и начать использовать компонент Node Hosts Injector:
- Подготовьте окружение для работы с кластером Managed Kubernetes.
Перед началом работы
Заголовок раздела «Перед началом работы»Создайте сервисный аккаунт с именем
sa-mk8sи рольюregistry.puller.Для сервисного аккаунта
sa-mk8sсоздайте API-ключ и сохраните его.Создайте кластер Managed Kubernetes с публичным эндпоинтом и группу узлов для него. При создании группы используйте сервисный аккаунт
sa-mk8s.Создайте NAT-шлюз для подсети, в которой развернут кластер Managed Kubernetes.
Для прохождения руководства вам понадобится устройство, поддерживающее работу с командной строкой. Используйте личный компьютер или создайте промежуточную ВМ в той же сети, где расположен кластер Managed Kubernetes.
1. Подготовьте окружение
Заголовок раздела «1. Подготовьте окружение»Подключитесь к терминалу на вашем компьютере или к промежуточной ВМ.
Установите и настройте утилиту MWS CLI:
Аутентифицируйтесь в Artifact Registry:
bash helm registry login -u apikey -p <API-ключ> registry.mwsapis.ruУстановите утилиту командной строки
kubectl.
2. Создайте файл конфигурации
Заголовок раздела «2. Создайте файл конфигурации»Создайте файл конфигурации values.yaml, в котором указываются DNS-записи и задаются параметры работы контроллера DaemonSet:
cat <<EOF > values.yamlimage: repository: registry.mwsapis.ru/mws-mk8s-images/customer/node-hosts-injector tag: "1.0.0" pullPolicy: IfNotPresent
imagePullSecrets: []
hostsEntries: - ip: 10.0.0.10 hostnames: api.internal.example.com - ip: 10.0.0.11 hostnames: db.internal.example.com - ip: 10.0.0.12 hostnames: cache.internal.example.com - ip: 10.0.0.13 hostnames: mq.internal.example.com
pollInterval: 30
tolerateControlPlane: true
tolerations: []
nodeSelector: {}
affinity: {}
resources: requests: cpu: 10m memory: 16Mi limits: cpu: 20m memory: 32Mi
updateStrategy: type: RollingUpdate rollingUpdate: maxUnavailable: "25%"
terminationGracePeriodSeconds: 15
podLabels: {}podAnnotations: {}EOFЗдесь:
hostsEntries— список DNS-записей, который будет сохранен в ресурсеConfigMap.pollInterval— частота (в секундах), с которой DaemonSet будет проверять наличие изменений в ресурсеConfigMap.tolerateControlPlane— параметр, который разрешает (true) или запрещает (false) запускать контроллер DaemonSet на управляющих узлах.
Подробнее конфигурация DaemonSet описана в официальной документации.
Файл values.yaml будет использоваться при установке компонента Node Hosts Injector.
3. Установите Node Hosts Injector
Заголовок раздела «3. Установите Node Hosts Injector»Установите компонент:
bash helm install hosts-injector oci://registry.mwsapis.ru/mws-mk8s-images/customer/charts/hosts-injector --version 0.1.0 -f values.yamlОжидаемый результат:
bash ...NAME: hosts-injectorLAST DEPLOYED: Tue Jun 23 12:25:04 2026NAMESPACE: defaultSTATUS: deployedREVISION: 1TEST SUITE: None...Убедитесь, что поды компонента запущены (
Running) на нужных узлах:bash kubectl get pods -l app.kubernetes.io/name=hosts-injector -o wideОжидаемый результат:
bash NAME READY STATUS RESTARTS AGE IP NODEhosts-injector-pxfcg 1/1 Running 0 8m37s <IP-адрес узла> <имя узла>
4. Проверьте результат
Заголовок раздела «4. Проверьте результат»Проверьте содержимое файла /etc/hosts на одном из узлов:
kubectl debug node/<имя узла> \--profile=general \-it \--image=busybox \-- cat /host/etc/hostsВ выводе должны быть перечислены DNS-записи, которые вы указали в hostsEntries файла values.yaml:
# BEGIN CUSTOM-HOSTS-INJECTOR# Managed by DaemonSet custom-hosts-injector# Source: ConfigMap custom-hosts-entries# Updated: 2026-06-23T01:25:10Z10.0.0.10 api.internal.example.com10.0.0.11 db.internal.example.com10.0.0.12 cache.internal.example.com10.0.0.13 mq.internal.example.com# END CUSTOM-HOSTS-INJECTORУдалите платные ресурсы
Заголовок раздела «Удалите платные ресурсы»Ресурсы, созданные в руководстве, тарифицируются. Если вы больше не планируете использовать их:
- Удалите промежуточную ВМ, если вы ее создавали.