Deckhouse Kubernetes Platform в существующем кластере

Для того чтобы получить доступ к веб-интерфейсам компонентов Deckhouse, нужно:

Шаблон DNS-имен используется для настройки Ingress-ресурсов системных приложений. Например, за интерфейсом модуля внутренней документации закреплено имя deckhouse. Тогда, для шаблона %s.kube.company.my Grafana будет доступна по адресу deckhouse.kube.company.my, и т.д.

Чтобы упростить настройку, далее будет использоваться сервис sslip.io.

Выполните следующую команду, чтобы настроить шаблон DNS-имен сервисов Deckhouse на использование sslip.io (укажите публичный IP-адрес узла, где запущен Ingress-контролллер):

BALANCER_IP=<INGRESS_CONTROLLER_IP> 
kubectl patch mc global --type merge \
  -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"%s.${BALANCER_IP}.sslip.io\"}}}}" && echo && \
echo "Domain template is '$(kubectl get mc global -o=jsonpath='{.spec.settings.modules.publicDomainTemplate}')'."
BALANCER_IP=<INGRESS_CONTROLLER_IP> kubectl patch mc global --type merge \ -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"%s.${BALANCER_IP}.sslip.io\"}}}}" && echo && \ echo "Domain template is '$(kubectl get mc global -o=jsonpath='{.spec.settings.modules.publicDomainTemplate}')'."

Команда также выведет установленный шаблон DNS-имен. Пример вывода:

moduleconfig.deckhouse.io/global patched

Domain template is '%s.1.2.3.4.sslip.io'.

Перегенерация сертификатов после изменения шаблона DNS-имен может занять до 5 минут.

Другие варианты настройки...

Вместо сервиса sslip.io вы можете использовать другие варианты настройки.

  • Если у вас есть возможность добавить DNS-запись используя DNS-сервер:
    • Если ваш шаблон DNS-имен кластера является wildcard DNS-шаблоном (например, %s.kube.company.my), то добавьте соответствующую wildcard A-запись со значением IP-адреса балансировщика.
    • Если ваш шаблон DNS-имен кластера НЕ является wildcard DNS-шаблоном (например, %s-kube.company.my), то добавьте А или CNAME-записис адресом балансировщика, для следующих DNS-имен сервисов согласно шаблону DNS-имен:
      • api
      • argocd
      • cdi-uploadproxy
      • dashboard
      • documentation
      • dex
      • grafana
      • hubble
      • istio
      • istio-api-proxy
      • kubeconfig
      • openvpn-admin
      • prometheus
      • status
      • upmeter
  • Если вы не имеете под управлением DNS-сервер, то на компьютере, с которого необходим доступ к сервисам Deckhouse, добавьте статические записи в файл /etc/hosts (%SystemRoot%\system32\drivers\etc\hosts для Windows).

    Для добавления записей в файл /etc/hosts на на Linux-компьютере с которого необходим доступ к сервисам Deckhouse (далее — ПК), выполните следующие шаги:

    • Укажите используемый шаблон DNS-имен в переменной DOMAIN_TEMPLATE (например, %s.kube.company.my):

      DOMAIN_TEMPLATE='<DOMAIN_TEMPLATE>'
      
      DOMAIN_TEMPLATE='<DOMAIN_TEMPLATE>'

    • Укажите IP-адрес балансировщика в переменной BALANCER_IP:

      BALANCER_IP='<BALANCER_IP>'
      
      BALANCER_IP='<BALANCER_IP>'

    • Добавьте записи в файл /etc/hosts:

      for i in api argocd cdi-uploadproxy dashboard documentation dex grafana hubble istio istio-api-proxy kubeconfig openvpn-admin prometheus status upmeter; do echo "${BALANCER_IP}  ${DOMAIN_TEMPLATE} "| sed "s/%s/$i/"; done  | sudo bash -c "cat >>/etc/hosts"
      
      for i in api argocd cdi-uploadproxy dashboard documentation dex grafana hubble istio istio-api-proxy kubeconfig openvpn-admin prometheus status upmeter; do echo "${BALANCER_IP} ${DOMAIN_TEMPLATE} "| sed "s/%s/$i/"; done | sudo bash -c "cat >>/etc/hosts"

Затем, выполните следующую команду, чтобы изменить шаблон DNS-имен в параметрах Deckhouse:

kubectl patch mc global --type merge -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"${DOMAIN_TEMPLATE}\"}}}}"
kubectl patch mc global --type merge -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"${DOMAIN_TEMPLATE}\"}}}}"