Быстрое развертывание платформы#
Быстрое развертывание платформы Astra Automation предназначено для получения оперативного доступа к системе и ознакомления с ее базовыми возможностями. Для этого в качестве рабочей среды будем использовать Kubernetes Minikube.
Предупреждение
Использование Minikube для развертывания Astra Automation допустимо только в ознакомительных целях и не предназначено для эксплуатации в промышленных рабочих окружениях.
Предварительные требования#
Для развертывания платформы потребуются дополнительные аппаратные и программные ресурсы.
Программное обеспечение платформы#
Для использования платформы необходима подписка. Чтобы получить пробную подписку, перейдите на сайт Astra Automation и нажмите кнопку Запросить пробную версию платформы бесплатно.
Развертывание выполняется с помощью архивированного пакета, доступного в Личном кабинете:
aa-kubernetes-bundle-<version>.tar.gz– минимальный пакет для развертывания основной части по сети через интернет;aa-kubernetes-bundle-<version>-offline.tar.gz– полный пакет для развертывания в сегменте сети, изолированном от интернета.
Здесь <version> – версия платформы, например 2.0-upd2.
Рабочее окружение#
Для развертывания платформы понадобится узел в виде ВМ или физического компьютера, обладающий характеристиками не ниже указанных.
Примечание
Для надежности создайте новую ВМ под управлением операционной системы Astra Linux Special Edition 1.8.4 с приведенными далее параметрами.
Характеристика |
Значение |
|---|---|
Количество ядер CPU |
8 |
Объем RAM, ГБ |
16 |
Тип диска |
SSD |
Объем диска, ГБ |
50 |
Для настройки узла необходим доступ к нему по протоколу SSH.
Подготовка узла#
Подготовьте узел следующим образом:
Подключитесь к узлу по SSH.
Установите и настройте систему Docker:
sudo apt update && sudo apt install -y make git curl docker.io docker-compose docker-buildx
sudo systemctl enable --now docker sudo usermod -aG docker $USER && newgrp docker
Установите систему оркестрации контейнеров Minikube в контейнере:
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube sudo install minikube /usr/local/bin/
Установите утилиту управления
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#
Переведите рабочую среду в активное состояние:
Убедитесь, что вы подключены к целевому узлу по SSH.
Запустите Minikube, обеспечив следующую настройку:
выделение требуемых вычислительных ресурсов;
установку контроллера Ingress для обеспечения доступа к интерфейсу платформы;
доступ к реестру контейнерных образов в Automation Hub (который будет развернут) со стороны других компонентов платформы без проверки сертификата TLS (используется аргумент
--insecure-registry) при создании подов.
minikube start --cpus=6 --memory=12288 --disk-size=50g \ --addons=ingress \ --insecure-registry="192.168.49.2" --insecure-registry="<vm_ip>:8443"
В этой команде аргумент insecure-registry обозначает два IP-адреса как незащищенные, то есть не подлежат проверке через TLS:
Отмеченный выше IP-адрес 192.168.49.2 назначается на узел Minikube (Docker container) по умолчанию c использованием Docker как драйвера на вновь созданной ВМ согласно приведенным ранее шагам. Проверить адрес узла Minikube можно командой
minikube ipтолько после старта Minikube. Если эти адреса не совпадают, необходимо остановить Minikube командойminikube stop, удалить все настройки командойminikube deleteи повторить запуск с исправленным значением адреса. При необходимости можно назначить IP-адрес из свободного диапазона адресов с помощью аргумента--static-ipв команде запуска.Второй адрес является комбинацией IP-адреса ВМ и порта TCP 8443, которые в дальнейшем будут перенаправлены на IP-адрес контроллера Ingress развернутого приложения.
Предупреждение
Использование подключения без проверки сертификатов TLS является упрощением, допустимым только для демонстрационных и тестовых развертываний.
В производственной среде необходимо использовать реестр контейнерных образов, доступный по HTTPS, и не применять параметр
--insecure-registry.Проверьте состояние Minikube:
minikube statusКоманда выводит на экран терминала следующие данные:
Развертывание платформы#
Выполните следующие шаги для развертывания платформы:
Распакуйте архив платформы в рабочем каталоге:
mkdir astra-automation-setuptar -xvzf <package_name> -C astra-automation-setup/ && cd astra-automation-setup
Здесь <package_name> – название архивированного файла, загруженного из Личного кабинета.
Структура пакета имеет следующий вид:
├── examples/ │ ├── kubernetes/ │ └── minikube/ └── operators/ ├── aa-operator-deploy.yaml ├── ac-operator-deploy.yaml ├── eda-operator-deploy.yaml └── pah-operator-deploy.yamlУстановите операторы платформы:
kubectl apply -f operators/
Kubernetes создает контейнеры и сервисы в пространстве
astra-automation. Это потребует несколько минут.Для проверки состояния подов используйте следующую команду с циклической проверкой (аргумент
-w, watch):kubectl -n astra-automation get pods -w
Дождитесь, пока поды перейдут в состояние
running.Примечание
Команда не завершается автоматически. Нажмите CTRL+C для ее завершения.
Добавьте в параметр
CSRF_TRUSTED_ORIGINSманифеста платформы те URL, которым будет доверять Ingress. Для этого откройтеexamples/minikube/minimal/minikube-minimal-aa-demo.yamlв текстовом редакторе и добавьте в конец блокаspecманифеста блокextra_settings.extra_settings: - setting: CSRF_TRUSTED_ORIGINS value: - 'https://192.168.49.2' - 'https://<vm_ip>:8443'
Здесь:
https://192.168.49.2– URL для локального доступа:https://<vm_ip>:8443– URL для удаленного доступа, где <vm_ip> – IP-адрес ВМ. Настройка удаленного доступа будет приведена позднее.
Запустите развертывание платформы в минимальном составе:
kubectl apply -n astra-automation -f examples/minikube/minimal/minikube-minimal-aa-demo.yaml
На развертывание потребуется несколько минут. Дождитесь готовности подов платформы (обычно операция требует 15–20 мин):
kubectl -n astra-automation get pods -w
Поды должны быть в состоянии
RunningилиCompleted.Проверьте доступность объекта Ingress платформы:
kubectl -n astra-automation get ingress aa-demo
Пример вывода:
Значение
*в поле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; echo
Проверьте доступность сервиса (контроллер 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:30132 │
│ │ │ https/443 │ http://192.168.49.2:31272 │
└───────────────┴──────────────────────────┴─────────────┴───────────────────────────┘
Из таблицы следует, что при настройке собственного реверсного NAT трафик с порта 443 следует направлять на порт (node port) 31272, к которому привязан Ingress.
Для доступа из ВМ, на которой развернут Minikube, используйте прямое обращение по IP-адресу контейнера https://192.168.49.2.
Если Minikube развернут на внешней ВМ, предоставьте доступ к шлюз платформы путем переназначения порта TCP (port forwarding) средствами Kubernetes:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8443:443 --address=0.0.0.0
Перенаправление действует пока активен процесс, созданный этой командой. Если надо обеспечить доступ на более длительные период настройте реверсный NAT.
После этого шлюз платформы Astra Automation будет доступен из браузера по адресу https://${VM_IP}:8443.
Первоначальная настройка платформы#
Первоначальная настройка состоит из следующих шагов:
При первом подключении браузер выводит предупреждение о том, что подключение не защищено. Это нормальное поведение, поскольку для защиты подключения контроллер использует самоподписанный сертификат. При использовании браузера на основе Chromium выполните следующие действия:
Нажмите кнопку Дополнительные.
Нажмите ссылку Перейти на сайт <IP> (небезопасно).
Для аутентификации в интерфейсе платформы введите название учетной записи
adminи пароль, определенный ранее.Активируйте лицензию на продукт, следуя инструкции.
(По желанию) Настройка реверсного NAT#
Если необходимо настроить перенаправление трафика на постоянной основе, создайте реверсный NAT в собственном фильтре custom_nat, чтобы не вносить изменения в фильтр, настроенный для Docker.
Для этого загрузите в ВМ файл configure-minikube-nft.sh и запустите его на исполнение:
chmod +x configure-minikube-nft.sh
sudo ./configure-minikube-nft.sh --enable-local-output
Шлюз определяет основные переменные автоматически, но вы можете подставить свои значения:
VM_IP – IP-адрес ВМ;
MINIKUBE_NODEPORT – порт, на котором работает контроллер Ingress доступен по HTTPS;
BRIDGE – название моста сервиса Docker.
Примечание
В зависимости от реализации VM_IP может быть публичным или приватным адресом. Например, в Yandex Cloud реверсный NAT перенаправляет публичный IP-адрес, выделяемый динамически, на приватный постоянный IP-адрес ВМ. В таком случае вместо VM_IP необходимо подставлять этот приватный адрес. Скрипт определяет это автоматически путем нахождения IP-адреса, который закреплен за ВМ.
После выполнения скрипта проверьте настройку шлюза:
дополнительный NAT:
sudo nft list table ip custom_nat
Пример вывода на экране:
table ip custom_nat { chain prerouting { type nat hook prerouting priority dstnat; policy accept; ip daddr 10.128.0.23 tcp dport 8443 dnat to 192.168.49.2:32377 } chain postrouting { type nat hook postrouting priority srcnat; policy accept; ip saddr 192.168.49.0/24 masquerade } chain output { type nat hook output priority -100; policy accept; ip daddr 10.128.0.23 tcp dport 8443 dnat to 192.168.49.2:32377 } }фильтр Docker:
sudo nft list chain ip filter DOCKER-USER
Пример вывода на экране:
table ip filter { chain DOCKER-USER { counter packets 366018 bytes 3455644609 return oifname "br-d3f18ae5d896" ip daddr 192.168.49.2 tcp dport 32377 counter packets 0 bytes 0 accept } }
Если необходимо восстановить систему после рестарта ВМ, дождитесь перехода сервиса Docker в активное состояние и запустите сервис Minikube:
minikube start
Заключение#
В этом сценарии вы познакомились с основными шагами по развертыванию платформы и его использованию для настройки управляемых узлов. Из всей последовательности шагов важно выделить следующие действия:
Обеспечение предварительных требований.
Установка операторов в окружении Kubernetes.
Развертывание платформы с помощью операторов.
Обеспечение доступа к интерфейсу платформы.
Активизация лицензии на использование платформы.