Установка с помощью Helm#
Angie Ingress Controller (ANIC) разворачивается в кластере Kubernetes с помощью Helm.
Программные требования:
Kubernetes 1.22+
Helm 3.0+
Поддерживаемые дистрибутивы:
Название | Версии | Архитектуры |
|---|---|---|
Alpine Linux |
| x86_64, ARM64 |
Debian |
| x86_64, ARM64 |
ALT Linux |
| x86_64, ARM64 |
Получение доступа к образу ANIC#
Авторизуйтесь в Docker Registry, чтобы получить доступ к образу ANIC:
$ docker login -u=<login> -p=<password> anic.docker.angie.software
После успешной авторизации информация о доступе будет сохранена в файле
~/.docker/config.json.Создайте секрет для Kubernetes, используя файл Docker-конфигурации:
$ kubectl create secret generic regcred \ --from-file=.dockerconfigjson=$HOME/.docker/config.json \ --type=kubernetes.io/dockerconfigjson
Секрет
regcredбудет использоваться для доступа к приватным образам в Kubernetes.
Cкачаивание образа ANIC#
Cкачайте образ ANIC и перенесите его в свой личный репозиторий, для этого:
Загрузите образ ANIC:
$ docker pull anic.docker.angie.software/anic:latest
Переименуйте образ:
$ docker tag anic.docker.angie.software/anic:latest <ваш_репозиторий>/<образ_anic>
Отправьте переименованный образ в свой репозиторий:
$ docker push <ваш_репозиторий>/<образ_anic>
В файле
values.yamlобновите полеcontroller.image.repositoryсоответственно.
Подключение лицензии#
Подключите лицензию для ANIC, следуя инструкции.
Получение и настройка Helm-чарта#
Склонируйте Helm-чарт из репозитория Angie Software.
Доступ к репозиторию можно получить, обратившись на .
$ git clone https://git.angie.software/web-server/anic-helm-charts.git
Отредактируйте файл
values.yaml, указав имя секрета, созданного для доступа к образам:imagePullSecretName: "regcred"
Соберите и установите Helm-чарт:
$ helm install <имя_релиза> <путь_до_чарта>
Helm cгенерирует манифесты Kubernetes на основе шаблонов (
templates/) и значений (values.yaml), а затем установит их в кластере.Примечание
По умолчанию для ANIC требуется несколько CRD (определений пользовательских ресурсов), установленных в кластере. Helm устанавливает их автоматически. Если не установить CRD, поды ANIC не будут готовы (
Ready). Если вы не используете пользовательские ресурсы, для которых требуются CRD (что соответствует параметруcontroller.enableCustomResources, установленному какfalse), установку CRD можно пропустить, указав в командеhelm installпараметр--skip-crds.
Обновление CRD#
Чтобы обновить CRD, скачайте исходные файлы Helm-чарта, а затем выполните команду:
$ kubectl apply -f crds/
Примечание
Может появиться следующее предупреждение, но его можно проигнорировать:
Warning: kubectl apply should be used on resource created by either
kubectl create --save-config or kubectl apply
Удаление CRD#
Чтобы удалить CRD, скачайте исходные файлы Helm-чарта, а затем выполните команду:
$ kubectl delete -f crds/
Примечание
Эта команда удалит все соответствующие CRD в вашем кластере во всех пространствах имен. Убедитесь, что в кластере нет пользовательских ресурсов, которые вы хотите сохранить, и не запущены другие экземпляры ANIC.
Конфигурация#
Ниже перечислены настраиваемые параметры Helm-чарта Ingress
Controller и их значения по умолчанию. Имя daemonset или deployment ANIC. По умолчанию: создается автоматически Тип установки ANIC - deployment или daemonset. По умолчанию: deployment Позволяет устанавливать По умолчанию: {} Развертывает ANIC для Angie PRO. По умолчанию: false Включает Angie Dashboard (status endpoint для получения информации о состоянии Angie).
Соответствует аргументу командной строки По умолчанию: false Задает порт для Angie Dashboard.
Соответствует аргументу командной строки По умолчанию: 8082 Добавляет блоки IP/CIDR в список разрешенных для Angie Dashboard.
Соответствует аргументу командной строки По умолчанию: 127.0.0.1,::1 Включает выдачу статистики Angie в формате Prometheus.
Соответствует аргументу командной строки По умолчанию: true Задает порт, на котором доступна статистика Angie в формате Prometheus.
Формат: По умолчанию: 8083 Добавляет блоки IP/CIDR в список разрешений для
статистики Angie в формате Prometheus.
Соответствует аргументу командной строки По умолчанию: 127.0.0.1,::1 Позволяет менять путь для публикации статистики Angie в формате Prometheus.
Соответствует аргументу командной строки По умолчанию: /p8s Создает сервис ClusterIP для предоставления метрик веб-сервера Angie. По умолчанию: false Задает лейблы для сервиса ClusterIP. По умолчанию: service: "anic-webserver-metrics" Создает ServiceMonitor для метрик веб-сервера Angie. По умолчанию: false Задает лейблы для сервиса ServiceMonitor. По умолчанию: Нет Время ожидания в миллисекундах, в течение которого ANIC
будет ожидать успешной перезагрузки Angie после изменения или при
начальном запуске. По умолчанию: 60000 Позволяет подам ANIC использовать сетевое пространство
имен хоста. По умолчанию: false Политика DNS для подов ANIC. По умолчанию: ClusterFirst Включает отладку для Angie. Требуется задать значение По умолчанию: false Уровень ведения журнала ANIC. По умолчанию: 1 Дайджест образа ANIC. По умолчанию: Нет Репозиторий образов ANIC. По умолчанию: myregistry.host.ru/angie-ingress Тег образа ANIC. По умолчанию: Политика скачивания образа ANIC. По умолчанию: IfNotPresent Жизненный цикл подов ANIC. По умолчанию: {} Имя пользовательской ConfigMap, используемой ANIC. Если
имя задано, то конфигурация по умолчанию игнорируется. По умолчанию: "" Имя ConfigMap, используемой ANIC. По умолчанию: создается автоматически Аннотации к ConfigMap в ANIC. По умолчанию: {} Записи в ConfigMap для настройки конфигурации Angie. По умолчанию: {} Список пользовательских портов, которые должны быть доступны в поде
ANIC. Следует обычному синтаксису yaml Kubernetes для
контейнерных портов. По умолчанию: [] Сертификат TLS в кодировке Примечание Рекомендуется указать свой собственный сертификат. Альтернативное
решение: полный пропуск секрета сервера по умолчанию приведет к тому,
что Angie будет по умолчанию отклонять TLS-подключения к серверу. По умолчанию: Нет Ключ TLS в кодировке Примечание Рекомендуется указать свой собственный ключ. Альтернативное решение:
полный пропуск секрета сервера по умолчанию приведет к тому, что
Angie будет по умолчанию отклонять TLS-подключения к серверу. По умолчанию: Нет Секрет с сертификатом TLS и ключом для сервера HTTPS по умолчанию.
Значение должно соответствовать следующему формату: Примечание Альтернативное решение: полный пропуск секрета сервера по умолчанию
приведет к тому, что Angie будет по умолчанию отклонять TLS-подключения
к серверу. По умолчанию: Нет Сертификат TLS в кодировке По умолчанию: Нет Ключ TLS в кодировке По умолчанию: Нет Секрет с сертификатом TLS и ключом для каждого узла Ingress или
VirtualServer, у которого включен TLS, но не указан секрет. Значение
должно соответствовать следующему формату: По умолчанию: Нет Селектор узлов для назначения подов ANIC. По умолчанию: {} Период плавного завершения работы пода ANIC. По умолчанию: 30 Допуски подов ANIC (tolerations). По умолчанию: [] Привязка подов ANIC (affinity). По умолчанию: {} Ограничения на распространение топологии подов ANIC. По умолчанию: {} Дополнительные переменные окружения, которые должны быть установлены на
подах ANIC. По умолчанию: [] Тома подов ANIC. По умолчанию: [] Точки подключения томов подов ANIC. По умолчанию: [] Значение initContainers для подов ANIC. По умолчанию: [] Дополнительные контейнеры (например, сайдкар) для подов Ingress
Controller. По умолчанию: [] Ресурсы подов ANIC. По умолчанию: requests: cpu=100m,memory=128Mi Количество реплик deployment ANIC. По умолчанию: 1 Класс ANIC. Должен быть развернут ресурс IngressClass с
именем, тождественным этому классу. В противном случае ANIC
не запустится. ANIC обрабатывает только те
ресурсы, которые принадлежат его классу, т. е. их ресурс поля
"ingressClassName" совпадает с классом. ANIC обрабатывает
все ресурсы VirtualServer, VirtualServerRoute и TransportServer, которые
не имеют поля "ingressClassName", во всех версиях Kubernetes. По умолчанию: angie Новым Ingress без указанного поля "ingressClassName" будет присвоен
класс, указанный в controller.ingressClass. По умолчанию: false Разделенный запятыми список пространств имен, за ресурсами которых
должен следить ANIC. По умолчанию ANIC
отслеживает все пространства имен. Взаимоисключающие с
По умолчанию: "" Настраивает в ANIC просмотр только пространств имен с
меткой foo=bar. По умолчанию ANIC отслеживает все
пространства имен. Взаимоисключающая с По умолчанию: "" Разделенный запятыми список пространств имен, за которыми Ingress
Controller должен следить в поисках ресурсов типа Secret. Если этот
параметр не настроен, ANIC отслеживает одни и те же
пространства имен в поисках всех ресурсов. См. также
По умолчанию: "" Включает пользовательские ресурсы. По умолчанию: true Включает передачу данных по протоколу TLS на порту 443. Требуется
controller.enableCustomResources. По умолчанию: false Включает автоматическое управление сертификатами x509 для ресурсов
виртуального сервера с помощью cert-manager (cert-manager.io). Требуется
По умолчанию: false Включает интеграцию с ExternalDNS для настройки общедоступных записей
DNS у ресурсов VirtualServer с использованием ExternalDNS. Требуется
controller.enableCustomResources. По умолчанию: false Создает пользовательский ресурс GlobalConfiguration. Требуется
controller.enableCustomResources. По умолчанию: false Спецификация GlobalConfiguration для определения параметров глобальной
конфигурации ANIC. По умолчанию: {} Включает пользовательские фрагменты конфигурации Angie в ресурсах
Ingress, VirtualServer, VirtualServerRoute и TransportServer. По умолчанию: false Добавляет местоположение "/angie-health" на сервер по умолчанию.
Местоположение отвечает кодом статуса 200 на любой запрос. Это полезно
для внешней проверки работоспособности ANIC. По умолчанию: false Задает URI местоположения состояния работоспособности на сервере по
умолчанию. Требуется По умолчанию: "/angie-health" Включает в Angie API. По умолчанию: true Задает порт, на котором доступен Angie API. По умолчанию: 8080 Добавляет блоки IP или CIDR в список разрешенных для Angie API.
Несколько IP или CIDR разделяются запятыми. По умолчанию: 127.0.0.1,::1 Класс приоритета подов ANIC. По умолчанию: Нет Создает сервис для предоставления доступа к подам ANIC. По умолчанию: true Тип сервиса, который необходимо создать для ANIC. По умолчанию: LoadBalancer Внешняя политика трафика сервиса. Значение Local сохраняет исходный
IP-адрес клиента. По умолчанию: Local Аннотации сервиса ANIC. По умолчанию: {} Экстра-метки сервиса. По умолчанию: {} Статический IP-адрес для балансировщика нагрузки. Для
По умолчанию: "" Список внешних IP-адресов для сервиса ANIC. По умолчанию: [] Диапазоны IP-адресов (CIDR), которым разрешен доступ к балансировщику
нагрузки. Для По умолчанию: [] Имя сервиса. По умолчанию: создается автоматически Список пользовательских портов, которые будут доступны через сервис
ANIC. Следует обычному синтаксису yaml Kubernetes для
портов сервиса. По умолчанию: [] Включает HTTP-порт для сервиса ANIC. По умолчанию: true HTTP-порт сервиса ANIC. По умолчанию: 80 Пользовательский NodePort для HTTP-порта. Для По умолчанию: "" Целевое значение HTTP-порта сервиса ANIC. По умолчанию: 80 Включает порт HTTPS для сервиса ANIC. По умолчанию: true HTTPS-порт сервиса ANIC. По умолчанию: 443 Пользовательский NodePort для HTTPS-порта. Для По умолчанию: "" Целевой порт HTTPS-порта сервиса ANIC. 443 Аннотации учетной записи сервиса ANIC. По умолчанию: {} Имя учетной записи сервиса подов ANIC. Используется для
RBAC. По умолчанию: создается автоматически Имя секретного файла, содержащего учетные данные реестра Docker. Секрет
должен находиться в том же пространстве имен, что и релиз Helm. По умолчанию: "" Добавляет в поле адреса в статусе ресурсов Ingress внешний адрес Ingress
Controller. Нужно также указать источник внешнего адреса через внешнюю
службу через Примечание Значение По умолчанию: true Указывает имя сервиса с типом LoadBalancer, через который Ingress
Controller будет доступен извне. Внешний адрес сервиса используется для
отчетов о состоянии ресурсов Ingress, VirtualServer и
VirtualServerRoute. Значение По умолчанию: создается автоматически Указывает имя ресурса IngressLink, который предоставляет доступ к подам
ANIC через систему BIG-IP. IP-адрес системы BIG-IP
используется для отчетов о состоянии ресурсов Ingress, VirtualServer и
VirtualServerRoute. Значение По умолчанию: "" Включает выбор лидера, чтобы избежать ситуации, когда несколько реплик
контроллера сообщают о состоянии ресурсов Ingress. Значение
По умолчанию: Указывает имя ConfigMap в том же пространстве имен, что и контроллер,
которое используется для блокировки выбора лидера. Значение
controller.reportIngressStatus.enableLeaderElection должно быть задано
как По умолчанию: создается автоматически Аннотации к конфигурационной карте выборов лидера. По умолчанию: {} Аннотации пода ANIC. По умолчанию: {} Дополнительные экстра-метки для пода ANIC. По умолчанию: {} Включает конечную точку готовности По умолчанию: HTTP-порт для конечной точки готовности. По умолчанию: Число секунд с запуска пода ANIC до инициирования проверки
готовности. По умолчанию: Включает сбор метрик задержки для апстримов. Требуется
По умолчанию: Задает минимальное количество секунд, в течение которых вновь созданный
под должен прийти в готовое состояние без сбоя какого-либо из
контейнеров, чтобы считаться доступным; документацию см. здесь. По умолчанию: Включает HorizontalPodAutoscaling. По умолчанию: Аннотации HorizontalPodAutoscaler для ANIC. По умолчанию: {} Минимальное число реплик для HPA. По умолчанию: Максимальное число реплик для HPA. По умолчанию: Целевой процент загрузки ЦП. По умолчанию: Целевой процент использования памяти. По умолчанию: Включает PodDisruptionBudget. По умолчанию: Аннотации к бюджету сбоев пода ANIC. По умолчанию: {} Задает стратегию замены старых подов новыми. Документация по стратегии
обновления развертывания
и стратегии обновления daemonset По умолчанию: {} В явной форме отключает прослушиватели IPV6 для узлов, которые не
поддерживают стек IPV6. По умолчанию: Настраивает корневую файловую систему как доступную только для чтения и
добавляет тома для временных данных. По умолчанию: Настраивает RBAC. По умолчанию: Публикует метрики ANIC в формате Prometheus. По умолчанию: Настраивает порт для получения метрик. По умолчанию: Настраивает схему HTTP, используемую для подключений к конечной точке
Prometheus. По умолчанию: Пространство имен или имя TLS-секрета Kubernetes. Если секрет указан, он
используется для защиты конечной точки Prometheus с помощью
TLS-соединений. По умолчанию: "" Создает сервис ClusterIP для метрик ANIC. По умолчанию: Задает лейблы для сервиса ClusterIP. По умолчанию: service: "anic-prometheus-service" Создает ServiceMonitor для метрик ANIC. По умолчанию: Задает лейблы для сервиса ServiceMonitor. По умолчанию: Нетcontroller.name#controller.kind#controller.annotations#аннотации для deployment или daemonset.controller.angiePro#controller.angieDashboard.enable#-angie-dashboard.controller.angieDashboard.port#-angie-dashboard-port.controller.angieDashboard.allowCidrs#-angie-dashboard-allow-cidrs.
Несколько IP или CIDR разделяются запятыми.controller.angieStatusPrometheus.enable#-angie-status-prometheus.controller.angieStatusPrometheus.port#[1024 - 65535].
Соответствует аргументу командной строки -angie-status-prometheus-port.controller.angieStatusPrometheus.allowCidrs#-angie-status-prometheus-allow-cidrs.
Несколько IP или CIDR разделяются запятыми.controller.angieStatusPrometheus.path#-angie-status-prometheus-path.controller.angieStatusPrometheus.service.create#controller.angieStatusPrometheus.service.labels#controller.angieStatusPrometheus.serviceMonitor.create#controller.angieStatusPrometheus.serviceMonitor.labels#controller.reloadTimeout#controller.hostNetwork#controller.dnsPolicy#controller.debug#error-log-level:
debug в ConfigMap через controller.config.entries.controller.logLevel#controller.image.digest#controller.image.repository#controller.image.tag#controller.image.pullPolicy#controller.lifecycle#controller.customConfigMap#controller.config.name#controller.config.annotations#controller.config.entries#controller.customPorts#controller.defaultTLS.cert#Base64 для сервера HTTPS по умолчанию.controller.defaultTLS.key#Base64 для сервера HTTPS по умолчанию.controller.defaultTLS.secret#<пространство имен>/<имя>.
Используется в качестве альтернативы указанию сертификата
и ключа с помощью параметров controller.defaultTLS.cert и
controller.defaultTLS.key.controller.wildcardTLS.cert#Base64 для каждого узла Ingress или
VirtualServer, у которого включен TLS, но не указан секрет. Если
параметр не задан, Angie прервет любую попытку установить TLS-соединение
для таких узлов Ingress или VirtualServer.controller.wildcardTLS.key#Base64 для каждого узла Ingress или VirtualServer,
у которого включен TLS, но не указан секрет. Если параметр не задан,
Angie прервет любую попытку установить TLS-соединение для таких узлов
Ingress или VirtualServer.controller.wildcardTLS.secret#<пространство имен>/<имя>.
Используется в качестве альтернативы указанию сертификата и ключа с
помощью параметров controller.wildcardTLS.cert и
controller.wildcardTLS.key.controller.nodeSelector#controller.terminationGracePeriodSeconds#controller.tolerations#controller.affinity#controller.topologySpreadConstraints#controller.env#controller.volumes#controller.volumeMounts#controller.initContainers#controller.extraContainers#controller.resources#controller.replicaCount#controller.ingressClass#controller.setAsDefaultIngress#controller.watchNamespace#controller.watchNamespaceLabel. Обратите внимание, что при настройке
нескольких пространств имен с использованием опции Helm cli --set
строка должна быть заключена в двойные кавычки, а запятые экранированы с
помощью обратной косой черты - например, --set
controller.watchNamespace="default\,anic".controller.watchNamespaceLabel#controller.watchNamespace
настройка.controller.watchSecretNamespace#controller.watchNamespace и controller.watchNamespaceLabel. Обратите
внимание, что при настройке нескольких пространств имен с использованием
опции Helm cli --set строка должна быть заключена в двойные кавычки, а
запятые экранированы с помощью обратной косой черты - например, --set
controller.watchSecretNamespace="default\,angie-ingress".controller.enableCustomResources#controller.enableTLSPassthrough#controller.enableCertManager#controller.enableCustomResources.controller.enableExternalDNS#controller.globalConfiguration.create#controller.globalConfiguration.spec#controller.enableSnippets#controller.healthStatus#controller.healthStatusURI#controller.HealthStatus.controller.angieStatus.enable#controller.angieStatus.port#controller.angieStatus.allowCidrs#controller.priorityClassName#controller.service.create#controller.service.type#controller.service.externalTrafficPolicy#controller.service.annotations#controller.service.extraLabels#controller.service.loadBalancerIP#controller.service.type должно быть установлено значение
LoadBalancer. Поставщик облачных услуг должен поддерживать эту
функцию.controller.service.externalIPs#controller.service.loadBalancerSourceRanges#controller.service.type должно быть установлено значение
LoadBalancer. Поставщик облачных услуг должен поддерживать эту
функцию.controller.service.name#controller.service.customPorts#controller.service.httpPort.enable#controller.service.httpPort.port#controller.service.httpPort.nodePort#controller.service.type
должно быть установлено значение NodePort.controller.service.httpPort.targetPort#controller.service.httpsPort.enable#controller.service.httpsPort.port#controller.service.httpsPort.nodePort#controller.service.type
должно быть установлено значение NodePort.controller.service.httpsPort.targetPort#controller.serviceAccount.annotations#controller.serviceAccount.name#controller.serviceAccount.imagePullSecretName#controller.reportIngressStatus.enable#controller.reportIngressStatus.ExternalService, либо
через controller.reportIngressStatus.ingressLink, либо через запись
external-status-address в ConfigMap через controller.config.entries.controller.config.entries.external-status-address имеет
приоритет над остальными.controller.reportIngressStatus.externalService#controller.reportIngressStatus.enable
должно быть задано как true. Значение по умолчанию создается
автоматически и включается, когда controller.service.create имеет
значение true, а controller.service.type - значение LoadBalancer.controller.reportIngressStatus.ingressLink#controller.reportIngressStatus.enable
должно быть задано как true.controller.reportIngressStatus.enableLeaderElection#controller.reportIngressStatus.enable должно быть задано как true.truecontroller.reportIngressStatus.leaderElectionLockName#true.controller.reportIngressStatus.annotations#controller.pod.annotations#controller.pod.extraLabels#controller.readyStatus.enable#"/angie-ready". Конечная точка
возвращает код успешного завершения, если Angie загрузил всю
конфигурацию после запуска. Этим также настраивается проверка готовности
для подов ANIC, которая использует конечную точку
готовности.truecontroller.readyStatus.port#8081controller.readyStatus.initialDelaySeconds#0controller.enableLatencyMetrics#prometheus.create.falsecontroller.minReadySeconds#0controller.autoscaling.enabled#falsecontroller.autoscaling.annotations#controller.autoscaling.minReplicas#1controller.autoscaling.maxReplicas#3controller.autoscaling.targetCPUUtilizationPercentage#50controller.autoscaling.targetMemoryUtilizationPercentage#50controller.podDisruptionBudget.enabled#falsecontroller.podDisruptionBudget.annotations#controller.strategy#controller.disableIPV6#falsecontroller.readOnlyRootFilesystem#falserbac.create#trueprometheus.create#trueprometheus.port#9113prometheus.scheme#httpprometheus.secret#prometheus.service.create#falseprometheus.service.labels#prometheus.serviceMonitor.create#falseprometheus.serviceMonitor.labels#