- Overview
- Requirements
- Pre-installation
- Preparing the installation
- Installing and configuring the service mesh
- Downloading the installation packages
- Configuring the OCI-compliant registry
- Granting installation permissions
- Installing and configuring the GitOps tool
- Deploying Redis through OperatorHub
- Meeting the Process Mining prerequisites
- Applying miscellaneous configurations
- Running uipathctl
- Installation
- Post-installation
- Migration and upgrade
- Upgrading Automation Suite
- Migrating standalone products to Automation Suite
- Step 1: Restoring the standalone product database
- Step 2: Updating the schema of the restored product database
- Step 3: Moving the Identity organization data from standalone to Automation Suite
- Step 4: Backing up the platform database in Automation Suite
- Step 5: Merging organizations in Automation Suite
- Step 6: Updating the migrated product connection strings
- Step 7: Migrating standalone Orchestrator
- Step 8: Migrating standalone Insights
- Step 9: Migrating standalone Test Manager
- Step 10: Deleting the default tenant
- Performing a single tenant migration
- Migrating between Automation Suite clusters
- Monitoring and alerting
- Cluster administration
- Product-specific configuration
- Orchestrator advanced configuration
- Configuring Orchestrator parameters
- Configuring appSettings
- Configuring the maximum request size
- Overriding cluster-level storage configuration
- Configuring NLog
- Saving robot logs to Elasticsearch
- Configuring credential stores
- Configuring encryption key per tenant
- Cleaning up the Orchestrator database
- Skipping host library creation
- Troubleshooting

