Установка с помощью Helm#

Вступление#

Эта диаграмма производит развертывание Angie Ingress Controller (ANIC) в кластере Kubernetes.

Предварительные требования#

Примечание

Вся документация должна использоваться только с последней стабильной версией ANIC.

  • Kubernetes 1.22+

  • Helm 3.0+

  • Cкачайте образ ANIC и перенесите его в свой личный реестр.

  • Обновите поле controller.image.repository файла values.yaml соответственно.

Пользовательские определения ресурсов#

По умолчанию для ANIC требуется несколько пользовательских определений ресурсов (CRD), установленных в кластере. Клиент Helm установит эти определения. Если они не установлены, поды ANIC не будут готовы.

Скачивание диаграммы#

Установить диаграммы для ANIC можно из нашего репозитория. За доступом обращайтесь на .

Если вы не используете пользовательские ресурсы, для которых требуются эти определения (что соответствует параметру controller.enableCustomResources, установленному как false), установку определений можно пропустить, указав --skip-crds в команде helm install.

Обновление определений#

Чтобы обновить определения, скачайте исходные файлы диаграммы, как описано в разделе Скачивание диаграммы, а затем запустите:

kubectl apply -f crds/

Примечание

Возможно следующее предупреждение, которое можно игнорировать:

Warning: kubectl apply should be used on resource created by either
kubectl create --save-config or kubectl apply

(Предупреждение: kubectl apply следует использовать для ресурса,
созданного с помощью kubectl create --save-config или kubectl apply).

Удаление определений#

Чтобы удалить определения, скачайте исходные файлы диаграммы, как описано в разделе Скачивание диаграммы, а затем запустите:

kubectl delete -f crds/

Примечание

Эта команда удалит все соответствующие пользовательские ресурсы в вашем кластере во всех пространствах имен. Убедитесь, что в кластере нет пользовательских ресурсов, которые вы хотите сохранить, и не запущены другие выпуски ANIC.

Управление диаграммой с помощью реестра#

Установка диаграммы#

Чтобы установить диаграмму с названием выпуска my-release (my-release - это название, которое вы выбираете сами, myregistry.host.ru/angie-ingress - необходимо изменить на путь в личном реестре):

helm repo add anic https://git.angie.software/api/packages/web-server/helm

helm install my-release anic/anic --set controller.image.repository=myregistry.host.ru/angie-ingress

Это приведет к установке последней пограничной версии ANIC из реестра контейнеров.

Обновление диаграммы#

Helm не обновляет определения во время обновления выпуска. Прежде чем обновлять выпуск, ознакомьтесь с разделом Обновление определений.

Чтобы обновить выпуск my-release:

helm upgrade my-release anic/anic –version 0.5.0

Удаление диаграммы#

Чтобы удалить выпуск my-release:

helm uninstall my-release

Команда удаляет все компоненты Kubernetes, связанные с выпуском, и сам выпуск.

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

Конфигурация#

В следующей таблице перечислены настраиваемые параметры диаграммы Ingress Controller и их значения по умолчанию.

Параметр

Описание

По умолчанию

controller.name

Имя набора демонов или развертывания ANIC.

Создается автоматически

controller.kind

Тип установки ANIC - deployment или daemonset (развертывание или набор демонов).

deployment

controller.annotations

Позволяет устанавливать аннотации для развертывания или набора демонов.

{}

controller.angiePro

Развертывает ANIC для Angie PRO.

false

controller.reloadTimeout

Время ожидания в миллисекундах, в течение которого ANIC будет ожидать успешной перезагрузки Angie после изменения или при начальном запуске.

60000

controller.hostNetwork

Позволяет подам ANIC использовать сетевое пространство имен хоста.

false

controller.dnsPolicy

Политика DNS для подов ANIC.

ClusterFirst

controller.debug

Включает отладку для Angie. Требуется задать значение error-log-level: debug в ConfigMap через controller.config.entries.

