Быстрое развертывание платформы#

Быстрое развертывание платформы Astra Automation предназначено для получения оперативного доступа к системе и ознакомления с ее базовыми возможностями. Для этого в качестве рабочей среды предлагаем использовать Kubernetes Minikube.

Предупреждение

Использование Minikube для развертывания Astra Automation допустимо только в ознакомительных целях и не предназначено для эксплуатации в промышленных рабочих окружениях.

Предварительные требования#

Для развертывания платформы потребуются дополнительные аппаратные и программные ресурсы.

Программное обеспечение платформы#

Для использования платформы необходима подписка. Чтобы получить пробную подписку, перейдите на сайт Astra Automation и нажмите кнопку Запросить пробную версию платформы бесплатно.

Развертывание выполняется с помощью архивированного пакета, доступного в Личном кабинете.

Рабочее окружение#

Для развертывания платформы понадобится узел в виде ВМ или физического компьютера, обладающий характеристиками не ниже указанных:

Характеристика

Значение

Количество ядер CPU

8

Объем RAM, ГБ

16

Свободное дисковое пространство, ГБ

50

Вы можете использовать любую операционную систему, в которой можно установить Minikube. Для данной демонстрации использовалась ВМ с установленной операционной системой Astra Linux Special Edition 1.8.4 в базовом режиме защищенности («Орел»). Для настройки узла необходим доступ к нему по протоколу SSH.

Подготовка узла#

Подготовьте узел следующим образом:

  1. Подключитесь к узлу по SSH.

  2. Установите и настройте систему Docker:

    sudo apt update && sudo apt install -y make git curl docker.io docker-compose docker-buildx
    
    sudo usermod -aG docker $USER && newgrp docker
    
  3. Установите систему оркестрации контейнеров Minikube:

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    chmod +x minikube
    sudo install minikube /usr/local/bin/
    
  4. Установите утилиту управления kubectl:

    curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    chmod +x kubectl
    sudo mv kubectl /usr/local/bin/
    

Подготовка Kubernetes#

Переведите рабочую среду в активное состояние:

  1. Убедитесь, что вы подключены к целевому узлу по SSH.

  2. Запустите Minikube, обеспечив следующую настройку:

    • выделение требуемых вычислительных ресурсов;

    • установку контроллера ingress для обеспечения доступа к интерфейсу платформы;

    • доступ к реестру контейнерных образов по протоколу HTTP (без TLS).

    Если Minikube развернут локально и вы планируете подключаться к интерфейсу по адресу вида https://<minikube_ip>:<nodeport_https>, используйте следующую команду:

    minikube start --cpus=6 --memory=12288 --disk-size=50g \
      --addons=ingress \
      --insecure-registry="<minikube_ip>:<nodeport_https>"
    

    Здесь:

    • <minikube_ip> – IP-адрес узла Minikube (обычно 192.168.49.2);

    • <nodeport_https> – HTTPS порт сервиса ingress-nginx-controller (обычно 31569).

    Отмеченный выше IP-адрес назначается на узел Minikube (Docker container) по умолчанию c использованием Docker как драйвера на вновь созданной ВМ согласно приведенным ранее шагам. Проверить адрес узла Minikube можно командой minikube ip только после старта Minikube. Если эти адреса не совпадают, необходимо остановить Minikube командой minikube stop, удалить все настройки командой minikube delete и повторить запуск с исправленным значением адреса. При необходимости можно назначить IP-адрес из свободного диапазона адресов с помощью аргумента --static-ip в команде запуска.

    Если Minikube развернут на внешней ВМ и вы планируете подключаться к интерфейсу по адресу вида https://<ip_vm>:8443, используйте следующую команду:

    minikube start --cpus=6 --memory=12288 --disk-size=50g \
      --addons=ingress \
      --insecure-registry="<ip_vm>:8443"
    

    Здесь <ip_vm> – IP-адрес внешней ВМ, на которой запускается Minikube.

    Параметр --insecure-registry задает адрес реестра контейнерных образов, к которому разрешено обращаться по протоколу HTTP без использования TLS.

    Предупреждение

    Использование подключения без TLS является упрощением, допустимым только для демонстрационных и тестовых развертываний.

    В производственной среде необходимо использовать реестр контейнерных образов, доступный по HTTPS, и не применять параметр --insecure-registry.

  3. Проверьте состояние Minikube:

    minikube status
    

    Команда выводит на экран терминала следующие данные:

    minikube
    type: Control Plane
    host: Running
    kubelet: Running
    apiserver: Running
    kubeconfig: Configured
    

