Настройка и запуск#
На данном этапе выполняется финальная настройка и запуск всей платформы в Kubernetes.
Очистка данных шлюза#
После выполненной работы база данных шлюза содержит информацию о маршрутах, путях к сервисам и портах TCP, актуальных для исходного окружения, использующего ВМ. В Kubernetes маршрутизация осуществляется иным способом, поэтому эти данные должны быть удалены, чтобы операторы могли создать корректные маршруты и сервисные записи заново.
Очистка выполняется внутри ранее созданного временного пода postgres-restore-temp.
Подключитесь к PostgreSQL:
psql -h aa-demo-postgres-15 -U postgres -d automationgateway
Выполните последовательно следующие SQL-запросы:
Удаление дополнительных маршрутов:#DELETE FROM public.aap_gateway_api_additionalroute; DELETE FROM public.aap_gateway_api_servicenode;
Удаление маршрутов API-сервисов:#DELETE FROM public.aap_gateway_api_serviceapiroute;
Удаление всех маршрутов:#DELETE FROM public.aap_gateway_api_route;
Удаление HTTP-портов API:#DELETE FROM public.aap_gateway_api_httpport WHERE is_api_port = true;
Убедитесь, что таблицы очищены:
SELECT COUNT(*) FROM public.aap_gateway_api_additionalroute; SELECT COUNT(*) FROM public.aap_gateway_api_serviceapiroute; SELECT COUNT(*) FROM public.aap_gateway_api_route; SELECT COUNT(*) FROM public.aap_gateway_api_httpport WHERE is_api_port = true;
Каждый запрос должен вернуть значение
0.Выйдите из консоли PostgreSQL, выполнив следующую команду SQL:
\q
Выйдите из временного пода:
exit
Синхронизация подписных ключей сервисов с секретами Kubernetes#
При восстановлении базы данных Platform Gateway из окружения ВМ в таблицу aap_gateway_api_servicekey из исходной платформы попадают ключи для подписи.
Сервисы Private Automation Hub, Automation Controller и Event-Driven Automation в Kubernetes подписывают служебные токены ключами из секрета aa-demo-resource-server.
Если значения в таблице aap_gateway_api_servicekey не совпадают со значениями из секрета aa-demo-resource-server, Platform Gateway отклоняет запросы сервисов с ошибкой 401 Unauthorized.
В журнале Platform Gateway при этом появляется сообщение service_token_auth: Invalid token для запроса /api/gateway/v1/service-index/metadata/.
Выполните команды на узле, где доступен kubectl.
Временный под postgres-restore-temp должен быть запущен, а операторы и компоненты платформы должны быть остановлены.
Примечание
В командах используется название сервиса внутренней PostgreSQL aa-demo-postgres-15.
Если базы данных восстанавливаются во внешнюю PostgreSQL, замените значение аргумента -h на адрес внешнего сервера и при необходимости добавьте аргумент -p с номером порта.
Private Automation Hub:
kubectl exec -i -n astra-automation postgres-restore-temp -- \ psql -h aa-demo-postgres-15 -U postgres -d automationgateway \ -v val="$(kubectl get secret aa-demo-resource-server -n astra-automation -o jsonpath='{.data.galaxy_resource_server_secret}' | base64 -d)" <<'SQL' UPDATE aap_gateway_api_servicekey sk SET secret = :'val' FROM aap_gateway_api_servicecluster sc WHERE sc.id = sk.service_cluster_id AND sc.name = 'hub' AND sk.is_active; SQL
Automation Controller:
kubectl exec -i -n astra-automation postgres-restore-temp -- \ psql -h aa-demo-postgres-15 -U postgres -d automationgateway \ -v val="$(kubectl get secret aa-demo-resource-server -n astra-automation -o jsonpath='{.data.controller_resource_server_secret}' | base64 -d)" <<'SQL' UPDATE aap_gateway_api_servicekey sk SET secret = :'val' FROM aap_gateway_api_servicecluster sc WHERE sc.id = sk.service_cluster_id AND sc.name = 'controller' AND sk.is_active; SQL
Event-Driven Automation:
kubectl exec -i -n astra-automation postgres-restore-temp -- \ psql -h aa-demo-postgres-15 -U postgres -d automationgateway \ -v val="$(kubectl get secret aa-demo-resource-server -n astra-automation -o jsonpath='{.data.eda_resource_server_secret}' | base64 -d)" <<'SQL' UPDATE aap_gateway_api_servicekey sk SET secret = :'val' FROM aap_gateway_api_servicecluster sc WHERE sc.id = sk.service_cluster_id AND sc.name = 'eda' AND sk.is_active; SQL
После выполнения каждой команды должен быть получен следующий результат:
Проверьте, что хеши подписных ключей в таблице Platform Gateway соответствуют значениям из секрета aa-demo-resource-server:
Получите хеши активных ключей, сохраненных в базе данных Platform Gateway:
kubectl exec -n astra-automation postgres-restore-temp -- \ psql -h aa-demo-postgres-15 -U postgres -d automationgateway -tAc \ "SELECT sc.name, md5(sk.secret) FROM aap_gateway_api_servicekey sk JOIN aap_gateway_api_servicecluster sc ON sc.id = sk.service_cluster_id WHERE sk.is_active ORDER BY sc.name;"
Получите хеш значения из секрета для Private Automation Hub:
kubectl get secret aa-demo-resource-server -n astra-automation \ -o jsonpath='{.data.galaxy_resource_server_secret}' | base64 -d | md5sum
Вывод должен иметь следующий формат:
Хеш в строке hub должен совпадать с хешем, полученным из секрета galaxy_resource_server_secret.
Для проверки Automation Controller и Event-Driven Automation аналогично сравните строки controller и eda со значениями из полей controller_resource_server_secret и eda_resource_server_secret.
Секрет RESOURCE_SERVER для Private Automation Hub#
Править секрет pah-demo-server вручную не требуется и недопустимо.
Оператор формирует значение RESOURCE_SERVER["SECRET_KEY"] из секрета aa-demo-resource-server при каждом согласовании состояния.
Если изменить pah-demo-server напрямую, оператор перезапишет ручные изменения.
Согласованность Private Automation Hub и Platform Gateway обеспечивает шаг Синхронизация подписных ключей сервисов с секретами Kubernetes.
Удаление секрета, содержащего токен OAuth2#
Секрет aa-demo-gateway-oauth2-token-secret содержит токен OAuth2, используемый шлюзом для взаимодействия с другими компонентами.
После миграции данный токен неактуален и его необходимо удалить с помощью следующей команды:
kubectl delete secret aa-demo-gateway-oauth2-token-secret -n astra-automation
Оператор aa-operator автоматически пересоздаст данный секрет при запуске с корректными значениями для окружения Kubernetes.
Запуск операторов#
Запустите операторы в следующей последовательности:
Запустите
aa-operator:kubectl scale deployment -n astra-automation \ aa-operator-aa-manager --replicas=1
Дождитесь, пока
aa-operatorстанет доступен:kubectl wait --for=condition=available --timeout=60s \ deployment/aa-operator-aa-manager -n astra-automation
Запустите остальные операторы:
kubectl scale deployment -n astra-automation \ ac-operator-ac-manager \ eda-operator-eda-manager \ pah-operator-pah-manager \ --replicas=1
Проверьте статус операторов:
kubectl get pods -n astra-automation | grep operator
Автоматический запуск компонентов операторами#
Примечание
После запуска операторов все компоненты платформы будут созданы и запущены автоматически в соответствии с ранее подготовленным манифестом, например k8s-base-aa-demo.yaml.
Ручное масштабирование Deployment не требуется.
Операторы автоматически выполняют следующие действия:
создают компоненты
Deployment;устанавливают корректное количество реплик;
создают заново токен OAuth2 для шлюза;
настраивают все внутренние связи между сервисами.
Для отслеживания процесса используйте следующую команду:
kubectl get pods -n astra-automation --watch
Ожидаемый процесс:
операторы создают
Deployment;поды проходят стадии
ContainerCreatingиRunning;через несколько минут все компоненты должны быть в состоянии
RunningилиCompleted.
Примечание
Для топологии уровня предприятия количество реплик определяется спецификацией в манифесте AstraAutomation.
Для изменения конфигурации необходимо отредактировать манифест и применить его повторно.
Удаление исходных узлов#
После завершения миграции необходимо удалить из Astra Automation сведения об узлах, использовавшихся в исходном окружении на виртуальных машинах.
Получите название пода
ac-demo-task:kubectl get pods -n astra-automation -o name | grep ac-demo-task
Примечание
В топологии уровня предприятия может быть запущено несколько таких подов. Для выполнения дальнейших действий можно использовать любой из них.
Подключитесь к выбранному поду:
kubectl exec -it -n astra-automation <pod-name> -- bash
Здесь <pod-name> – название выбранного пода.
Например:
kubectl exec -it -n astra-automation ac-demo-task-86f48fc4dc-4rx68 -- bash
Удалите сведения об узле исходной инсталляции:
awx-manage deprovision_instance --hostname <hostname>
Здесь <hostname> – адрес узла из исходной инсталляции на виртуальных машинах.
Список таких узлов можно посмотреть в графической консоли в разделе ().
Например:
awx-manage deprovision_instance --hostname 10.177.87.18
При успешном выполнении будет получен следующий результат:
Важно
Команду
awx-manage deprovision_instanceнеобходимо выполнить отдельно для каждого узла исходной инсталляции.Выйдите из пода:
exit
Проверка журналов#
После запуска платформы проверьте журналы ключевых компонентов:
Platform Gateway:
kubectl logs -n astra-automation deployment/aa-demo-gateway --tail=50 --timestamps
Automation Controller:
kubectl logs -n astra-automation deployment/ac-demo-web --tail=50 --timestamps
Private Automation Hub:
kubectl logs -n astra-automation deployment/pah-demo-api --tail=50 --timestamps
Event-Driven Automation:
kubectl logs -n astra-automation deployment/eda-demo-api --tail=50 --timestamps
Примечание
Флаг --timestamps не является обязательным, но рекомендуется для определения времени фиксации событий при проверке системы.
Ожидаемый результат:
отсутствие ошибок подключения к БД;
отсутствие ошибок аутентификации;
корректная инициализация компонентов.
Удаление временного пода#
После успешного запуска всех компонентов временный под, созданный для восстановления баз данных, больше не требуется. Удалите его с помощью следующей команды:
kubectl delete pod postgres-restore-temp -n astra-automation