false

controller.logLevel

Уровень ведения журнала ANIC.

1

controller.image.digest

Дайджест образа ANIC.

Нет

controller.image.repository

Репозиторий образов ANIC.

myregistry.host.ru/angie-ingress

controller.image.tag

Тег образа ANIC.

0.1.2

controller.image.pullPolicy

Политика скачивания образа ANIC.

IfNotPresent

controller.lifecycle

Жизненный цикл подов ANIC.

{}

controller.customConfigMap

Имя пользовательской ConfigMap, используемой ANIC. Если имя задано, то конфигурация по умолчанию игнорируется.

""

controller.config.name

Имя ConfigMap, используемой ANIC.

Создается автоматически

controller.config.annotations

Аннотации к ConfigMap в ANIC.

{}

controller.config.entries

Записи в ConfigMap для настройки конфигурации Angie.

{}

controller.customPorts

Список пользовательских портов, которые должны быть доступны в поде ANIC. Следует обычному синтаксису yaml Kubernetes для контейнерных портов.

[]

controller.defaultTLS.cert

Сертификат TLS в кодировке base64 для сервера HTTPS по умолчанию.

Примечание

Рекомендуется указать свой собственный сертификат. Альтернативное решение: полный пропуск секрета сервера по умолчанию приведет к тому, что Angie будет по умолчанию отклонять TLS-подключения к серверу.

Нет

controller.defaultTLS.key

Ключ TLS в кодировке base64 для сервера HTTPS по умолчанию.

Примечание

Рекомендуется указать свой собственный ключ. Альтернативное решение: полный пропуск секрета сервера по умолчанию приведет к тому, что Angie будет по умолчанию отклонять TLS-подключения к серверу.

Нет

controller.defaultTLS.secret

Секрет с сертификатом TLS и ключом для сервера HTTPS по умолчанию. Значение должно соответствовать следующему формату: <пространство имен>/<имя>. Используется в качестве альтернативы указанию сертификата и ключа с помощью параметров controller.defaultTLS.cert и controller.defaultTLS.key.

Примечание

Альтернативное решение: полный пропуск секрета сервера по умолчанию приведет к тому, что Angie будет по умолчанию отклонять TLS-подключения к серверу.

Нет

controller.wildcardTLS.cert

Сертификат TLS в кодировке base64 для каждого узла Ingress или VirtualServer, у которого включен TLS, но не указан секрет. Если параметр не задан, Angie прервет любую попытку установить TLS-соединение для таких узлов Ingress или VirtualServer.

Нет

controller.wildcardTLS.key

Ключ TLS в кодировке base64 для каждого узла Ingress или VirtualServer, у которого включен TLS, но не указан секрет. Если параметр не задан, Angie прервет любую попытку установить TLS-соединение для таких узлов Ingress или VirtualServer.

Нет

controller.wildcardTLS.secret

Секрет с сертификатом TLS и ключом для каждого узла Ingress или VirtualServer, у которого включен TLS, но не указан секрет. Значение должно соответствовать следующему формату: <пространство имен>/<имя>. Используется в качестве альтернативы указанию сертификата и ключа с помощью параметров controller.wildcardTLS.cert и controller.wildcardTLS.key.

Нет

controller.nodeSelector

Селектор узлов для назначения подов ANIC.

{}

controller.terminationGracePeriodSeconds

Период плавного завершения работы пода ANIC.

30

controller.tolerations

Допуски подов ANIC.

[]

controller.affinity

Привязка подов ANIC.

{}

controller.topologySpreadConstraints

Ограничения на распространение топологии подов ANIC.

{}

controller.env

Дополнительные переменные окружения, которые должны быть установлены на подах ANIC.

[]

controller.volumes

Тома подов ANIC.

[]

controller.volumeMounts

Точки подключения томов подов ANIC.

[]

controller.initContainers

Значение initContainers для подов ANIC.

[]

controller.extraContainers

