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

Вступление

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

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

Примечание

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

  • Версия Kubernetes >= 1.22

  • Helm 3.0+

  • Cкачайте образ Angie Ingress Controller (ANIC) и перенесите его в свой личный реестр

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

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

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

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

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

Если вы не используете пользовательские ресурсы, для которых требуются эти определения (что соответствует параметру 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/

Примечание

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

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

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

Чтобы установить диаграмму с названием выпуска 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

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

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

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

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

helm upgrade my-release anic/anic –version 0.4.0

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

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

helm uninstall my-release

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

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

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

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

Параметр

Описание

По умолчанию

controller.name

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

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

controller.kind

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

deployment

controller.annotations

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

{}

controller.angiePro

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

false

controller.reloadTimeout

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

60000

controller.hostNetwork

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

false

controller.dnsPolicy

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

ClusterFirst

controller.debug

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

false

controller.logLevel

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

1

controller.image.digest

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

Нет

controller.image.repository

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

myregistry.host.ru/angie-ingress

controller.image.tag

Тег образа Ingress Controller.

0.1.2

controller.image.pullPolicy

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

IfNotPresent

controller.lifecycle

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

{}

controller.customConfigMap

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

«»

controller.config.name

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

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

controller.config.annotations

Аннотации к ConfigMap в Ingress Controller.

{}

controller.config.entries

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

{}

controller.customPorts

Список пользовательских портов, которые должны быть доступны в поде Ingress Controller. Следует обычному синтаксису 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

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

{}

controller.terminationGracePeriodSeconds

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

30

controller.tolerations

Допуски подов Ingress Controller.

[]

controller.affinity

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

{}

controller.topologySpreadConstraints

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

{}

controller.env

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

[]

controller.volumes

Тома подов Ingress Controller.

[]

controller.volumeMounts

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

[]

controller.initContainers

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

[]

controller.extraContainers

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

[]

controller.resources

Ресурсы подов Ingress Controller.

requests: cpu=100m,memory=128Mi

controller.replicaCount

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

1

controller.ingressClass

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

angie

controller.setAsDefaultIngress

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

false

controller.watchNamespace

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

«»

controller.watchNamespaceLabel

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

«»

controller.watchSecretNamespace

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

«»

controller.enableCustomResources

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

true

controller.enablePreviewPolicies

Включает политики предварительного просмотра. Этот параметр устарел. Чтобы включить политики OIDC, используйте вместо него controller.enableOIDC.

false

controller.enableOIDC

Включает политики OIDC.

Предупреждение

Пока не работает, но вскоре будет.

false

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 для определения параметров глобальной конфигурации Ingress Controller.

{}

controller.enableSnippets

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

false

controller.healthStatus

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

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

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

Нет

controller.service.create

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

true

controller.service.type

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

LoadBalancer

controller.service.externalTrafficPolicy

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

Local

controller.service.annotations

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

{}

controller.service.extraLabels

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

{}

controller.сервис.loadBalancerIP

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

«»

controller.service.externalIPs

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

[]

controller.service.loadBalancerSourceRanges

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

[]

controller.service.name

Имя сервиса.

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

controller.service.customPorts

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

[]

controller.service.httpPort.enable

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

true

controller.service.httpPort.port

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

80

controller.service.httpPort.nodePort

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

«»

controller.service.httpPort.targetPort

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

80

controller.service.httpsPort.enable

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

true

controller.service.httpsPort.port

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

443

controller.service.httpsPort.nodePort

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

«»

controller.service.httpsPort.targetPort

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

443

controller.serviceAccount.annotations

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

{}

controller.serviceAccount.name

Имя учетной записи сервиса подов Ingress Controller. Используется для 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, который предоставляет доступ к подам Ingress Controller через систему 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

Аннотации пода Ingress Controller.

{}

controller.pod.extraLabels

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

{}

controller.readyStatus.enable

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

true

controller.readyStatus.port

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

8081

controller.readyStatus.initialDelaySeconds

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

0

controller.enableLatencyMetrics

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

false

controller.minReadySeconds

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

0

controller.autoscaling.enabled

Включает HorizontalPodAutoscaling.

false

controller.autoscaling.annotations

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

{}

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

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

{}

controller.podDisruptionBudget.minAvailable

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

0

controller.podDisruptionBudget.maxUnavailable

Количество подов Ingress Controller, которые могут быть недоступны. Взаимоисключающая с «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-соединений.

«»