Развертывание платформы#

Выполните следующие шаги для развертывания платформы:

  1. Распакуйте архив платформы в рабочем каталоге:

    mkdir astra-automation-setup
    
    tar -xvzf  <package_name> -C astra-automation-setup/ && cd astra-automation-setup
    

    Здесь <package_name> – название архивированного файла, загруженного из Личного кабинета, например aa-kubernetes-bundle-2-0-upd1.tar.gz.

    Структура пакета имеет следующий вид:

    ├── examples/
    │   ├── kubernetes/
    │   └── minikube/
    └── operators/
        ├── aa-operator-deploy.yaml
        ├── ac-operator-deploy.yaml
        ├── eda-operator-deploy.yaml
        └── pah-operator-deploy.yaml
    
  2. Установите операторы платформы:

    kubectl apply -f operators/
    

    Создаются контейнеры и сервисы Kubernetes в пространстве astra-automation. Это потребует несколько минут.

    Для проверки состояния подов используйте следующую команду:

    kubectl -n astra-automation get pods -w
    

    Поды должны быть в состоянии running.

  3. Перед развертыванием определите адреса, по которым будет выполняться доступ к интерфейсу платформы.

    В среде Minikube доступ к сервисам осуществляется напрямую по IP-адресу узла.

    Получите IP-адрес Minikube:

    minikube ip
    

    Пример вывода:

    192.168.49.2
    

    Добавьте этот адрес в параметр CSRF_TRUSTED_ORIGINS в манифесте платформы, выполнив следующие действия:

    1. Получите URL и порты сервиса ingress-nginx-controller:

      minikube service ingress-nginx-controller -n ingress-nginx --url
      

      Пример вывода:

      http://192.168.49.2:30641
      http://192.168.49.2:31569
      

      Команда выводит два URL:

      • первый – для HTTP (NodePort сервиса, соответствующий порту 80);

      • второй – для HTTPS (NodePort сервиса, соответствующий порту 443).

    2. Откройте файл examples/minikube/minimal/minikube-minimal-aa-demo.yaml и добавьте в конец блока spec манифеста блок extra_settings.

      Пример:

      extra_settings:
        - setting: CSRF_TRUSTED_ORIGINS
          value:
            - 'https://<minikube_ip>:<nodeport_https>'
            - 'https://<ip_vm>:8443'
      

      Здесь:

      • https://<minikube_ip>:<nodeport_https> – адрес для локального доступа:

      • <minikube_ip> – IP-адрес узла Minikube (обычно 192.168.49.2);

      • <nodeport_https> – порт HTTPS сервиса ingress-nginx-controller (из второго URL, полученного ранее, например 31569).

      • https://<ip_vm>:8443 – адрес для удалённого доступа. Укажите эту строку только если Minikube развернут на внешней виртуальной машине.

      • <ip_vm> – IP-адрес виртуальной машины.

  4. (Опционально) Загрузите пользовательские контейнерные образы.

    В среде Minikube отсутствует полноценный внешний реестр контейнеров с поддержкой TLS. Для загрузки образов используется объект маршрутизации ingress, доступный по HTTP.

    Поскольку соединение выполняется по HTTP, данные передаются в открытом виде. Поэтому при работе с Podman необходимо явно отключить проверку TLS (--tls-verify=false). Для этого выполните следующие действия:

    1. Добавьте метку для образа:

      podman tag hub.astra-automation.ru/aa-2.0/aa-minimal-ee:latest \
      <minikube_ip>:<nodeport_https>/aa-2.0/aa-minimal-ee:latest
      
    2. Выполните аутентификацию:

      podman login <minikube_ip>:<nodeport_https> --tls-verify=false
      
    3. Загрузите образ:

      podman push <minikube_ip>:<nodeport_https>/aa-2.0/aa-minimal-ee:latest --tls-verify=false
      
  5. Запустите развертывание платформы в минимальном составе:

    kubectl apply -n astra-automation -f examples/minikube/minimal/minikube-minimal-aa-demo.yaml
    

    На развертывание потребуется несколько минут. Дождитесь готовности подов платформы:

    kubectl -n astra-automation get pods -w
    

    Поды должны быть в состоянии Running или Completed.

  6. Проверьте доступность объекта платформы ingress:

    kubectl get ingress aa-demo -n astra-automation
    

    Пример вывода:

    NAME      CLASS   HOSTS   ADDRESS        PORTS   AGE
    aa-demo   nginx   *       192.168.49.2   80      28m
    

    Значение * в поле HOSTS означает, что ingress принимает запросы по IP-адресу без использования доменного имени.

    Важно

    Если вы добавили или изменили extra_settings после первичного развертывания, примените манифест повторно и подождите несколько минут, пока оператор применит изменения:

    kubectl apply -n astra-automation -f examples/minikube/minimal/minikube-minimal-aa-demo.yaml
    

