UiPath Documentation
automation-suite
2024.10
false
UiPath logo, featuring letters U and I in white

Automation Suite on OpenShift installation guide

Last updated Mar 26, 2026

Meeting the Process Mining prerequisites

Important:

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

Note:

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

  1. 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>
      
  2. 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>
    
  3. 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
    
  4. Uninstall the cert-manager via operator hub in the OpenShift console.
  5. 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:

  1. Create a cluster-level role so that ArgoCD can manage custom resource definitions and mutating webhooks. To create the role, take the following steps:
    1. 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: ['*']
      
    2. 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>
      
  2. Create a cluster-level role binding to bind the manage-crds role 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-controller
      oc 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-controller
      oc create clusterrolebinding manage-crds-binding --clusterrole=manage-crds --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
      
  3. Create a role so that ArgoCD can manage the Dapr components. To create the role, take the following steps:
    1. 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"]
      
    2. 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>
      
  4. Create a role binding between the dapr-creator role 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-controller
      oc 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-controller
      oc project <uipath>
      oc create rolebinding gitops-dapr-creator-binding --role=dapr-creator --serviceaccount=<openshift-gitops>:openshift-gitops-argocd-application-controller
      
  5. 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 -
    
  6. 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=true
    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=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

<argo_namespace>

  • Use <argocd> for a dedicated ArgoCD instance.
  • Use <openshift-gitops> for a shared ArgoCD instance.

namespace

watchNamespace

<uipath_namespace>

Namespace for Automation Suite

project

<project_name>

  • For a dedicated ArgoCD instance, use default .
  • For a shared ArgoCD instance, use the name of the project created for Automation Suite.

registry

repoURL

<target-registry>

Helm chart registry

targetRevision

<dapr-version>

Version of the Dapr Helm chart from the versions.json file
Note:

If you update the FQDN post-installation, you must delete and recreate the Dapr application by taking the following steps:

  1. In the ArgoCD UI, navigate to Dapr > Delete.
  2. 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

Note:

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 argocd or openshift-gitops).
  • Whether this is a shared ArgoCD instance or a dedicated one.

Step-by-step uninstallation process

  1. 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.

  2. 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>
    
  3. 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
    
  4. 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
    
  5. 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>
      
  6. 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>
    
  7. 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>
      

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.

Was this page helpful?

Connect

Need help? Support

Want to learn? UiPath Academy

Have questions? UiPath Forum

Stay updated