Разрешить пользовательские DNS в кластере Kubernetes (AKS)

В настоящее время у нас есть модули в кластере кубернетов (AKS), которым необходимо разрешить два разных домена.

Первый домен является доменом кластера default.svc.cluster.local, а второй - mydns.local.

как этого добиться?


person Lycrosa    schedule 10.04.2019    source источник


Ответы (3)


Я сам нашел решение.

Есть два способа добиться желаемого разрешения имен:

  1. Если ваш кластер AKS находится в виртуальной сети Azure, вы можете настроить параметры DNS в виртуальной сети на настраиваемый DNS-сервер, который может разрешить ваш личный домен. Если в ваших модулях не указаны параметры DNS, разрешение будет работать следующим образом:

Сначала модули пытаются разрешить DNS-запрос в CoreDNS, если они не могут, тогда они берут настройки DNS хоста и запрашивают DNS-сервер, настроенный на хосте. Поскольку в лазурном режиме настройки DNS виртуальной сети применяются к виртуальным машинам, он запрашивает правильный DNS-сервер.

  1. Измените настройки coreDNS в вашем кластере AKS с помощью следующего json:

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom
      namespace: kube-system
    data:
      yourdns.server: |
        yourdns.com:53 {
          errors
          cache 1
          proxy . 10.1.0.40
        }
    

Важно знать, что в AKS вы не можете перезаписать coredns ConfigMap. Мастер Kubernetes всегда будет сбрасывать его по умолчанию через пару секунд. Если вы хотите отредактировать ConfigMap в AKS, вы должны назвать конфигурационную карту «coredns-custom».

yourdns.server на самом деле не сервер. Это domain.server. IP-адрес DNS-сервера находится за настройкой прокси.

person Lycrosa    schedule 12.04.2019

Я думаю, вы можете использовать входной и входной контроллер для управления доменом и путем. С помощью входящего трафика вы можете управлять несколькими доменами и подключать службу к определенному домену.

https://kubernetes.github.io/ingress-nginx/

Вот также руководство по настройке входа из цифрового океана, вы можете следовать ему:

https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nginx-ingress-with-cert-manager-on-digitalocean-kubernetes

person Harsh Manvar    schedule 10.04.2019
comment
Эй, наверное, я недостаточно ясно изложил свой пост. Персональный домен (mydns.local) содержит службы, не входящие в кластер кубернетов. Таким образом, кластеру необходимо разрешить свои внутренние адреса через домен default.svc.cluster.local и адреса в подключенной сети через домен mydns.local. - person Lycrosa; 10.04.2019
comment
У вас есть domainNameServer для вашего личного домена (mydns.local) - person Dinesh Balasubramanian; 10.04.2019

Ваш второй пункт: «2. Измените настройки coreDNS в вашем кластере AKS с помощью следующего json:»

Обратите внимание, что плагин "forward" должен использоваться вместо "proxy", как указано здесь:

https://github.com/Azure/AKS/issues/1304

person Mordecai    schedule 05.05.2020