- 概要
- 要件
- インストール
- インストール後
- 移行とアップグレード
- EKS/AKS の Automation Suite をアップグレードする
- Linux の Automation Suite から EKS/AKS の Automation Suite に移行する
- 監視とアラート機能
- クラスターの管理
- 製品固有の設定
- トラブルシューティング
- Azure Government への接続に失敗したため、バックアップのセットアップが機能しない
- カスタム ノード taint を有効化すると uipath 名前空間のポッドがスタックする
- プロキシ設定がある場合に Automation Hub と Apps を起動できない
- プロキシ環境でポッドが FQDN と通信できない
- Test Automation SQL の接続文字列は無視されます
- Velero のバージョンが原因で EKS のバックアップが失敗する
- Velero のバックアップが FailedValidation エラーで失敗する
- FQDN にアクセスすると RBAC アクセス拒否エラーが返されます
EKS/AKS の Automation Suite のインストール ガイド
Linux マシンにデプロイされた Automation Suite から EKS/AKS の Automation Suite に移行できます。そのためには、uipathctl を使用して、Automation Suite の 1 つのフレーバーから別のフレーバーにデータを移動する必要があります。
この移行プロセスの利点の 1 つは、既存のクラスターに影響を与えずに複数回の実行を試行できることです。
この移行オプションでは、Linux の Automation Suite から EKS/AKS の Automation Suite の新しいインストールに移行できます。
次の移行シナリオはサポートされていません。
- 現在、Linux の Automation Suite から EKS/AKS の Automation Suite の既存のインストールへの移行はサポートされていません。
- 現在、EKS/AKS の Automation Suite のクラスターから別の EKS/AKS の Automation Suite のクラスターへの移行はサポートされていません。
要件
Linux の Automation Suite から EKS/AKS の Automation Suite に移行するには、次の要件を満たす必要があります。
- 2 つの環境の間に接続を確立する必要があります。
- ソース クラスターに外部 ObjectStore が構成されている必要があります。クラスター内のストレージを使用する場合は、「 クラスター内の ObjectStore から外部 ObjectStore に移行する」をご覧ください。
- ソース クラスターに、宛先のオブジェクト ストアに対する読み取り/書き込み権限を付与する必要があります。永続ボリューム (PV) がコピーされると、ソースクラスターはデータを宛先のオブジェクトストアに書き込み、宛先クラスターはオブジェクトストアからデータをプルして、対応する PV を作成します。
- Linux 上の Automation Suite のバージョンは 2022.10 以降である必要があります。
- オフラインのみの要件: ターゲット クラスターをハイドレートする必要があります。
プロセスの概要
| # | 移行手順 |
|---|---|
| 1. | このプロパティは必須です。 uipathctl をダウンロードします。 ダウンロードの手順については、「uipathctl」をご覧ください。 |
| 2. | このプロパティは必須です。 versions.json をダウンロードします。 ダウンロードの手順については、「versions.json」をご覧ください。 |
| 3. | ソース クラスターとターゲット クラスターの両方の Docker イメージを準備します。 任意です。デプロイメントがオフラインの場合、またはプライベート OCI レジストリを使用している場合は、必要なイメージが利用可能であることを確認してください。 |
| 4. | ターゲット クラスターを準備します。
|
| 5. | 移行を実行し、データを移動します。 移行では、ソース クラスターとターゲット クラスターの両方でポッドが実行されます。ソース クラスター用に構成された外部オブジェクト ストレージ、具体的にはプラットフォーム バケットは、移行の中間ストレージの場所として使用されます。 ソース クラスター:
ターゲット クラスター:
|
| 6. |
|
データ移行と責任
| データ | 移行メカニズム | |
|---|---|---|
| ステータス | 責任 | |
| SQL | 保持 次の 2 つのオプションがあります。
| 顧客 (Customer) |
| Docker レジストリ | 移行されない registry.uipath.com を使用する場合は、これ以上の手順は不要です。 | 顧客 (Customer) |
| fqdn | Required 新しいクラスターには新しい FQDN を選択する必要があります。オプションとして、必要に応じて以前の FQDN に戻すことができます。 | 顧客 (Customer) |
| 証明書 | 移行されない 新しいクラスターのインストールの一部として証明書を提供する必要があります。 | 顧客 (Customer) |
| クラスターの構成 | 移行されない input.json を生成する必要があります。 | 顧客 (Customer) |
| ユーザーが作成したカスタム アラートとダッシュボード | 移行されない 移行後に、Alertmanager ダッシュボードと Grafana ダッシュボードでカスタム アラートを再設定する必要があります。 | 顧客 (Customer) |
| アプリケーション ログ/ユーザーが作成した Prometheus ストリーミング設定 | 移行されない アプリケーション ログと Prometheus ストリーミングを再構成する必要があります。 | 顧客 (Customer) |
| 動的なワークロード | アプリケーションによって異なる AI Center のトレーニング ジョブは失われ、スキルは保持されます。 | スキル (アップグレード後にスクリプトを実行する必要があります): UiPath® トレーニング ジョブ: 顧客 |
| Object Store | 外部 ObjectStore: 保持 外部 ObjectStore には、次の 2 つのオプションがあります。
重要: クラスター内 ObjectStore を使用している場合は、アップグレード前に Ceph から外部への移行を実行する必要があります。 | クラスター内 ObjectStore から外部 ObjectStore に移行する: 顧客 外部 ObjectStore: UiPath® |
| Insights | 保持 | UiPath® |
| MongoDB データ | 保持 MongoDB データがターゲット SQL に移動されます。 | UiPath® |
| RabbitMQ | 不要 | UiPath® |
| 監視 (データ) | 不要 監視データは、新しいクラスターには適用されません。 | N/A |
準備
cluster_config.json ファイルを準備する
移行プロセスの開始後にソース クラスターを変更しないでください。
cluster_config.json ファイルの準備をするには、次の手順に従います。
-
ソース クラスターに対象のバージョンの
uipathctlをダウンロードし、uipathctl manifest get-revisionを実行してinput.jsonファイルを生成します。詳しくは、以下の図を参照してください。 -
以前に生成された
input.jsonファイルに基づいて、ターゲット クラスターのinput.jsonファイルを変更します。手順については、「 input.jsonを設定する」をご覧ください。テナントごとの暗号化キーや Azure/Amazon S3 のストレージ バケットの設定など、Orchestrator 固有の設定を転送する必要があります。
注:バージョン 2023.10.9 以降では、Process Mining 専用の Microsoft SQL Server と PostgreSQL Airflow データベースをお勧めします。
v2023.10.9 より前のバージョンから移行する場合、ターゲット クラスター用に生成された
input.jsonファイルには、Airflow PostgreSQL データベースの接続文字列が含まれません。最新バージョンの Airflow を使用するには PostgreSQL が必要ですが、移行前に PostgreSQL 用のsqlalchemy接続文字列テンプレートをターゲット クラスターのinput.jsonファイルに手動で追加する必要があります。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 -
次のコマンドを実行して、ターゲット クラスターの前提条件を検証します。
uipathctl prereq run input-target.json --kubeconfig kubeconfig.target --versions versions.jsonuipathctl prereq run input-target.json --kubeconfig kubeconfig.target --versions versions.json -
ソース デプロイからターゲット デプロイに SQL データベースを複製します。
インターネット アクセス要件のないプライベート レジストリ
移行プロセスでは、ソース クラスターとターゲット クラスターの両方で最新の uipathcore Docker イメージ タグが利用可能でなければなりません。ソース クラスターがオフラインの場合は、以下の手順を実行してイメージを利用可能にします。
- 「オプション B: オフライン バンドルでレジストリをハイドレートする」に記載されている手順に従って、ターゲット クラスターで使用されるレジストリをオフライン バンドルでハイドレートします。
- ソース クラスターにアクセス可能な VM に
uipathctlバイナリとversions.jsonファイルをコピーします。 - 次のコマンドを実行します。
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 uipathctlバイナリを使用して、uipathcoreイメージをプライベート レジストリに追加します。./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>"注:registry.fqdn、registry-username、およびregistry-passwordは、必ず、ソース オフライン インストールで使用されるプライベート レジストリの適切な値に置き換えてください。
インターネット アクセス要件のあるプライベート レジストリ
プライベート レジストリを使用する場合は、そのレジストリをシードする必要があります。手順については、「OCI 準拠のレジストリを設定」を参照してください。
実行
EKS/AKS の Automation Suite に移行するには、次の手順に従います。
- 次のコマンドを実行して、移行を実行します。
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 - 次のコマンドを実行して、ターゲット クラスター上の AKS/EKS への Automation Suite のインストールを完了します。
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
AI Center のスキルの移行
このセクションの手順は、ソース クラスターとターゲット クラスターの両方で AI Center を有効にした場合にのみ適用されます。 この手順では、ターゲット クラスター上の AI Center が、スキルを実行するためのスキル データを含むデータベースを指していることを前提としています。
移行が完了したら、AI Center のスキルを同期して、再び使用できるようにする必要があります。
スキルの移行ステータスを確認する
対象の EKS/AKS の Automation Suite クラスターでスキルのステータスを取得するには、次の手順に従います。
- 次のコマンドを実行するための変数を設定します。
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" - 実行中の可能性のある
skillstatuspodをすべてクリーンアップしてから、スキルのステータスを再度取得します。 次のコマンドは、前の反復処理からポッドを削除するため、慎重に使用してください。kubectl -n uipath delete pod "$podName" --force.kubectl -n uipath delete pod "$podName" --force. - スキルのステータスを取得する
skillstatuspodを作成します。 ポッドがイメージをプルして実行するまでに時間がかかる場合があります (通常は 30 秒未満)。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"注:- すべてのスキルを実行するには を
[]に置き換え$skill_arr、前述の 2 つのスキルのみを実行するには['abcd', 'efgh']に置き換えます。 skills id出力は次のコマンドに必要です。
- すべてのスキルを実行するには を
- スキルのステータスの出力を確認します。
kubectl -n uipath logs -f "$podName" -c "$podName"kubectl -n uipath logs -f "$podName" -c "$podName"
スキル移行を実行する
スキルの移行を実行するには、次の手順に従います。
-
次のコマンドを実行するための変数を設定します。
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" -
実行中の可能性のある
skillsyncpodをすべてクリーンアップしてから、スキルのステータスを再度取得します。 次のコマンドは、前の反復処理からポッドを削除するため、慎重に使用してください。kubectl -n uipath delete pod "$podName" --forcekubectl -n uipath delete pod "$podName" --force -
スキルの同期を開始します。ポッドがイメージをプルして実行するまでに時間がかかる場合があります (通常は 30 秒未満)。
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"注:skill idsを、「スキルの移行ステータスを確認する」の手順でコピーした値に置き換えます。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" -
スキルの同期ステータスの出力を確認します。
kubectl -n uipath logs -f "$podName" -c "$podName"kubectl -n uipath logs -f "$podName" -c "$podName" -
同期するスキルの数によっては操作に時間がかかる場合があるため、スキルの移行ステータスによって進捗を定期的に確認できます。
IN_PROGRESSステートのスキルがなくなれば終了です。注:スキルの移行ステータスの確認や、スキルの移行の実行では、すべてのスキルを同時に対象としています。 選択されたスキルに対してのみこれらの操作を実行するには、手順 3 で追加の引数として
-d "[skill_id1, skill_id2, .... ]"をcurlに渡します。