Deckhouse Kubernetes Platform на VMware vSphere

Подключение к master-узлу

Deckhouse завершил процесс установки кластера. Осталось выполнить некоторые настройки, для чего необходимо подключиться к master-узлу.

Подключитесь к master-узлу по SSH (IP-адрес master-узла был выведен инсталлятором по завершении установки, но вы также можете найти его используя веб-интерфейс или CLI‑утилиты облачного провайдера):

ssh ubuntu@<MASTER_IP>
ssh ubuntu@<MASTER_IP>

Проверьте работу kubectl, выведя список узлов кластера:

sudo /opt/deckhouse/bin/kubectl get nodes
sudo /opt/deckhouse/bin/kubectl get nodes

Пример вывода...

$ sudo /opt/deckhouse/bin/kubectl get nodes
NAME                                     STATUS   ROLES                  AGE   VERSION
cloud-demo-master-0                      Ready    control-plane,master   12h   v1.23.9
cloud-demo-worker-01a5df48-84549-jwxwm   Ready    worker                 12h   v1.23.9

Запуск Ingress-контроллера после завершения установки Deckhouse может занять какое-то время. Прежде чем продолжить убедитесь что Ingress-контроллер запустился:

sudo /opt/deckhouse/bin/kubectl -n d8-ingress-nginx get po
sudo /opt/deckhouse/bin/kubectl -n d8-ingress-nginx get po

Дождитесь перехода Pod’ов в статус Ready.

Пример вывода...

$ sudo /opt/deckhouse/bin/kubectl -n d8-ingress-nginx get po
NAME                                       READY   STATUS    RESTARTS   AGE
controller-nginx-r6hxc                     3/3     Running   0          16h
kruise-controller-manager-78786f57-82wph   3/3     Running   0          16h

DNS

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

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

Настройте DNS для сервисов Deckhouse одним из следующих способов:

  • Если у вас есть возможность добавить DNS-запись используя DNS-сервер:
    • Если ваш шаблон DNS-имен кластера является wildcard DNS-шаблоном (например, %s.kube.company.my), то добавьте соответствующую wildcard A-запись со значением IP-адреса master-узла.
    • Если ваш шаблон DNS-имен кластера НЕ является wildcard DNS-шаблоном (например, %s-kube.company.my), то добавьте А или CNAME-записис адресом master-узла, для следующих DNS-имен сервисов согласно шаблону DNS-имен:
      • api
      • argocd
      • 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 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 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"

Затем, на master-узле выполните следующую команду (укажите используемый шаблон DNS-имен в переменной DOMAIN_TEMPLATE):

DOMAIN_TEMPLATE='<DOMAIN_TEMPLATE>'
sudo /opt/deckhouse/bin/kubectl patch mc global --type merge -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"${DOMAIN_TEMPLATE}\"}}}}"
DOMAIN_TEMPLATE='<DOMAIN_TEMPLATE>' sudo /opt/deckhouse/bin/kubectl patch mc global --type merge -p "{\"spec\": {\"settings\":{\"modules\":{\"publicDomainTemplate\":\"${DOMAIN_TEMPLATE}\"}}}}"

Настройте удаленный доступ к кластеру

На персональном компьютере выполните следующие шаги, для того чтобы настроить подключение kubectl к кластеру:

  • Откройте веб-интерфейс сервиса Kubeconfig Generator. Для него зарезервировано имя kubeconfig, и адрес для доступа формируется согласно шаблона DNS-имен (который вы установили ранее). Например, для шаблона DNS-имен %s.1.2.3.4.sslip.io, веб-интерфейс Kubeconfig Generator будет доступен по адресу https://kubeconfig.1.2.3.4.sslip.io.
  • Авторизуйтесь под пользователем admin@deckhouse.io. Пароль пользователя, сгенерированный на предыдущем шаге, — <GENERATED_PASSWORD> (вы также можете найти его в CustomResource User в файле resource.yml).
  • Выберите вкладку с ОС персонального компьютера.
  • Последовательно скопируйте и выполните команды, приведенные на странице.
  • Проверьте корректную работу kubectl (например, выполнив команду kubectl get no).