Примечание

Если по какой-либо причине надо повторить все сначала, удалите все объекты, созданные в Minikube:

minikube stop && minikube delete --all --purge

Получение доступа к интерфейсу платформы#

Для доступа к единому интерфейсу платформы процедура развертывания создает учетную запись admin, имеющую случайным образом сгенерированный пароль. Для получения пароля воспользуйтесь следующей командой:

kubectl -n astra-automation get secret aa-demo-admin-password \
        -o jsonpath="{.data.password}" | base64 -d

Сервис (контроллер Kubernetes) ingress доступен в пространстве ingress-nginx. Получите сведения о нем:

minikube service ingress-nginx-controller -n ingress-nginx

Таблица в выходных данных показывает соответствие между URL, по которому доступен сервис, и внутренним портом пользовательского интерфейса:

┌───────────────┬──────────────────────────┬─────────────┬───────────────────────────┐
│   NAMESPACE   │           NAME           │ TARGET PORT │            URL            │
├───────────────┼──────────────────────────┼─────────────┼───────────────────────────┤
│ ingress-nginx │ ingress-nginx-controller │ http/80     │ http://192.168.49.2:32390 │
│               │                          │ https/443   │ http://192.168.49.2:31668 │
└───────────────┴──────────────────────────┴─────────────┴───────────────────────────┘
[ingress-nginx ingress-nginx-controller http/80
https/443 http://192.168.49.2:32390
http://192.168.49.2:31668]

В данном примере установлены следующие перенаправления:

192.168.49.2 является адресом узла Minikube. Если вы устанавливали все на локальной машине, то можете использовать эти URL в вашем браузере.

Если Minikube развернут на внешней ВМ, обеспечьте доступ к интерфейсу путем переназначения порта TCP (port forwarding):

kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8443:443 --address=0.0.0.0

После этого интерфейс будет доступен из браузера по адресу https://<ip_vm>:8443.

Первоначальная настройка платформы#

Первоначальная настройка состоит из следующих шагов:

  1. При первом подключении браузер выводит предупреждение о том, что подключение не защищено. Это нормальное поведение, поскольку для защиты подключения контроллер использует самоподписанный сертификат. При использовании браузера на основе Chromium выполните следующие действия:

    1. Нажмите кнопку Дополнительные.

    2. Нажмите ссылку Перейти на сайт <IP> (небезопасно).

  2. Для аутентификации в интерфейсе платформы введите название учетной записи admin и пароль, определенный ранее.

  3. Активируйте лицензию на продукт, следуя инструкции.

Заключение#

В этом сценарии вы познакомились с основными шагами по развертыванию платформы и его использованию для настройки управляемых узлов. Из всей последовательности шагов важно выделить следующие действия:

  • Обеспечение предварительных требований.

  • Установка операторов в окружении Kubernetes.

  • Развертывание платформы с помощью операторов.

  • Обеспечение доступа к интерфейсу платформы.

  • Активизация лицензии на использование платформы.