Automation Suite on OpenShift installation guide
Meeting the Process Mining prerequisites
Dapr and cert-manager are no longer requirements for Process Mining starting with Automation Suite 2024.10.3.
Installing cert-manager
The Dapr installation for Process Mining requires cert-manager.
To install Cert Manager via OpenShift Operators, follow the instructions in Installing the cert-manager Operator for Red Hat OpenShift.
To make sure that ArgoCD can create a certificate using cert-manager, you must provide the necessary permissions on cert-manager to ArgoCD.
The following sample shows a valid configuration for the ArgoCD cert-manager role:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: argocd-cert-manager-role
namespace: <uipath>
rules:
- apiGroups: ["cert-manager.io"]
resources: ["certificates", "issuers"]
verbs: ["get", "create"]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: argocd-cert-manager-role
namespace: <uipath>
rules:
- apiGroups: ["cert-manager.io"]
resources: ["certificates", "issuers"]
verbs: ["get", "create"]
To create the role binding for a dedicated ArgoCD instance, run the following command:
oc project <uipath>
oc create rolebinding argocd-cert-manager-binding --role=argocd-cert-manager-role \
--serviceaccount=<argocd>:argocd-argocd-application-controller
oc project <uipath>
oc create rolebinding argocd-cert-manager-binding --role=argocd-cert-manager-role \
--serviceaccount=<argocd>:argocd-argocd-application-controller
To create the role binding for a shared ArgoCD instance, run the following command:
oc project <uipath>
oc create rolebinding gitops-cert-manager-binding --role=argocd-cert-manager-role \
--serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
oc project <uipath>
oc create rolebinding gitops-cert-manager-binding --role=argocd-cert-manager-role \
--serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
Uninstalling Cert Manager
You should not remove this resource if Task Mining is enabled. Task Mining is dependent on Cert Manager.
Prerequisites
- OpenShift CLI (
oc) installed and configured. - Appropriate permissions to delete resources in the target namespaces.
Information required
Before proceeding, you must gather the following information:
- UiPath namespace where cert-manager resources are being used.
- Whether this is a shared ArgoCD instance or a dedicated one.
Step-by-step uninstallation process
- Delete the role bindings for cert-manager:
- For dedicated ArgoCD instance:
# Verify if the role binding exists oc get rolebinding argocd-cert-manager-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding argocd-cert-manager-binding -n <uipath_namespace># Verify if the role binding exists oc get rolebinding argocd-cert-manager-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding argocd-cert-manager-binding -n <uipath_namespace> - For shared ArgoCD instance:
# Verify if the role binding exists oc get rolebinding gitops-cert-manager-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding gitops-cert-manager-binding -n <uipath_namespace># Verify if the role binding exists oc get rolebinding gitops-cert-manager-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding gitops-cert-manager-binding -n <uipath_namespace>
- For dedicated ArgoCD instance:
- Delete the cert-manager role:
# Check if the role exists oc get role argocd-cert-manager-role -n <uipath_namespace> # If it exists, delete it oc delete role argocd-cert-manager-role -n <uipath_namespace># Check if the role exists oc get role argocd-cert-manager-role -n <uipath_namespace> # If it exists, delete it oc delete role argocd-cert-manager-role -n <uipath_namespace> - Clean up cert-manager resources in the namespace:
# Delete all certificates oc delete certificates.cert-manager.io --all -n <uipath_namespace> # Delete all issuers oc delete issuers.cert-manager.io --all -n <uipath_namespace> # Delete all clusterissuers if you created any oc delete clusterissuers.cert-manager.io --all# Delete all certificates oc delete certificates.cert-manager.io --all -n <uipath_namespace> # Delete all issuers oc delete issuers.cert-manager.io --all -n <uipath_namespace> # Delete all clusterissuers if you created any oc delete clusterissuers.cert-manager.io --all - Uninstall the cert-manager via operator hub in the OpenShift console.
- Verify remaining resources:
# Check for any remaining cert-manager resources oc get all -n <uipath_namespace> | grep cert-manager oc get crd | grep cert-manager# Check for any remaining cert-manager resources oc get all -n <uipath_namespace> | grep cert-manager oc get crd | grep cert-manager
Troubleshooting
If certain resources cannot be deleted:
- Ensure you have the necessary permissions.
- Check if the resources are being used by other applications.
- For resources that are stuck in Terminating state, you may need to remove finalizers.
Notes
- This uninstallation procedure assumes cert-manager was installed via the OpenShift Operator Hub.
- Only uninstall cert-manager if it is not being used by other applications in your cluster.
- If multiple applications depend on cert-manager, consider only removing the UiPath-specific resources.
- Replace
<uipath_namespace>with your actual UiPath namespace.
Installing Dapr
To install Dapr, take the following steps:
- Create a cluster-level role so that ArgoCD can manage custom resource definitions and mutating webhooks. To create the role, take the following steps:
- Save the following role configuration as a YAML file:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: name: manage-crds rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ['*'] - apiGroups: ["admissionregistration.k8s.io"] resources: ["mutatingwebhookconfigurations"] verbs: ['*']apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: annotations: name: manage-crds rules: - apiGroups: ["apiextensions.k8s.io"] resources: ["customresourcedefinitions"] verbs: ['*'] - apiGroups: ["admissionregistration.k8s.io"] resources: ["mutatingwebhookconfigurations"] verbs: ['*'] - Apply the configuration by running the following command. Make sure to replace the
<file_name.yaml>placeholder with the actual name of the YAML file:oc apply -f <file_name.yaml>oc apply -f <file_name.yaml>
- Save the following role configuration as a YAML file:
- Create a cluster-level role binding to bind the
manage-crdsrole to the ArgoCD service account.- To create the role binding for a dedicated ArgoCD instance, use the following command:
oc create clusterrolebinding manage-crds-binding --clusterrole=manage-crds --serviceaccount=<argocd>:argocd-argocd-application-controlleroc create clusterrolebinding manage-crds-binding --clusterrole=manage-crds --serviceaccount=<argocd>:argocd-argocd-application-controller - To create the role binding for a shared ArgoCD instance, use the following command:
oc create clusterrolebinding manage-crds-binding --clusterrole=manage-crds --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controlleroc create clusterrolebinding manage-crds-binding --clusterrole=manage-crds --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
- To create the role binding for a dedicated ArgoCD instance, use the following command:
- Create a role so that ArgoCD can manage the Dapr components. To create the role, take the following steps:
- Save the following role configuration as a YAML file:
apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: dapr-creator namespace: <uipath> rules: - apiGroups: ["dapr.io"] resources: ["components", "configurations", "resiliencies"] verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: name: dapr-creator namespace: <uipath> rules: - apiGroups: ["dapr.io"] resources: ["components", "configurations", "resiliencies"] verbs: ["create", "delete", "get", "list", "patch", "update", "watch"] - Apply the configuration by running the following command. Make sure to replace the
<file_name.yaml>placeholder with the actual name of the YAML file:oc apply -f <file_name.yaml>oc apply -f <file_name.yaml>
- Save the following role configuration as a YAML file:
- Create a role binding between the
dapr-creatorrole and the ArgoCD service account.- To create the role binding for a dedicated ArgoCD instance, use the following command:
oc project <uipath> oc create rolebinding dapr-creator-binding --role=dapr-creator --serviceaccount=<argocd>:argocd-argocd-application-controlleroc project <uipath> oc create rolebinding dapr-creator-binding --role=dapr-creator --serviceaccount=<argocd>:argocd-argocd-application-controller - To create the role binding for a shared ArgoCD instance, use the following command:
oc project <uipath> oc create rolebinding gitops-dapr-creator-binding --role=dapr-creator --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controlleroc project <uipath> oc create rolebinding gitops-dapr-creator-binding --role=dapr-creator --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
- To create the role binding for a dedicated ArgoCD instance, use the following command:
- Create an image pull secret in the
<uipath>namespace. To create the image pull secret, you can use your typical workflow or take the following steps:registry= <registry_url> #provide the registry where the UiPath images are hosted username= <user_name> #provide the username which will be used for the authentication password= <password> #provide the password which will be used for the authentication namespace= <namespace> #namespace where you want to create a secret oc create secret docker-registry uipathpullsecret --namespace=${namespace} \ --docker-server=${registry} --docker-username=${username} \ --docker-password=${password} --dry-run=client -o yaml \ | oc apply -f -registry= <registry_url> #provide the registry where the UiPath images are hosted username= <user_name> #provide the username which will be used for the authentication password= <password> #provide the password which will be used for the authentication namespace= <namespace> #namespace where you want to create a secret oc create secret docker-registry uipathpullsecret --namespace=${namespace} \ --docker-server=${registry} --docker-username=${username} \ --docker-password=${password} --dry-run=client -o yaml \ | oc apply -f - - Create the Argo application using the following YAML file:
apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: dapr namespace: <argo_namespace> spec: destination: namespace: <uipath_namespace> server: https://kubernetes.default.svc ignoreDifferences: - jsonPointers: - /data - /stringData - /metadata kind: Secret - group: apiextensions.k8s.io jsonPointers: - /spec/conversion kind: CustomResourceDefinition - group: admissionregistration.k8s.io jsonPointers: - /webhooks kind: MutatingWebhookConfiguration project: <project_name> source: chart: helm/dapr helm: valueFiles: - values.yaml values: | global: registry: <target-registry>/daprio imagePullSecrets: uipathpullsecret mtls: enabled: true prometheus: enabled: false logAsJson: true actors: enabled: false ha: enabled: false replicaCount: 1 rbac: namespaced: true seccompProfile: RuntimeDefault dapr_dashboard: enabled: false dapr_operator: watchInterval: 1m resources: requests: cpu: 100m memory: 100Mi limits: cpu: "1" memory: 200Mi watchNamespace: <uipath_namespace> deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_sidecar_injector: allowedServiceAccounts: <uipath_namespace>:default resources: requests: cpu: 100m memory: 30Mi limits: cpu: "1" memory: 100Mi sidecarDropALLCapabilities: true deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_sentry: resources: requests: cpu: 100m memory: 30Mi limits: cpu: "1" memory: 100Mi deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_rbac: secretReader: enabled: false createClusterScopedObjects: true repoURL: <target-registry> targetRevision: <dapr-version> syncPolicy: automated: prune: true selfHeal: true retry: backoff: duration: 10s factor: 2 maxDuration: 1m limit: 1000 syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=trueapiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: dapr namespace: <argo_namespace> spec: destination: namespace: <uipath_namespace> server: https://kubernetes.default.svc ignoreDifferences: - jsonPointers: - /data - /stringData - /metadata kind: Secret - group: apiextensions.k8s.io jsonPointers: - /spec/conversion kind: CustomResourceDefinition - group: admissionregistration.k8s.io jsonPointers: - /webhooks kind: MutatingWebhookConfiguration project: <project_name> source: chart: helm/dapr helm: valueFiles: - values.yaml values: | global: registry: <target-registry>/daprio imagePullSecrets: uipathpullsecret mtls: enabled: true prometheus: enabled: false logAsJson: true actors: enabled: false ha: enabled: false replicaCount: 1 rbac: namespaced: true seccompProfile: RuntimeDefault dapr_dashboard: enabled: false dapr_operator: watchInterval: 1m resources: requests: cpu: 100m memory: 100Mi limits: cpu: "1" memory: 200Mi watchNamespace: <uipath_namespace> deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_sidecar_injector: allowedServiceAccounts: <uipath_namespace>:default resources: requests: cpu: 100m memory: 30Mi limits: cpu: "1" memory: 100Mi sidecarDropALLCapabilities: true deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_sentry: resources: requests: cpu: 100m memory: 30Mi limits: cpu: "1" memory: 100Mi deploymentAnnotations: sidecar.istio.io/inject: "false" dapr_rbac: secretReader: enabled: false createClusterScopedObjects: true repoURL: <target-registry> targetRevision: <dapr-version> syncPolicy: automated: prune: true selfHeal: true retry: backoff: duration: 10s factor: 2 maxDuration: 1m limit: 1000 syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true
The following table provides further information on replacing the placeholders in the YAML file with adequate values for the respective parameters:
| Parameter | Placeholder | Description |
|---|---|---|
namespace |
|
|
|
|
| Namespace for Automation Suite |
project |
|
|
|
|
| Helm chart registry |
targetRevision |
| Version of the Dapr Helm chart from the versions.json file |
If you update the FQDN post-installation, you must delete and recreate the Dapr application by taking the following steps:
- In the ArgoCD UI, navigate to Dapr > Delete.
- Install Dapr again by following all the steps in this section.
Generating the application YAML file via Bash script
You can also use the following Bash script to generate the application YAML file:
#!/bin/bas
echo "Enter the namespace of argocd applications"
read argocd_namespace
echo "Enter the name of uipath namespace"
read uipath_namespace
if [[ "${argocd_namespace}" == "openshift-gitops" ]]; then
echo "Enter the argocd project name"
read project
else
project="default"
fi
echo "Enter the registry fqdn"
read registry_fqdn
echo "Enter the DAPR helm chart version"
read dapr_version
echo "-------------------- SUMMARY --------------------"
echo "Argocd Application namespace : $argocd_namespace"
echo "Uipath namespace : $uipath_namespace"
echo "Argocd Project name : $project"
echo "Helm registry FQDN : $registry_fqdn"
echo "DAPR Version : $dapr_version"
echo "------------- Application yaml file-------------"
echo -n "apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dapr
namespace: $argocd_namespace
spec:
destination:
namespace: $uipath_namespace
server: https://kubernetes.default.svc
ignoreDifferences:
- jsonPointers:
- /data
- /stringData
- /metadata
kind: Secret
- group: apiextensions.k8s.io
jsonPointers:
- /spec/conversion
kind: CustomResourceDefinition
- group: admissionregistration.k8s.io
jsonPointers:
- /webhooks
kind: MutatingWebhookConfiguration
project: $project
source:
chart: helm/dapr
helm:
valueFiles:
- values.yaml
values: |
global:
registry: $registry_fqdn/daprio
imagePullSecrets: uipathpullsecret
mtls:
enabled: true
prometheus:
enabled: false
logAsJson: true
actors:
enabled: false
ha:
enabled: false
replicaCount: 1
rbac:
namespaced: true
seccompProfile: RuntimeDefault
dapr_dashboard:
enabled: false
dapr_operator:
watchInterval: 1m
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: "1"
memory: 200Mi
watchNamespace: $uipath_namespace
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_sidecar_injector:
allowedServiceAccounts: $uipath_namespace:default
resources:
requests:
cpu: 100m
memory: 30Mi
limits:
cpu: "1"
memory: 100Mi
sidecarDropALLCapabilities: true
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_sentry:
resources:
requests:
cpu: 100m
memory: 30Mi
limits:
cpu: "1"
memory: 100Mi
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_rbac:
secretReader:
enabled: false
createClusterScopedObjects: true
repoURL: $registry_fqdn
targetRevision: $dapr_version
syncPolicy:
automated:
prune: true
selfHeal: true
retry:
backoff:
duration: 10s
factor: 2
maxDuration: 1m
limit: 1000
syncOptions:
- CreateNamespace=true
- RespectIgnoreDifferences=true"
#!/bin/bas
echo "Enter the namespace of argocd applications"
read argocd_namespace
echo "Enter the name of uipath namespace"
read uipath_namespace
if [[ "${argocd_namespace}" == "openshift-gitops" ]]; then
echo "Enter the argocd project name"
read project
else
project="default"
fi
echo "Enter the registry fqdn"
read registry_fqdn
echo "Enter the DAPR helm chart version"
read dapr_version
echo "-------------------- SUMMARY --------------------"
echo "Argocd Application namespace : $argocd_namespace"
echo "Uipath namespace : $uipath_namespace"
echo "Argocd Project name : $project"
echo "Helm registry FQDN : $registry_fqdn"
echo "DAPR Version : $dapr_version"
echo "------------- Application yaml file-------------"
echo -n "apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: dapr
namespace: $argocd_namespace
spec:
destination:
namespace: $uipath_namespace
server: https://kubernetes.default.svc
ignoreDifferences:
- jsonPointers:
- /data
- /stringData
- /metadata
kind: Secret
- group: apiextensions.k8s.io
jsonPointers:
- /spec/conversion
kind: CustomResourceDefinition
- group: admissionregistration.k8s.io
jsonPointers:
- /webhooks
kind: MutatingWebhookConfiguration
project: $project
source:
chart: helm/dapr
helm:
valueFiles:
- values.yaml
values: |
global:
registry: $registry_fqdn/daprio
imagePullSecrets: uipathpullsecret
mtls:
enabled: true
prometheus:
enabled: false
logAsJson: true
actors:
enabled: false
ha:
enabled: false
replicaCount: 1
rbac:
namespaced: true
seccompProfile: RuntimeDefault
dapr_dashboard:
enabled: false
dapr_operator:
watchInterval: 1m
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: "1"
memory: 200Mi
watchNamespace: $uipath_namespace
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_sidecar_injector:
allowedServiceAccounts: $uipath_namespace:default
resources:
requests:
cpu: 100m
memory: 30Mi
limits:
cpu: "1"
memory: 100Mi
sidecarDropALLCapabilities: true
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_sentry:
resources:
requests:
cpu: 100m
memory: 30Mi
limits:
cpu: "1"
memory: 100Mi
deploymentAnnotations:
sidecar.istio.io/inject: "false"
dapr_rbac:
secretReader:
enabled: false
createClusterScopedObjects: true
repoURL: $registry_fqdn
targetRevision: $dapr_version
syncPolicy:
automated:
prune: true
selfHeal: true
retry:
backoff:
duration: 10s
factor: 2
maxDuration: 1m
limit: 1000
syncOptions:
- CreateNamespace=true
- RespectIgnoreDifferences=true"
Uninstalling Dapr
You should not remove this resource if Task Mining is enabled. Task Mining is dependent on Dapr.
Prerequisites
- OpenShift CLI (
oc) installed and configured. - Appropriate permissions to delete resources in the target namespaces.
Information required
Before proceeding, you must gather the following information:
- UiPath namespace where Dapr is installed.
- ArgoCD namespace (typically
argocdoropenshift-gitops). - Whether this is a shared ArgoCD instance or a dedicated one.
Step-by-step uninstallation process
-
Delete the Dapr application from ArgoCD:
# Verify the application exists first oc get application.argoproj.io dapr -n <argocd_namespace> # If it exists, delete it oc delete application.argoproj.io dapr -n <argocd_namespace># Verify the application exists first oc get application.argoproj.io dapr -n <argocd_namespace> # If it exists, delete it oc delete application.argoproj.io dapr -n <argocd_namespace>Wait for resources to be deleted.
-
Delete Dapr custom resources:
# Delete all Dapr components in the UiPath namespace oc delete components.dapr.io --all -n <uipath_namespace> # Delete all Dapr configurations in the UiPath namespace oc delete configurations.dapr.io --all -n <uipath_namespace> # Delete all Dapr resiliencies in the UiPath namespace oc delete resiliencies.dapr.io --all -n <uipath_namespace> # Delete all Dapr subscriptions in the UiPath namespace oc delete subscriptions.dapr.io --all -n <uipath_namespace># Delete all Dapr components in the UiPath namespace oc delete components.dapr.io --all -n <uipath_namespace> # Delete all Dapr configurations in the UiPath namespace oc delete configurations.dapr.io --all -n <uipath_namespace> # Delete all Dapr resiliencies in the UiPath namespace oc delete resiliencies.dapr.io --all -n <uipath_namespace> # Delete all Dapr subscriptions in the UiPath namespace oc delete subscriptions.dapr.io --all -n <uipath_namespace> -
Delete Dapr custom resource definitions (CRDs):
# Delete Dapr CRDs oc delete crd components.dapr.io oc delete crd configurations.dapr.io oc delete crd resiliencies.dapr.io oc delete crd subscriptions.dapr.io# Delete Dapr CRDs oc delete crd components.dapr.io oc delete crd configurations.dapr.io oc delete crd resiliencies.dapr.io oc delete crd subscriptions.dapr.io -
Remove Dapr webhook configurations:
# Delete the Dapr sidecar injector webhook oc delete mutatingwebhookconfigurations dapr-sidecar-injector# Delete the Dapr sidecar injector webhook oc delete mutatingwebhookconfigurations dapr-sidecar-injector -
Remove Dapr-specific role bindings
- For shared ArgoCD instance:
# Verify if the role binding exists oc get rolebinding gitops-dapr-creator-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding gitops-dapr-creator-binding -n <uipath_namespace> # Check for cert-manager binding (may be used by other applications) oc get rolebinding gitops-cert-manager-binding -n <uipath_namespace> # If it exists and you determine it's safe to delete, run: oc delete rolebinding gitops-cert-manager-binding -n <uipath_namespace># Verify if the role binding exists oc get rolebinding gitops-dapr-creator-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding gitops-dapr-creator-binding -n <uipath_namespace> # Check for cert-manager binding (may be used by other applications) oc get rolebinding gitops-cert-manager-binding -n <uipath_namespace> # If it exists and you determine it's safe to delete, run: oc delete rolebinding gitops-cert-manager-binding -n <uipath_namespace> - For dedicated ArgoCD instance:
# Verify if the role binding exists oc get rolebinding dapr-creator-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding dapr-creator-binding -n <uipath_namespace># Verify if the role binding exists oc get rolebinding dapr-creator-binding -n <uipath_namespace> # If it exists, delete it oc delete rolebinding dapr-creator-binding -n <uipath_namespace>
- For shared ArgoCD instance:
-
Remove Dapr-specific roles:
# Check if the dapr-creator role exists oc get role dapr-creator -n <uipath_namespace> # If it exists, delete it oc delete role dapr-creator -n <uipath_namespace># Check if the dapr-creator role exists oc get role dapr-creator -n <uipath_namespace> # If it exists, delete it oc delete role dapr-creator -n <uipath_namespace> -
Clean up remaining Dapr resources
- Pods:
# List all Dapr-related pods oc get pods -n <uipath_namespace> | grep dapr # Delete each Dapr pod oc delete pod <pod_name> -n <uipath_namespace># List all Dapr-related pods oc get pods -n <uipath_namespace> | grep dapr # Delete each Dapr pod oc delete pod <pod_name> -n <uipath_namespace> - Services:
# List all Dapr-related services oc get svc -n <uipath_namespace> | grep dapr # Delete each Dapr service oc delete svc <service_name> -n <uipath_namespace># List all Dapr-related services oc get svc -n <uipath_namespace> | grep dapr # Delete each Dapr service oc delete svc <service_name> -n <uipath_namespace> - Deployments:
# List all Dapr-related deployments oc get deployments -n <uipath_namespace> | grep dapr # Delete each Dapr deployment oc delete deployment <deployment_name> -n <uipath_namespace># List all Dapr-related deployments oc get deployments -n <uipath_namespace> | grep dapr # Delete each Dapr deployment oc delete deployment <deployment_name> -n <uipath_namespace>
- Pods:
Verification
After completing all the uninstallation steps, verify that all Dapr components have been removed:
# Check for any remaining Dapr resources
oc get pods -n <uipath_namespace> | grep dapr
oc get svc -n <uipath_namespace> | grep dapr
oc get deployments -n <uipath_namespace> | grep dapr
oc get crd | grep dapr
# Check for any remaining Dapr resources
oc get pods -n <uipath_namespace> | grep dapr
oc get svc -n <uipath_namespace> | grep dapr
oc get deployments -n <uipath_namespace> | grep dapr
oc get crd | grep dapr
Troubleshooting
If certain resources cannot be deleted:
- Ensure you have the necessary permissions.
- Check if the resources are being managed by another controller.
- Investigate any dependencies that might be preventing deletion.
Notes
- Replace
<uipath_namespace>with your actual UiPath namespace. - Replace
<argocd_namespace>with your actual ArgoCD namespace. - Be cautious when deleting shared resources that might affect other applications.
Configuring Airflow
ArgoCD requires the following role during the Airflow installation:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: anyuid-role
namespace: <uipath>
rules:
- apiGroups: ["security.openshift.io"]
resources: ["securitycontextconstraints"]
resourceNames: ["anyuid"]
verbs: ["use"]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: anyuid-role
namespace: <uipath>
rules:
- apiGroups: ["security.openshift.io"]
resources: ["securitycontextconstraints"]
resourceNames: ["anyuid"]
verbs: ["use"]
To create the role binding for a dedicated ArgoCD instance, run the following command:
oc create rolebinding argocd-anyuid-binding --role=anyuid-role \
--serviceaccount=<argocd>:argocd-argocd-application-controller -n <uipath>
oc create rolebinding argocd-anyuid-binding --role=anyuid-role \
--serviceaccount=<argocd>:argocd-argocd-application-controller -n <uipath>
You do not need to perform any additional configuration for a shared ArgoCD instance.
- Installing cert-manager
- Uninstalling Cert Manager
- Prerequisites
- Information required
- Step-by-step uninstallation process
- Troubleshooting
- Notes
- Installing Dapr
- Generating the application YAML file via Bash script
- Uninstalling Dapr
- Prerequisites
- Information required
- Step-by-step uninstallation process
- Verification
- Troubleshooting
- Notes
- Configuring Airflow