- Información general
- Requisitos
- Instalación
- Después de la instalación
- Migración y actualización
- Actualizar Automation Suite en EKS / AKS
- Paso 1: Mover los datos de la organización de identidad de independiente a Automation Suite
- Paso 2: restaurar la base de datos del producto independiente
- Paso 3: Realizar una copia de seguridad de la base de datos de la plataforma en Automation Suite
- Paso 4: Fusionar organizaciones en Automation Suite
- Paso 5: actualizar las cadenas de conexión de los productos migrados
- Paso 6: migrar el Orchestrator independiente
- Paso 7: migrar Insights independiente
- Paso 8: Migrar Test Manager independiente
- Paso 9: eliminar el tenant predeterminado
- Realizar una migración de un solo tenant
- Migrar de Automation Suite en Linux a Automation Suite en EKS / AKS
- Supervisión y alertas
- Administración de clústeres
- Configuración específica del producto
- Configurar parámetros de Orchestrator
- Configuración de Orchestrator
- Configurar AppSettings
- Configurar el tamaño máximo de la solicitud
- Anular la configuración de almacenamiento a nivel de clúster
- Configurar almacenes de credenciales
- Configurar clave de cifrado por tenant
- Limpiar la base de datos de Orchestrator
- Solución de problemas
- La configuración de la copia de seguridad no funciona debido a un fallo en la conexión a Azure Government
- Los pods en el espacio de nombres de UiPath se atascaban al habilitar los taints de nodo personalizados
- No se puede iniciar Automation Hub y Apps con la configuración de proxy
- Los pods no pueden comunicarse con FQDN en un entorno de proxy
- Se ignora la cadena de conexión SQL de la automatización de pruebas
- Error de copia de seguridad de EKS debido a la versión de Velero
- La copia de seguridad de Velero falla con el error de validación fallida
- El acceso a FQDN devuelve un error de acceso RBAC denegado
Guía de instalación de Automation Suite en EKS/AKS
Puedes migrar de Automation Suite implementado en una máquina Linux a Automation Suite en EKS / AKS. Para hacerlo, debes mover tus datos de un sabor de Automation Suite a otro utilizando uipathctl.
Una de las ventajas de este proceso de migración es que puedes intentar realizarlo varias veces sin afectar a tu clúster existente.
Esta opción de migración te permite pasar de Automation Suite en Linux a una nueva instalación de Automation Suite en EKS/AKS.
Los siguientes escenarios de migración no son compatibles:
- Actualmente no se admite la migración de Automation Suite en Linux a una instalación existente de Automation Suite en EKS/AKS.
- Actualmente no se admite la migración de un Automation Suite en el clúster EKS/AKS a otro Automation Suite en el clúster EKS/AKS.
Requisitos
Para migrar de Automation Suite en Linux a Automation Suite en EKS/AKS, debes cumplir los siguientes requisitos:
- Debes establecer la conectividad entre los dos entornos.
- Debes tener un almacén de objetos externo configurado en tu clúster de origen. Si utilizas almacenamiento en clúster, consulta Migrar el almacén de objetos en el clúster a un almacén de objetos externo.
- Debes conceder al clúster de origen permisos de lectura/escritura en el almacén de objetos de destino. Cuando se copian volúmenes persistentes (PV), el clúster de origen escribe sus datos en el almacén de objetos de destino y, a continuación, el clúster de destino extrae los datos del almacén de objetos y crea los PV correspondientes.
- La versión de Automation Suite en Linux debe ser 2022.10 o posterior.
- Requisitos solo sin conexión: debes hidratar el clúster de destino.
Descripción general del proceso
| # | Paso de migración |
|---|---|
| 1. | Obligatorio . Descarga uipathctl . Para obtener instrucciones de descarga, consulta uipathctl. |
| 2. | Obligatorio . Descarga versions.json . Para obtener instrucciones de descarga, consulta versions.json. |
| 3. | Prepara las imágenes de docker tanto para el clúster de origen como de destino. Opcional. Si tu implementación es sin conexión o si utilizas un registro OCI privado, asegúrate de que las imágenes necesarias están disponibles. |
| 4. | Prepara el clúster de destino:
|
| 5. | Ejecuta la migración y mueve los datos. La migración ejecuta pods tanto en el clúster de origen como en el de destino. El almacenamiento de objetos externo configurado para el clúster de origen, en concreto el depósito de la plataforma, se utiliza como ubicación de almacenamiento de migración intermedia. Clúster de origen:
Clúster de destino:
|
| 6. |
|
Migración de datos y responsabilidades
| Datos | Mecanismo de migración | |
|---|---|---|
| Estado | Responsabilidad | |
| Sql | Retenido Tienes dos opciones:
| Cliente |
| Registro de Docker | No migrado registry.uipath.com para el clúster de destino, no se necesitan más pasos). | Cliente |
| FQDN | Obligatorio Debes elegir un nuevo FQDN para el nuevo clúster. Opcionalmente, puedes volver al FQDN anterior si es necesario. | Cliente |
| Certificados | No migrado Debes aportar certificados como parte de la nueva instalación del clúster. | Cliente |
| Configuración de clústeres | No migrado input.json aplicable al tipo de clúster de destino (AKS o EKS). | Cliente |
| Alertas y paneles personalizados creados por los usuarios | No migrado Después de la migración, debes volver a configurar cualquier alerta personalizada en los paneles de Alert Manager y Grafana. | Cliente |
| Registros de aplicación/configuración de transmisión de Prometheus creada por los usuarios | No migrado Debes volver a configurar el registro de la aplicación y la transmisión de Prometheus. | Cliente |
| Cargas de trabajo dinámicas | Depende de la aplicación Los trabajos de entrenamiento del AI Center se han perdido; Las habilidades se conservan. | Habilidades (el script debe ejecutarse después de la actualización): UiPath® Trabajos de formación: cliente |
| Almacén de objetos | Almacén de objetos externo: retenido Para el almacén de objetos externo, tienes dos opciones:
Importante : si utilizas un almacén de objetos en el clúster, debes realizar una migración de ceph a externo antes de la actualización. | Migración de un almacén de objetos en el clúster a un almacén de objetos externo: cliente Almacén de objetos externo: UiPath® |
| Insights | Retenido | UiPath® |
| Datos de MongoDB | Retenido Los datos de MongoDB se mueven al SQL de destino. | UiPath® |
| RabbitMQ | No es necesario | UiPath® |
| Seguimiento (datos) | No es necesario Los datos de supervisión no se aplican al nuevo clúster. | N/D |
Preparación
Preparar el archivo cluster_config.json
No modifiques el clúster de origen después de iniciar el proceso de migración.
Para preparar el archivo cluster_config.json, sigue los siguientes pasos:
-
Descarga la versión de destino de
uipathctlen el clúster de origen y genera el archivoinput.jsonejecutandouipathctl manifest get-revision. Para obtener más información, consulta el siguiente diagrama:
-
En función del archivo
input.jsongenerado anteriormente, modifica el archivoinput.jsondel clúster de destino. Para obtener instrucciones, consulta Configurar input.json.Debes transferir la configuración específica de Orchestrator que incluye la clave de cifrado por tenant y la configuración de los depósitos de almacenamiento de Azure/Amazon S3 .
Nota:La base de datos dedicada de Microsoft SQL Server y PostgreSQL para Process Mining Airflow es la opción recomendada para la versión 2023.10.9 o posterior.
Si migras desde una versión anterior a la 2023.10.9, el archivo
input.jsongenerado para el clúster de destino no contiene la cadena de conexión para la base de datos PostgreSQL de Airflow. Para utilizar la última versión de Airflow, que requiere PostgreSQL, deberás añadir manualmente la plantilla de cadena de conexiónsqlalchemypara PostgreSQL al archivoinput.jsonpara el clúster de destino antes de la migración.Postgresql_connection_string_template_sqlalchemy_pyodbcpostgresql+psycopg2://<user>:<password>@<postgresql host>:<postgresql port>/DB_NAME_PLACEHOLDERpostgresql+psycopg2://<user>:<password>@<postgresql host>:<postgresql port>/DB_NAME_PLACEHOLDER -
Valida los requisitos previos en el clúster de destino, ejecutando el siguiente comando:
uipathctl prereq run input-target.json --kubeconfig kubeconfig.target --versions versions.jsonuipathctl prereq run input-target.json --kubeconfig kubeconfig.target --versions versions.json -
Clona las bases de datos SQL de la implementación de origen a la implementación de destino.
Registro privado sin requisitos de acceso a Internet
El proceso de migración requiere que la última etiqueta de imagen de Docker uipathcore esté disponible tanto para el clúster de origen como para el de destino. Si tu clúster de origen está sin conexión, haz que la imagen esté disponible siguiendo los siguientes pasos:
- Sigue los pasos para hidratar el registro utilizado por el clúster de destino con el paquete sin conexión en la Opción B: hidratar el registro con el paquete sin conexión.
- Copia el binario
uipathctly el archivoversions.jsonen una máquina virtual con acceso al clúster de origen. - Ejecuta el siguiente comando:
jq -r '.[][] | select(.name=="uipath/uipathcore") | .ref + ":" + .version' "/path/to/versions.json" > images.txtjq -r '.[][] | select(.name=="uipath/uipathcore") | .ref + ":" + .version' "/path/to/versions.json" > images.txt - Añade la imagen
uipathcorea tu registro privado utilizando el binariouipathctl:./uipathctl registry seed --tag-file ./images.txt \ --source-registry "target.registry.fqdn.com" \ --source-password "target-registry-username" \ --source-username "target-registry-password" \ --dest-registry "<source.registry.fqdn.com>" \ --dest-username "<source-registry-username>" \ --dest-password "<source-registry-password>"./uipathctl registry seed --tag-file ./images.txt \ --source-registry "target.registry.fqdn.com" \ --source-password "target-registry-username" \ --source-username "target-registry-password" \ --dest-registry "<source.registry.fqdn.com>" \ --dest-username "<source-registry-username>" \ --dest-password "<source-registry-password>"Nota:Asegúrate de reemplazar
registry.fqdn,registry-usernameyregistry-passwordcon los valores adecuados para el registro privado utilizado por tu instalación de origen sin conexión.
Registro privado con requisitos de acceso a Internet
Si utilizas un registro privado, debes inicializarlo. Para obtener instrucciones, consultaConfigurar el registro compatible con OCI.
Ejecución
Para migrar a Automation Suite en EKS / AKS, sigue los siguientes pasos:
- Inicia la migración ejecutando el siguiente comando:
uipathctl cluster migration run input-target.json --kubeconfig kubeconfig.source --target-kubeconfig kubeconfig.target --versions versions-target.jsonuipathctl cluster migration run input-target.json --kubeconfig kubeconfig.source --target-kubeconfig kubeconfig.target --versions versions-target.json - Completa la instalación de Automation Suite en AKS/EKS en el clúster de destino ejecutando el siguiente comando:
uipathctl manifest apply input-target.json --kubeconfig kubeconfig.target --versions versions-target.jsonuipathctl manifest apply input-target.json --kubeconfig kubeconfig.target --versions versions-target.json
Migración de habilidades de AI Center
Los pasos de esta sección solo son aplicables si habilitaste AI Center tanto en el clúster de origen como de destino. Ten en cuenta que las instrucciones suponen que AI Center en el clúster de destino apunta a la base de datos que contiene los datos de la habilidad para ejecutar las habilidades.
Después de completar la migración, debes sincronizar las habilidades de AI Center para que puedas utilizarlas de nuevo.
Comprobar el estado de migración de habilidad
Para recuperar el estado de las habilidades en la Automation Suite de destino en el clúster de EKS/AKS, sigue los siguientes pasos:
- Configura las variables para ejecutar los siguientes comandos.
aicJobsImage=$(kubectl -n uipath get configmap aic-jobs-config -o "jsonpath={.data['aicenter/aicenter-jobs:v23.10-10.15-rc02']}") podName="skillstatuspod"aicJobsImage=$(kubectl -n uipath get configmap aic-jobs-config -o "jsonpath={.data['aicenter/aicenter-jobs:v23.10-10.15-rc02']}") podName="skillstatuspod" - Limpia cualquier
skillstatuspodque pueda estar en ejecución antes de recuperar el estado de la habilidad de nuevo. El siguiente comando elimina el pod de la iteración anterior, así que utilízalo con cuidado.kubectl -n uipath delete pod "$podName" --force.kubectl -n uipath delete pod "$podName" --force. - Crea
skillstatuspodpara obtener el estado de la habilidad. El pod puede tardar un tiempo en extraer la imagen y ejecutarse, normalmente menos de 30 segundos.skill_arr="[]" kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c "curl -sSL -XPOST -H 'Content-Type: application/json' 'ai-deployer-svc.uipath.svc.cluster.local/ai-deployer/v1/system/mlskills:restore-status' -d \"$skill_arr\" | jq -r '([\"SKILL_ID\",\"SKILL_NAME\", \"STATUS\"] | (., map(length*\"-\"))), (.data[] | [.skillId, .skillName, .syncStatus]) | @tsv' | column -ts $'\t'; exit"skill_arr="[]" kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c "curl -sSL -XPOST -H 'Content-Type: application/json' 'ai-deployer-svc.uipath.svc.cluster.local/ai-deployer/v1/system/mlskills:restore-status' -d \"$skill_arr\" | jq -r '([\"SKILL_ID\",\"SKILL_NAME\", \"STATUS\"] | (., map(length*\"-\"))), (.data[] | [.skillId, .skillName, .syncStatus]) | @tsv' | column -ts $'\t'; exit"Nota:- Reemplaza
$skill_arrpor[]para ejecutar todas las habilidades, o['abcd', 'efgh']para ejecutar solo las dos habilidades mencionadas. - La salida
skills ides necesaria para los siguientes comandos.
- Reemplaza
- Comprueba el resultado del estado de la habilidad.
kubectl -n uipath logs -f "$podName" -c "$podName"kubectl -n uipath logs -f "$podName" -c "$podName"
Ejecutar la migración de habilidades
Para ejecutar la migración de habilidad, sigue los siguientes pasos:
-
Configura las variables para ejecutar los siguientes comandos.
aicJobsImage=$(kubectl -n uipath get configmap aic-jobs-config -o "jsonpath={.data['AIC_JOBS_IMAGE']}") podName="skillsyncpod"aicJobsImage=$(kubectl -n uipath get configmap aic-jobs-config -o "jsonpath={.data['AIC_JOBS_IMAGE']}") podName="skillsyncpod" -
Limpia cualquier
skillsyncpodque pueda estar en ejecución antes de recuperar el estado de la habilidad de nuevo. El siguiente comando elimina el pod de la iteración anterior, así que utilízalo con cuidado.kubectl -n uipath delete pod "$podName" --forcekubectl -n uipath delete pod "$podName" --force -
Inicia la sincronización de habilidad. El pod puede tardar un tiempo en extraer la imagen y ejecutarse, normalmente menos de 30 segundos.
kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c "curl -sSL -XPOST -H 'Content-Type: application/json' 'ai-deployer-svc.uipath.svc.cluster.local/ai-deployer/v1/system/mlskills:restore-all' -d \"[\"skill_id1\", \"skill_id2\", .... ]\"; exit"kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c "curl -sSL -XPOST -H 'Content-Type: application/json' 'ai-deployer-svc.uipath.svc.cluster.local/ai-deployer/v1/system/mlskills:restore-all' -d \"[\"skill_id1\", \"skill_id2\", .... ]\"; exit"Nota:Sustituye
skill idspor los valores copiados durante el procedimiento Comprobar el estado de migración de habilidades .Consulta el siguiente ejemplo para declarar la variable
skill_arr:skill_arr='[\"fb14154a-ce63-43ab-yyyy-xxxxxxxxxxxxxx\", \"ad58942d-e038-4d38-yyyy-xxxxxxxxxxxx\"]' # Replace them with ML skill ids in your environment kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c -x "curl -sSL -XPOST -H 'Content-Type: application/json' '/ai-deployer/v1/system/mlskills:restore-all' -d \"$skill_arr\"; exit"skill_arr='[\"fb14154a-ce63-43ab-yyyy-xxxxxxxxxxxxxx\", \"ad58942d-e038-4d38-yyyy-xxxxxxxxxxxx\"]' # Replace them with ML skill ids in your environment kubectl -n uipath run "$podName" --image="$aicJobsImage" --restart=Never --labels="app.kubernetes.io/component=aicenter" --overrides='{ "metadata": { "annotations": {"sidecar.istio.io/inject": "false"}}}' --command -- /bin/bash -c -x "curl -sSL -XPOST -H 'Content-Type: application/json' '/ai-deployer/v1/system/mlskills:restore-all' -d \"$skill_arr\"; exit" -
Comprueba el resultado del estado de sincronización de habilidad.
kubectl -n uipath logs -f "$podName" -c "$podName"kubectl -n uipath logs -f "$podName" -c "$podName" -
La operación puede tardar mucho tiempo, dependiendo del número de habilidades que se sincronicen, por lo que puedes confiar en el estado de migración de la habilidad para comprobarlo periódicamente hasta que no haya ninguna habilidad en el estado
IN_PROGRESS.Nota:Al comprobar el estado de migración de habilidad o la ejecución de la migración de habilidad, cubres todas las habilidades al mismo tiempo. Como alternativa, puedes realizar estas operaciones solo para las habilidades de selección pasando
-d "[skill_id1, skill_id2, .... ]"como argumento adicional paracurlen el paso 3.
- Requisitos
- Descripción general del proceso
- Migración de datos y responsabilidades
- Preparación
- Preparar el archivo cluster_config.json
- Registro privado sin requisitos de acceso a Internet
- Registro privado con requisitos de acceso a Internet
- Ejecución
- Migración de habilidad de AI Center
- Comprobar el estado de migración de habilidad
- Ejecutar la migración de habilidad