Известные проблемы#
При обновлении платформы Astra Automation в кластере Kubernetes до версии 2.1 могут возникать проблемы, которые будут исправлены в последующих версиях продукта.
В связи с этим обновление платформы рекомендуется выполнять только после ознакомления с приведенными ниже особенностями.
Список известных проблем:
Сценарий размещения образов не устанавливает rsync#
Сценарий tools/load-containerd-images.yml содержит задачу автоматической установки сервиса rsync на узлы кластера, однако на ansible-core версии 2.12 или новее задача не срабатывает: из-за ошибки шаблонизации переменная, определяющая необходимость установки, всегда принимает истинное значение.
Если rsync отсутствует на узле, сценарий завершается с ошибкой:
Для устранения проблемы установите rsync на все узлы, как описано в стадии размещения образов, и запустите сценарий повторно.
Сценарий идемпотентен, его повторный запуск безопасен.
Поле api.replicas не масштабирует Automation Dashboard#
В примерах манифестов из установочного пакета для масштабирования компонента Automation Dashboard указано поле api.replicas.
Оператор dashboard-operator не применяет это поле, и объект Deployment компонента остается в одной реплике.
Для масштабирования задайте поле replicas во вложенной секции dashboard (параметры пода компонента):
dashboard:
disabled: false
name: dashboard-demo
dashboard:
replicas: 3
Все реплики работают с одной СУБД PostgreSQL компонента.
Automation Dashboard недоступен при использовании контроллера Traefik#
Проблема проявляется в кластерах, где в качестве классического контроллера Ingress вместо ingress-nginx используется Traefik.
Все компоненты платформы, кроме Automation Dashboard, работают с Traefik штатно.
Automation Dashboard недоступен: по адресу /dashboard открывается интерфейс платформы со страницей об отсутствии запрошенного адреса, а не интерфейс компонента.
Причина: оператор aa-operator создает объект Ingress компонента с аннотациями перезаписи пути, специфичными для ingress-nginx, и путем в виде регулярного выражения (пример объекта приведен в стадии обновления манифеста).
Traefik игнорирует аннотации других контроллеров и трактует такой путь как литеральный префикс, поэтому маршрут не срабатывает, а запрос обрабатывает общий маршрут платформы.
Изменять этот объект Ingress вручную бесполезно: оператор восстанавливает его при каждом выполнении процесса Reconciliation.
Для устранения проблемы создайте отдельные объекты Ingress и Middleware – объекты с другими названиями оператор не изменяет:
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
name: dashboard-stripprefix
namespace: <namespace>
spec:
stripPrefix:
prefixes:
- /dashboard
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dashboard-traefik
namespace: <namespace>
annotations:
traefik.ingress.kubernetes.io/router.middlewares: <namespace>-dashboard-stripprefix@kubernetescrd
spec:
ingressClassName: <ingress_class>
rules:
- host: <hostname>
http:
paths:
- path: /dashboard
pathType: Prefix
backend:
service:
name: <dashboard_service>
port:
number: 8053
tls:
- hosts:
- <hostname>
secretName: <tls_secret>
Здесь:
<namespace>– пространство имен платформы;<ingress_class>– класс Ingress, который используют рабочие объекты Ingress платформы;<hostname>– доменное имя платформы;<dashboard_service>– название сервиса Automation Dashboard; оно совпадает со значением поляdashboard.nameманифеста приложения, а если поле не задано – имеет вид<название ресурса AstraAutomation>-dashboard; узнать его можно командойkubectl -n <namespace> get svc; порт сервиса всегда8053;<tls_secret>– название секрета TLS платформы.
Перед применением убедитесь в следующем:
название объекта Ingress не совпадает с названием объекта, созданного оператором;
префикс в аннотации
router.middlewares– это пространство имен, в котором создан объект Middleware;у Traefik включен провайдер CRD (аргумент
--providers.kubernetescrd); для Traefik второй версии используйтеapiVersion: traefik.containo.us/v1alpha1.
При неверном названии сервиса или недоступной ссылке на объект Middleware Traefik отбрасывает весь маршрут без видимых изменений в кластере.
Причина видна в журнале пода Traefik: Cannot create service: service not found или middleware ... does not exist.
Созданные объекты не мешают последующим обновлениям платформы: оператор их не изменяет. После исправления проблемы в последующей версии платформы удалите объекты:
kubectl -n <namespace> delete ingress dashboard-traefik
kubectl -n <namespace> delete middleware dashboard-stripprefix
Примечание
Ошибка Obtaining of AAP token failed после входа в Automation Dashboard не связана с контроллером Ingress: это известное ограничение выдачи токена доступа для внешних пользователей (SAML, OIDC).