Установка с помощью 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 pull <ваш_репозиторий>/<образ_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 |
| Время ожидания в миллисекундах, в течение которого ANIC будет ожидать успешной перезагрузки Angie после изменения или при начальном запуске. | 60000 |
| Позволяет подам ANIC использовать сетевое пространство имен хоста. | false |
| Политика DNS для подов ANIC. | ClusterFirst |
| Включает отладку для Angie. Требуется задать значение | false |
| Уровень ведения журнала ANIC. | 1 |
| Дайджест образа ANIC. | Нет |
| Репозиторий образов ANIC. | myregistry.host.ru/angie-ingress |
| Тег образа ANIC. | 0.1.2 |
| Политика скачивания образа 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. | "" |
| Имя serviceMonitor. | Создается автоматически |
| Создает пользовательский ресурс ServiceMonitor. | false |
| Метки объектов Kubernetes для применения к объекту serviceMonitor. | "" |
| Набор меток, позволяющих выбирать конечные точки для serviceMonitor. | "" |
| Список конечных точек, разрешенных в составе этого serviceMonitor. | "" |
| Добавляет в поле адреса в статусе ресурсов 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. | {} |
| Количество подов ANIC, которые должны быть доступны.
Взаимоисключающая с |
|
| Количество подов ANIC, которые могут быть недоступны.
Взаимоисключающая с | 0 |
| Задает стратегию замены старых подов новыми. Документация по стратегии обновления развертывания и стратегии обновления daemonset | {} |
| В явной форме отключает прослушиватели IPV6 для узлов, которые не поддерживают стек IPV6. |
|
| Настраивает корневую файловую систему как доступную только для чтения и добавляет тома для временных данных. |
|
| Настраивает RBAC. |
|
| Публикует метрики Angie в формате Prometheus. |
|
| Настраивает порт для получения метрик. |
|
| Настраивает схему HTTP, используемую для подключений к конечной точке Prometheus. |
|
| Пространство имен или имя TLS-секрета Kubernetes. Если секрет указан, он используется для защиты конечной точки Prometheus с помощью TLS-соединений. | "" |