Универсальная установка для различных сред

Сценарий универсальной установки предназначен для случаев, когда необходимые узлы (виртуальные машины и серверы) подготавливаются пользователем самостоятельно до установки Nova Container Platform.

1. Предварительные условия

2. Получение конфигурационного манифеста

Вы можете получить шаблон конфигурационного манифеста с помощью nova-ctl. Для этого выполните команду:

nova-ctl init

Пример

nova-ctl init

Select the type of infrastructure provider:
[ 0] None (Bare metal)
[ 1] vSphere
[ 2] zVirt
> 0
Select deployment method:
[ 0] Online
[ 1] Online with HTTP proxy
[ 2] Offline
> 0
Cluster configuration file is stored in nova-configs/nova-deployment-conf.yaml
Proxy configuration file is stored in nova-configs/proxy.yaml

В директории nova-configs находятся следующие файлы:

  • nova-deployment-conf.yaml: основной конфигурационный манифест платформы.

  • proxy.yaml: конфигурационный манифест для установки платформы через HTTP-прокси.

При запросе шаблона файла конфигурации требуется выбрать тип провайдера инфраструктуры. В зависимости от выбранного типа шаблон файла будет оптимизирован для удобства заполнения конфигурации.

Для установки Nova Container Platform в пользовательской инфраструктуре выберите тип провайдера инфраструктуры None (Bare metal).

Информация

Для использования прокси-сервера заполните манифест proxy.yaml в соответствии с разделом документации по настройке прокси-сервера.

3. Пример файла конфигурации установки

Вы можете кастомизировать файл конфигурации nova-deployment-conf.yaml, если требуется указать более детальные настройки платформы. Подробную информацию о параметрах установки вы можете получить в разделе Спецификация параметров установки.

Пример файла установки

apiVersion: "config.nova-platform.io/v1alpha3"
kind: "Infrastructure"
metadata:
  name: "cluster"
spec:
  customerID: "5d4a2c84b6e22623" (1)
  licenseKey: "a098f0aefdc021b643c2eb76c1cad0a8" (2)
  version: "v4.0.2" (3)
  infrastructureProvider: (4)
    none: {}
  clusterNodes: (5)
    master:  (6)
      - networkSpec:
          hostname: "master.nova.internal"
          ip: "172.31.101.24"
        state: "present"
        hostGroup: "control-plane"
    infra: (7)
      - hostGroup: "infra"
        networkSpec:
          hostname: "infra.nova.internal"
          ip: "172.31.101.25"
        state: "present"
    worker: (8)
      - hostGroup: "worker"
        networkSpec:
          hostname: "worker.nova.internal"
          ip: "172.31.101.26"
        state: "present"
  clusterConfiguration: (9)
    dnsBaseDomain: "apps.cls01.nova.internal"
    cniProvider: "cilium"
    extraOptions:
      ingressTLSConfig:
        internalCA: {}
      kubePodSubnet: "10.233.64.0/18"
      kubeServiceAddresses: "10.233.0.0/18"
      kubeNetworkNodePrefix: "24"
      k8sAPIAdditionalSANs:
      - "api.nova.acme.internal"
1 Идентификатор клиента, полученный из лицензионной информации.
2 Лицензионный ключ для установки кластера.
3 Версия платформы Nova Container Platform.
4 Блок конфигурации провайдера инфраструктуры.
5 Блок конфигурации узлов кластера Kubernetes.
6 Список мастер-узлов кластера Nova Container Platform.
7 Список инфраструктурных узлов кластера Nova Container Platform.
8 Список рабочих узлов кластера Nova Container Platform.
9 Блок дополнительных параметров настройки кластера.

Информация

Для использования собственного центра сертификации для генерации сертификатов заполните конфигурационный манифест nova-deployment-conf.yaml в соответствии с разделом документации Использование пользовательских сертификатов.

4. Установка кластера в минимальной конфигурации

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

  • 1 мастер-узел кластера

  • 1 инфраструктурный узел кластера

  • 1 рабочий узла кластера

Добавьте данные узлы в соответствующие списки конфигурационного манифеста nova-deployment-conf.yaml (master, infra, worker), например:

clusterNodes:
  master:
    - hostGroup: "control-plane"
      networkSpec:
        hostname: "master.nova.internal"
        ip: "172.31.101.24"
      state: "present"
  infra:
    - hostGroup: "infra"
      networkSpec:
        hostname: "infra.nova.internal"
        ip: "172.31.101.25"
      state: "present"
  worker:
    - hostGroup: "worker"
      networkSpec:
        hostname: "worker.nova.internal"
        ip: "172.31.101.26"
      state: "present"

При установке кластера в минимальной конфигурации роль узлов балансировки входящего трафика (Ingress) выполняют рабочие узлы. Это необходимо учесть при настройке внешних балансировщиков, а также при создании DNS-записей.

5. Установка кластера в высокодоступной конфигурации

Для установки кластера в высокодоступной конфигурации вы подготовили следующие узлы:

  • 3 мастер-узла кластера

  • 3 инфраструктурных узла кластера

  • 2 и более рабочих узла кластера

  • (Опционально) 2 и более узла балансировки входящих запросов

Добавьте необходимые узлы кластера в соответствующие списки файла конфигурации nova-deployment-conf.yaml (master, infra, worker, ingress), например:

clusterNodes:
  master:
    - networkSpec:
        hostname: "master01.nova.internal"
        ip: "172.31.101.24"
      state: "present"
      hostGroup: "control-plane"
    - networkSpec:
        hostname: "master02.nova.internal"
        ip: "172.31.101.25"
      state: "present"
      hostGroup: "control-plane"
    - networkSpec:
        hostname: "master03.nova.internal"
        ip: "172.31.101.26"
      state: "present"
      hostGroup: "control-plane"
  infra:
    - hostGroup: "infra"
      networkSpec:
        hostname: "infra01.nova.internal"
        ip: "172.31.101.27"
      state: "present"
    - hostGroup: "infra"
      networkSpec:
        hostname: "infra02.nova.internal"
        ip: "172.31.101.28"
      state: "present"
    - hostGroup: "infra"
      networkSpec:
        hostname: "infra03.nova.internal"
        ip: "172.31.101.29"
      state: "present"
  worker:
    - hostGroup: "worker"
      networkSpec:
        ip: "172.31.101.30"
        hostname: "worker01.nova.internal"
      state: "present"
    - hostGroup: "worker"
      networkSpec:
        hostname: "worker02.nova.internal"
        ip: "172.31.101.31"
      state: "present"
    - hostGroup: "worker"
      networkSpec:
        hostname: "worker03.nova.internal"
        ip: "172.31.101.32"
      state: "present"
  ingress:
    - hostGroup: "ingress"
      networkSpec:
        hostname: "ingress01.nova.internal"
        ip: "172.31.101.33"
      state: "present"
    - hostGroup: "ingress"
      networkSpec:
        hostname: "ingress02.nova.internal"
        ip: "172.31.101.34"
      state: "present"

6. Запуск процесса установки

Необходимые условия

  • У вас есть закрытый ключ SSH на вашем локальном компьютере. Ключ будет использоваться для SSH аутентификации на узлах кластера в случае отладки или восстановления после аварийных ситуаций.

  • Вы подготовили необходимые узлы и пользовательскую инфраструктуру для установки кластера.

  • Вы заполнили шаблон файла конфигурации установки nova-deployment-conf.yaml.

  • (Опционально) Вы заполнили шаблон файла конфигурации прокси-сервера proxy.yaml.

Процедура

  1. Запустите процесс установки кластера с помощью команды:

    nova-ctl bootstrap --ssh-user <имя_пользователя> --ssh-key <закрытый ключ SSH>

    Пример

    $ nova-ctl bootstrap --ssh-user nova-installer --ssh-key id_rsa.pem
    The bootstrap procedure implies the initial installation of the platform. All existing configuration will be deleted. Are you sure you want to continue? (yes/no) [no] yes

В ходе процедуры bootstrap вся существующая конфигурация Nova Container Platform на узлах будет удалена. Вам необходимо согласиться с этим предупреждением, если вы уверены в том, что список узлов кластера указан верно.

7. Ожидание процесса установки

Вы можете наблюдать за процессом установки Nova Container Platform в консоли:

$ nova-ctl bootstrap --ssh-user nova-installer --ssh-key id_rsa.pem
The bootstrap procedure implies the initial installation of the platform. All existing configuration will be deleted. Are you sure you want to continue? (yes/no) [no] yes

 ■ Validating cluster nodes... done
 ■ Validating license... done
 ■ Setting up secrets store... done
 ■ Setting up PKI... done
 ■ Setting up authentication... done
 ■ Preparing cluster nodes... done
 ■ Deploying Kubernetes cluster... done
 ■ Deploying platform applications... done


🚀 Welcome to the Nova container platform!

Your working directory contains the following installation assets:
 • Kubernetes client configuration: kubeadmin.conf
 • OAuth admin credentials: oauth-credentials.txt
 • Secrets store tokens: secrets-store-tokens.txt
 • Internal CA bundle: nova-root-ca.pem

Read the official Nova Container Platform documentation to discover features, expand and customize your cluster.

https://docs.nova-platform.io

Команда завершится успешно, когда все компоненты Nova Container Platform будут установлены и доступны.

После успешного завершения установки кластера nova-ctl сохраняет в рабочей директории файлы с информацией, необходимой для доступа к кластеру и его компонентам:

Описание

kubeadmin.conf

Конфигурационный файл с учетной записью администратора кластера для утилиты kubectl, необходимой для работы с Kubernetes. Учетная запись имеет роль cluster-admin в Kubernetes.

oauth-credentials.txt

Учетная запись администратора кластера для авторизации по протоколу OAuth.

secrets-store-tokens.txt

Токены для доступа к системе управления секретами Secrets Manager.

nova-root-ca.pem

Корневой TLS-сертификат Kubernetes. Данным сертификатом подписаны все последующие подчиненные центры сертификации.

Не забудьте сохранить учетные данные в надежном месте и удалить их с локальной машины.

8. Проверка подключения к кластеру

После установки платформы вы можете выполнить пробное подключение к кластеру Kubernetes. Для этого выполните приведенные ниже команды.

Процедура

  1. Определите в консоли переменную KUBECONFIG, содержащую путь к полученному после установки файлу kubeadmin.conf:

    export KUBECONFIG=<путь>/kubeadmin.conf
  2. Проверьте, что вы можете выполнять команды kubectl:

    kubectl cluster-info

    Пример

    $ kubectl cluster-info
    
    Kubernetes control plane is running at https://172.31.101.24:6443
    CoreDNS is running at https://172.31.101.24:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
    
    To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
  3. Проверьте список узлов кластера:

    kubectl get nodes

    Пример

    $ kubectl get nodes
    
    NAME                   STATUS   ROLES            AGE   VERSION
    master.nova.internal   Ready    control-plane    12m   v1.26.8
    worker.nova.internal   Ready    ingress,worker   12m   v1.26.8
    infra.nova.internal    Ready    infra            12m   v1.26.8
  4. Проверьте версию установленной платформы:

    kubectl get clusterversions version

    Пример

    $ kubectl get clusterversions version
    
    NAME      VERSION   AGE
    version   v4.0.2    12m