Дополнительные контейнеры (например, сайдкар) для подов Ingress Controller.

[]

controller.resources

Ресурсы подов ANIC.

requests: cpu=100m,memory=128Mi

controller.replicaCount

Количество реплик развертывания ANIC.

1

controller.ingressClass

Класс ANIC. Должен быть развернут ресурс IngressClass с именем, тождественным этому классу. В противном случае ANIC не запустится. ANIC обрабатывает только те ресурсы, которые принадлежат его классу, т. е. их ресурс поля "ingressClassName" тождествен классу. ANIC обрабатывает все ресурсы VirtualServer, VirtualServerRoute и TransportServer, которые не имеют поля "ingressClassName", во всех версиях Kubernetes.

angie

controller.setAsDefaultIngress

Новым Ingress без указанного поля "ingressClassName" будет присвоен класс, указанный в controller.ingressClass.

false

controller.watchNamespace

Разделенный запятыми список пространств имен, за ресурсами которых должен следить ANIC. По умолчанию ANIC отслеживает все пространства имен. Взаимоисключающие с controller.watchNamespaceLabel. Обратите внимание, что при настройке нескольких пространств имен с использованием опции Helm cli --set строка должна быть заключена в двойные кавычки, а запятые экранированы с помощью обратной косой черты - например, --set controller.watchNamespace="default,anic".

""

controller.watchNamespaceLabel

Настраивает в ANIC просмотр только пространств имен с меткой foo=bar. По умолчанию ANIC отслеживает все пространства имен. Взаимоисключающая с controller.watchNamespace настройка.

""

controller.watchSecretNamespace

Разделенный запятыми список пространств имен, за которыми Ingress Controller должен следить в поисках ресурсов типа Secret. Если этот параметр не настроен, ANIC отслеживает одни и те же пространства имен в поисках всех ресурсов. См. также controller.watchNamespace и controller.watchNamespaceLabel. Обратите внимание, что при настройке нескольких пространств имен с использованием опции Helm cli --set строка должна быть заключена в двойные кавычки, а запятые экранированы с помощью обратной косой черты - например, --set controller.watchSecretNamespace="default,angie-ingress".

""

controller.enableCustomResources

Включает пользовательские ресурсы.

true

controller.enableTLSPassthrough

Включает передачу данных по протоколу TLS на порту 443. Требуется controller.enableCustomResources.

false

controller.enableCertManager

Включает автоматическое управление сертификатами x509 для ресурсов виртуального сервера с помощью cert-manager (cert-manager.io). Требуется controller.enableCustomResources.

false

controller.enableExternalDNS

Включает интеграцию с ExternalDNS для настройки общедоступных записей DNS у ресурсов VirtualServer с использованием ExternalDNS. Требуется controller.enableCustomResources.

false

controller.globalConfiguration.create

Создает пользовательский ресурс GlobalConfiguration. Требуется controller.enableCustomResources.

false

controller.globalConfiguration.spec

Спецификация GlobalConfiguration для определения параметров глобальной конфигурации ANIC.

{}

controller.enableSnippets

Включает пользовательские фрагменты конфигурации Angie в ресурсах Ingress, VirtualServer, VirtualServerRoute и TransportServer.

false

controller.healthStatus

Добавляет местоположение "/angie-health" на сервер по умолчанию. Местоположение отвечает кодом статуса 200 на любой запрос. Это полезно для внешней проверки работоспособности ANIC.

false

controller.healthStatusURI

Задает URI местоположения состояния работоспособности на сервере по умолчанию. Требуется controller.HealthStatus.

"/angie-health"

controller.angieStatus.enable

Включает в Angie API.

true

controller.angieStatus.port

Задает порт, на котором доступен Angie API.

8080

controller.angieStatus.allowCidrs

Добавляет блоки IP или CIDR в список разрешенных для Angie API. Несколько IP или CIDR разделяются запятыми.

127.0.0.1,::1

