Использование прокси-сервера при установке Nova Container Platform

В некоторых окружениях прямой доступ в сеть Интернет может быть закрыт и осуществляться только с использованием HTTP или HTTPS прокси-сервера. Вы можете указать параметры подключения к прокси-серверу в Nova Container Platform на этапе установки платформы независимо от метода развертывания.

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

Ознакомьтесь со списком Интернет-ресурсов, которые используются во время установки Nova Container Platform и определите, какие из ресурсов возможно исключить. По умолчанию весь трафик узлов платформы направляется через прокси-серверы, однако установка прокси-сервера не влияет на конечные пользовательские сервисы. При необходимости вы можете добавить исключения для ресурсов в параметр spec.noProxy объекта Proxy.

При использовании прокси-сервера на узлах кластера автоматически добавляются следующие исключения noProxy:

  • coreServer: Сервер управления Nova Universe при установке платформы в закрытом сетевом окружении.

  • k8sDefaultDnsZone: Корневой DNS-домен кластера Kubernetes.

  • k8sAPIDefaultFqdn: DNS-имя по умолчанию, используемое для доступа к серверу Kubernetes API.

  • k8sAPIAdditionalSANs: Список дополнительных DNS-имен и IP-адресов (Subject Alternative Name) Kubernetes API.

  • kubePodSubnet: Блок IP-адресов для подов Kubernetes (Pod).

  • kubeServiceAddresses: Блок IP-адресов для сервисной сети Kubernetes (Service Network).

  • dnsBaseDomain: Базовый DNS-домен для настройки и публикации служебных веб-сервисов через Ingress-контроллер.

  • .svc: Все ресурсы сервисов в служебном домене Kubernetes.

  • 127.0.0.1: Локальный хост.

  • IP-адреса всех узлов платформы.

  • Хостовые имена всех узлов платформы.

2. Настройка параметров прокси-сервера

В Nova Container Platform параметры прокси-сервера управляются через объект Proxy в Kubernetes. Перед установкой платформы вы можете сгенерировать необходимые конфигурационные манифесты с помощью nova-ctl.

По умолчанию nova-ctl предоставляет манифест Proxy с пустой спецификацией spec. Это означает, что прокси-сервер не будет использоваться при установке платформы. Пример данного манифеста представлен ниже.

apiVersion: config.nova-platform.io/v1alpha1
kind: Proxy
metadata:
  name: cluster
spec: {}

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

Пример подготовленного манифеста:

apiVersion: config.nova-platform.io/v1alpha1
kind: Proxy
metadata:
  name: cluster
spec:
  httpProxy:
    server: "http://172.31.100.100"
    port: 8080
    username: "changeme"
    password: "changeme"
  httpsProxy:
    server: "http://172.31.100.100"
    port: 8080
    username: "changeme"
    password: "changeme"
  noProxy: "hub.corp.internal,registry-1.corp.internal"

3. Настройка nova-ctl

При онлайн-установке платформы nova-ctl обращается как к публичным ресурсам, так и внутренним ресурсам кластера. Поэтому, если вы запускаете контейнер с утилитой nova-ctl в окружении, где требуется настройка прокси-сервера, вам необходимо установить исключения noProxy, аналогичные тем, что устанавливаются на узлах кластера автоматически, а также добавить дополнительные исключения при необходимости.

Вы можете настроить nova-ctl используя команды ниже.

Процедура

  1. Запустите nova-ctl:

    $ docker run --rm -it -v $PWD:/opt/nova hub.nova-platform.io/public/nova/nova-ctl:v4.0.2
  2. Установите переменные окружения с параметрами прокси-сервера в контейнере nova-ctl, например:

    export HTTP_PROXY=http://changeme:changeme@172.31.100.100:8080
    export HTTPS_PROXY=http://changeme:changeme@172.31.100.100:8080
    export NO_PROXY=.cluster.local,.svc,10.233.0.0/18,10.233.64.0/18