Установка с помощью 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. |
|
controller.reportIngressStatus.leaderElectionLockName |
Указывает имя ConfigMap в том же пространстве имен, что и контроллер,
которое используется для блокировки выбора лидера. Значение
controller.reportIngressStatus.enableLeaderElection должно быть задано
как |
Создается автоматически |
controller.reportIngressStatus.annotations |
Аннотации к конфигурационной карте выборов лидера. |
{} |
controller.pod.annotations |
Аннотации пода ANIC. |
{} |
controller.pod.extraLabels |
Дополнительные экстра-метки для пода ANIC. |
{} |
controller.readyStatus.enable |
Включает конечную точку готовности |
|
controller.readyStatus.port |
HTTP-порт для конечной точки готовности. |
|
controller.readyStatus.initialDelaySeconds |
Число секунд с запуска пода ANIC до инициирования проверки готовности. |
|
controller.enableLatencyMetrics |
Включает сбор метрик задержки для апстримов. Требуется
|
|
controller.minReadySeconds |
Задает минимальное количество секунд, в течение которых вновь созданный под должен прийти в готовое состояние без сбоя какого-либо из контейнеров, чтобы считаться доступным; документацию см. здесь. |
|
controller.autoscaling.enabled |
Включает HorizontalPodAutoscaling. |
|
controller.autoscaling.annotations |
Аннотации HorizontalPodAutoscaler для ANIC. |
{} |
controller.autoscaling.minReplicas |
Минимальное число реплик для HPA. |
|
controller.autoscaling.maxReplicas |
Максимальное число реплик для HPA. |
|
controller.autoscaling.targetCPUUtilizationPercentage |
Целевой процент загрузки ЦП. |
|
controller.autoscaling.targetMemoryUtilizationPercentage |
Целевой процент использования памяти. |
|
controller.podDisruptionBudget.enabled |
Включает PodDisruptionBudget. |
|
controller.podDisruptionBudget.annotations |
Аннотации к бюджету сбоев пода ANIC. |
{} |
controller.podDisruptionBudget.minAvailable |
Количество подов ANIC, которые должны быть доступны.
Взаимоисключающая с |
|
controller.podDisruptionBudget.maxUnavailable |
Количество подов ANIC, которые могут быть недоступны.
Взаимоисключающая с |
0 |
controller.strategy |
Задает стратегию замены старых подов новыми. Документация по стратегии обновления развертывания и стратегии обновления набора демонов |
{} |
controller.disableIPV6 |
В явной форме отключает прослушиватели IPV6 для узлов, которые не поддерживают стек IPV6. |
|
controller.readOnlyRootFilesystem |
Настраивает корневую файловую систему как доступную только для чтения и добавляет тома для временных данных. |
|
rbac.create |
Настраивает RBAC. |
|
prometheus.create |
Публикует метрики Angie в формате Prometheus. |
|
prometheus.port |
Настраивает порт для получения метрик. |
|
prometheus.scheme |
Настраивает схему HTTP, используемую для подключений к конечной точке Prometheus. |
|
prometheus.secret |
Пространство имен или имя TLS-секрета Kubernetes. Если секрет указан, он используется для защиты конечной точки Prometheus с помощью TLS-соединений. |
"" |