controller.priorityClassName

Класс приоритета подов ANIC.

Нет

controller.service.create

Создает сервис для предоставления доступа к подам ANIC.

true

controller.service.type

Тип сервиса, который необходимо создать для ANIC.

LoadBalancer

controller.service.externalTrafficPolicy

Внешняя политика трафика сервиса. Значение Local сохраняет исходный IP-адрес клиента.

Local

controller.service.annotations

Аннотации сервиса ANIC.

{}

controller.service.extraLabels

Экстра-метки сервиса.

{}

controller.сервис.loadBalancerIP

Статический IP-адрес для балансировщика нагрузки. Для controller.service.type должно быть установлено значение LoadBalancer. Поставщик облачных услуг должен поддерживать эту функцию.

""

controller.service.externalIPs

Список внешних IP-адресов для сервиса ANIC.

[]

controller.service.loadBalancerSourceRanges

Диапазоны IP-адресов (CIDR), которым разрешен доступ к балансировщику нагрузки. Для controller.service.type должно быть установлено значение LoadBalancer. Поставщик облачных услуг должен поддерживать эту функцию.

[]

controller.service.name

Имя сервиса.

Создается автоматически

controller.service.customPorts

Список пользовательских портов, которые будут доступны через сервис ANIC. Следует обычному синтаксису yaml Kubernetes для портов сервиса.

[]

controller.service.httpPort.enable

Включает HTTP-порт для сервиса ANIC.

true

controller.service.httpPort.port

HTTP-порт сервиса ANIC.

80

controller.service.httpPort.nodePort

Пользовательский NodePort для HTTP-порта. Для controller.service.type должно быть установлено значение NodePort.

""

controller.service.httpPort.targetPort

Целевое значение HTTP-порта сервиса ANIC.

80

controller.service.httpsPort.enable

Включает порт HTTPS для сервиса ANIC.

true

controller.service.httpsPort.port

HTTPS-порт сервиса ANIC.

443

controller.service.httpsPort.nodePort

Пользовательский NodePort для HTTPS-порта. Для controller.service.type должно быть установлено значение NodePort.

""

controller.service.httpsPort.targetPort

Целевой порт HTTPS-порта сервиса ANIC.

443

controller.serviceAccount.annotations

Аннотации учетной записи сервиса ANIC.

{}

controller.serviceAccount.name

Имя учетной записи сервиса подов ANIC. Используется для RBAC.

Создается автоматически

controller.serviceAccount.imagePullSecretName

Имя секретного файла, содержащего учетные данные реестра Docker. Секрет должен находиться в том же пространстве имен, что и выпуск Helm.

""

controller.serviceMonitor.name

Имя serviceMonitor.

Создается автоматически

controller.serviceMonitor.create

Создает пользовательский ресурс ServiceMonitor.

false

controller.serviceMonitor.labels

Метки объектов Kubernetes для применения к объекту serviceMonitor.

""

controller.serviceMonitor.selectorMatchLabels

Набор меток, позволяющих выбирать конечные точки для serviceMonitor.

""

controller.serviceMonitor.endpoints

Список конечных точек, разрешенных в составе этого serviceMonitor.

""

controller.reportIngressStatus.enable

Добавляет в поле адреса в статусе ресурсов Ingress внешний адрес Ingress Controller. Нужно также указать источник внешнего адреса через внешнюю службу через controller.reportIngressStatus.ExternalService, либо через controller.reportIngressStatus.ingressLink, либо через запись external-status-address в ConfigMap через controller.config.entries.

Примечание

Значение controller.config.entries.external-status-address имеет приоритет над остальными.

true

controller.reportIngressStatus.externalService

Указывает имя сервиса с типом LoadBalancer, через который Ingress Controller будет доступен извне. Внешний адрес сервиса используется для отчетов о состоянии ресурсов Ingress, VirtualServer и VirtualServerRoute. Значение controller.reportIngressStatus.enable должно быть задано как true. Значение по умолчанию создается автоматически и включается, когда controller.service.create имеет значение true, а controller.service.type - значение LoadBalancer.

