Установка с помощью 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 можно из нашего репозитория <https://git.angie.software/web-server/anic-helm-charts/>. За доступом обращайтесь на 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.1.12
Удаление диаграммы#
Чтобы удалить выпуск 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-соединений. |
«» |