Deckhouse Virtualization Platform на bare metal

Убедитесь, что под Kruise controller manager запустился и находится в статусе Running. Выполните на master-узле следующую команду:

1sudo -i d8 k -n d8-ingress-nginx get po -l app=kruise

Настройте Ingress-контроллер и DNS.

  1. Установка Ingress-контроллера

    1sudo -i d8 k apply -f - <<EOF
    2# Параметры контроллера NGINX Ingress.
    3# https://deckhouse.ru/products/virtualization-platform/reference/cr/ingressnginxcontroller.html
    4apiVersion: deckhouse.io/v1
    5kind: IngressNginxController
    6metadata:
    7  name: nginx
    8spec:
    9  ingressClass: nginx
    10  # Способ поступления трафика из внешнего мира.
    11  inlet: HostPort
    12  hostPort:
    13    httpPort: 80
    14    httpsPort: 443
    15  # Описывает, на каких узлах будет находиться Ingress-контроллер.
    16  # Возможно, захотите изменить.
    17  nodeSelector:
    18    node-role.kubernetes.io/control-plane: ""
    19  tolerations:
    20  - effect: NoSchedule
    21    key: node-role.kubernetes.io/control-plane
    22    operator: Exists
    23EOF
    

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

    1sudo -i d8 k -n d8-ingress-nginx get po -l app=controller
    

    Дождитесь перехода подов Ingress-контроллера в статус Running.

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

    1$ sudo -i d8 k -n d8-ingress-nginx get po -l app=controller
    2NAME                                       READY   STATUS    RESTARTS   AGE
    3controller-nginx-r6hxc                     3/3     Running   0          5m
    
  2. Создание DNS-записи, для доступа в веб-интерфейсы кластера:
    • Выясните публичный IP-адрес узла, на котором работает Ingress-контроллер.
    • Если у вас есть возможность добавить DNS-запись используя DNS-сервер:
      • Если ваш шаблон DNS-имен кластера является wildcard DNS-шаблоном (например, %s.kube.my), то добавьте соответствующую wildcard A-запись со значением публичного IP-адреса, который вы получили выше.
      • Если ваш шаблон DNS-имен кластера НЕ является wildcard DNS-шаблоном (например, %s-kube.company.my), то добавьте А или CNAME-записи со значением публичного IP-адреса, который вы получили выше, для следующих DNS-имен сервисов Deckhouse в вашем кластере:
        1api.example.com
        2argocd.example.com
        3dashboard.example.com
        4documentation.example.com
        5dex.example.com
        6grafana.example.com
        7hubble.example.com
        8istio.example.com
        9istio-api-proxy.example.com
        10kubeconfig.example.com
        11openvpn-admin.example.com
        12prometheus.example.com
        13status.example.com
        14upmeter.example.com
        
        
      • Важно: Домен, используемый в шаблоне, не должен совпадать с доменом, указанным в параметре clusterDomain и внутренней сервисной зоне сети. Например, если используется clusterDomain: cluster.local (значение по умолчанию), а сервисная зона сети — ru-central1.internal, то publicDomainTemplate не может быть %s.cluster.local или %s.ru-central1.internal.
    • Если вы не имеете под управлением DNS-сервер: добавьте статические записи соответствия имен конкретных сервисов публичному IP-адресу узла, на котором работает Ingress-контроллер.

      Например, на персональном Linux-компьютере, с которого необходим доступ к сервисам Deckhouse, выполните следующую команду (укажите ваш публичный IP-адрес в переменной PUBLIC_IP) для добавления записей в файл /etc/hosts (для Windows используйте файл %SystemRoot%\system32\drivers\etc\hosts):

      1export PUBLIC_IP="<PUBLIC_IP>"
      2sudo -E bash -c "cat <<EOF >> /etc/hosts
      3$PUBLIC_IP api.example.com
      4$PUBLIC_IP argocd.example.com
      5$PUBLIC_IP dashboard.example.com
      6$PUBLIC_IP documentation.example.com
      7$PUBLIC_IP dex.example.com
      8$PUBLIC_IP grafana.example.com
      9$PUBLIC_IP hubble.example.com
      10$PUBLIC_IP istio.example.com
      11$PUBLIC_IP istio-api-proxy.example.com
      12$PUBLIC_IP kubeconfig.example.com
      13$PUBLIC_IP openvpn-admin.example.com
      14$PUBLIC_IP prometheus.example.com
      15$PUBLIC_IP status.example.com
      16$PUBLIC_IP upmeter.example.com
      17EOF
      18"