Создается автоматически

controller.reportIngressStatus.ingressLink

Указывает имя ресурса IngressLink, который предоставляет доступ к подам ANIC через систему BIG-IP. IP-адрес системы BIG-IP используется для отчетов о состоянии ресурсов Ingress, VirtualServer и VirtualServerRoute. Значение controller.reportIngressStatus.enable должно быть задано как true.

""

controller.reportIngressStatus.enableLeaderElection

Включает выбор лидера, чтобы избежать ситуации, когда несколько реплик контроллера сообщают о состоянии ресурсов Ingress. Значение controller.reportIngressStatus.enable должно быть задано как true.

true

controller.reportIngressStatus.leaderElectionLockName

Указывает имя ConfigMap в том же пространстве имен, что и контроллер, которое используется для блокировки выбора лидера. Значение controller.reportIngressStatus.enableLeaderElection должно быть задано как true.

Создается автоматически

controller.reportIngressStatus.annotations

Аннотации к конфигурационной карте выборов лидера.

{}

controller.pod.annotations

Аннотации пода ANIC.

{}

controller.pod.extraLabels

Дополнительные экстра-метки для пода ANIC.

{}

controller.readyStatus.enable

Включает конечную точку готовности "/angie-ready". Конечная точка возвращает код успешного завершения, если Angie загрузил всю конфигурацию после запуска. Этим также настраивается проверка готовности для подов ANIC, которая использует конечную точку готовности.

true

controller.readyStatus.port

HTTP-порт для конечной точки готовности.

8081

controller.readyStatus.initialDelaySeconds

Число секунд с запуска пода ANIC до инициирования проверки готовности.

0

controller.enableLatencyMetrics

Включает сбор метрик задержки для апстримов. Требуется prometheus.create.

false

controller.minReadySeconds

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

0

controller.autoscaling.enabled

Включает HorizontalPodAutoscaling.

false

controller.autoscaling.annotations

Аннотации HorizontalPodAutoscaler для ANIC.

{}

controller.autoscaling.minReplicas

Минимальное число реплик для HPA.

1

controller.autoscaling.maxReplicas

Максимальное число реплик для HPA.

3

controller.autoscaling.targetCPUUtilizationPercentage

Целевой процент загрузки ЦП.

50

controller.autoscaling.targetMemoryUtilizationPercentage

Целевой процент использования памяти.

50

controller.podDisruptionBudget.enabled

Включает PodDisruptionBudget.

false

controller.podDisruptionBudget.annotations

Аннотации к бюджету сбоев пода ANIC.

{}

controller.podDisruptionBudget.minAvailable

Количество подов ANIC, которые должны быть доступны. Взаимоисключающая с maxUnavailable` настройка.

0

controller.podDisruptionBudget.maxUnavailable

Количество подов ANIC, которые могут быть недоступны. Взаимоисключающая с minAvailable настройка.

0

controller.strategy

Задает стратегию замены старых подов новыми. Документация по стратегии обновления развертывания и стратегии обновления набора демонов

{}

controller.disableIPV6

В явной форме отключает прослушиватели IPV6 для узлов, которые не поддерживают стек IPV6.

false

controller.readOnlyRootFilesystem

Настраивает корневую файловую систему как доступную только для чтения и добавляет тома для временных данных.

false

rbac.create

Настраивает RBAC.

true

prometheus.create

Публикует метрики Angie в формате Prometheus.

true

prometheus.port

Настраивает порт для получения метрик.

9113

prometheus.scheme

Настраивает схему HTTP, используемую для подключений к конечной точке Prometheus.

http

prometheus.secret

Пространство имен или имя TLS-секрета Kubernetes. Если секрет указан, он используется для защиты конечной точки Prometheus с помощью TLS-соединений.

""