automation-suite
2023.10
true
Guía de instalación de Automation Suite en EKS / AKS
Last updated 1 de nov. de 2024

Migrar de Automation Suite en Linux a 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.

Importante:

Esta opción de migración te permite pasar de Automation Suite en Linux a una nueva instalación de Automation 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 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 del clúster a un almacén de objetos externo.

  • 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 origen.

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 está sin conexión o si utilizas un registro de OCI privado, asegúrate de que las imágenes necesarias estén disponibles.

4.

Prepara el clúster de destino:

  1. Crea el archivo input.json.
  2. Ejecuta la comprobación de requisitos previos.

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:

  • Los pods general-migration-* son responsables de exportar objetos de Kubernetes desde el clúster de origen al clúster de destino.
  • Los pods volume-migration-* son responsables de copiar los datos de PVC en el almacenamiento externo intermedio.

Clúster de destino:

  • Los pods inbound-pvc-migration-* son responsables de crear PVC en el clúster de destino y copiar los datos de origen en ellos.

6.

  • Ejecuta la instalación de Automation Suite en AKS o EKS.

Migración de datos y responsabilidades

Datos

Mecanismo de migración

EstadoResponsabilidad

Sql

Retenido

Tienes dos opciones:

  1. Reutiliza las mismas bases de datos para la nueva instalación. Apunta las cadenas de conexión SQL de la configuración del clúster al servidor de la base de datos existente.

  2. Clona tus bases de datos y utiliza los clones en su lugar.

Cliente

Registro de Docker

No migrado

Si utilizas un registro privado, debes hidratar el registro de destino. Si usas registry.uipath.com para el clúster de destino, no se necesitan más pasos).

Cliente

FQDN

Opcional

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

Debes generar el nuevo input.json aplicable al tipo de clúster de destino (AKS o EKS).
Cliente
Alertas y paneles personalizados creados por los usuarios

No migrado

Debes volver a configurar las alertas y los paneles personalizados después de la migración.

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: conservado

Para el almacén de objetos externo, tienes dos opciones:

  1. Reutilizar el almacén de objetos externo existente y conectarlo al nuevo entorno.

  2. Crear una réplica de tu almacén de objetos actual y utilizarla para la nueva configuración.

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.

Migrar desde 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

Nota:

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:
  1. Descarga la versión de destino de uipathctl en el clúster de origen y genera el archivo input.json ejecutando uipathctl manifest get-revision. Para obtener más información, consulta el siguiente diagrama:
    docs image
  2. Según el archivo input.json generado anteriormente, modifica el archivo input.json del 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 .

  3. 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
  4. 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:
  1. 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.
  2. Copia el binario uipathctl y el archivo versions.json en una máquina virtual con acceso al clúster de origen.
  3. 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
  4. Añade la imagen uipathcore a tu registro privado utilizando el binario uipathctl:
    ./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-username y registry-password con 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.

Sin conexión con los requisitos de registro en el clúster

Si utilizas un registro en clúster en tu entorno sin conexión, realiza los siguientes pasos:

  1. Descarga as.tar.gz en el clúster de origen.
  2. Hidrata tu registro ejecutando el script configureUiPathAS.sh :
    cd /opt/UiPathAutomationSuite/{version}/installer
    
    ./configureUiPathAS.sh registry upload --offline-bundle /uipath/{version}/as.tar.gz --offline-tmp-folder /uipath/tmpcd /opt/UiPathAutomationSuite/{version}/installer
    
    ./configureUiPathAS.sh registry upload --offline-bundle /uipath/{version}/as.tar.gz --offline-tmp-folder /uipath/tmp

Ejecución

Para migrar a Automation Suite en EKS / AKS, sigue los siguientes pasos:

  1. 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
  2. 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 habilidad 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:
  1. 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"
  2. Limpia cualquier skillstatuspod que 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. 
  3. Crea skillstatuspod para 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_arr por [] para ejecutar todas las habilidades, o ['abcd', 'efgh'] para ejecutar solo las dos habilidades mencionadas.
    • La salida skills id es necesaria para los siguientes comandos.
  4. 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 habilidad

Para ejecutar la migración de habilidad, sigue los siguientes pasos:

  1. 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"
  2. Limpia cualquier skillsyncpod que 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
  3. 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 ids por los valores copiados durante el procedimiento Comprobación del 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"
  4. 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"
  5. 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 para curl en el paso 3.

¿Te ha resultado útil esta página?

Obtén la ayuda que necesitas
RPA para el aprendizaje - Cursos de automatización
Foro de la comunidad UiPath
Uipath Logo White
Confianza y seguridad
© 2005-2024 UiPath. Todos los derechos reservados.