Известные проблемы#

При обновлении платформы Astra Automation в кластере Kubernetes до версии 2.1 могут возникать проблемы, которые будут исправлены в последующих версиях продукта. В связи с этим обновление платформы рекомендуется выполнять только после ознакомления с приведенными ниже особенностями.

Список известных проблем:

Сценарий размещения образов не устанавливает rsync#

Сценарий tools/load-containerd-images.yml содержит задачу автоматической установки сервиса rsync на узлы кластера, однако на ansible-core версии 2.12 или новее задача не срабатывает: из-за ошибки шаблонизации переменная, определяющая необходимость установки, всегда принимает истинное значение. Если rsync отсутствует на узле, сценарий завершается с ошибкой:

sudo: rsync: command not found
rsync: connection unexpectedly closed ... error in rsync protocol data stream (code 12)

Для устранения проблемы установите 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).