Установка с помощью 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 можно из нашего репозитория. За доступом
обращайтесь на . Если вы не используете пользовательские ресурсы, для которых требуются эти
определения (что соответствует параметру Чтобы обновить определения, скачайте исходные файлы диаграммы, как описано в
разделе Скачивание диаграммы, а затем запустите: Примечание Возможно следующее предупреждение, которое можно игнорировать: Чтобы удалить определения, скачайте исходные файлы диаграммы, как описано в
разделе Скачивание диаграммы, а затем запустите: Примечание Эта команда удалит все соответствующие пользовательские ресурсы в вашем
кластере во всех пространствах имен. Убедитесь, что в кластере нет
пользовательских ресурсов, которые вы хотите сохранить, и не запущены другие
выпуски 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/
Управление диаграммой с помощью реестра#
Установка диаграммы#
Чтобы установить диаграмму с названием выпуска 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.6.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-соединений. | "" |