UiPath Documentation
automation-suite
2.2510
true
Guide d'installation d'Automation Suite sur OpenShift
Important :
Veuillez noter que ce contenu a été localisé en partie à l’aide de la traduction automatique. La localisation du contenu nouvellement publié peut prendre 1 à 2 semaines avant d’être disponible.

Octroi d'autorisations d'installation sans rôles de cluster

Accordez l'autorisation du programme d'installation d'Automation Suite à l'échelle de l'espace de noms sur OpenShift et disponible l'absence de rôles au niveau du cluster avec des ressources pré-créées.

Important :

Cette page s'applique uniquement lorsque votre stratégie de sécurité interdit d'accorder des autorisations à l'échelle du cluster (ClusterRole ou ClusterRoleBinding) au compte de service d'installation d'Automation Suite (uipathadmin). Si vous pouvez accorder les autorisations à l'échelle du cluster, reportez-vous à la section Octroi d'autorisations d'installation avec des rôles de cluster .

Si vous installez plusieurs instances d'Automation Suite sur le même cluster, vous devez accorder des autorisations pour les autres espaces de noms dans lesquels vous installez Automation Suite.

Cette page explique comment accorder au programme d'installation d'Automation Suite les autorisations dont il a besoin sans attribuer d'autorisations à l'échelle du cluster.

Vous conservez le compte de service uipathadmin strictement à l'échelle de l'espace de noms: vous ignorez les deux ressources ClusterRole au niveau du cluster et le flux standard ClusterRoleBinding, et vous compensationz les lectures manquantes au niveau du cluster avec un ensemble de prérequis - ressources créées et indicateurs uipathctl.

Remarque :

Vous devez exécuter les commandes référencées dans cette section à partir d'une machine Linux, Windows ou macOS qui a accès au serveur d'API OpenShift Kubernetes.

Les commandes qui effectuent des actions d'administration (création du certificat Secret) doivent être exécutées par un administrateur de cluster. Les commandes qui effectuent des actions uipathadmin utilisent les actions kubeconfig que vous générez à l'étape 4.

Pour accorder des autorisations d’installation sans rôles de cluster, effectuez les étapes suivantes:

  1. Création d'un compte de service
  2. Créer les rôles d'étendue de l'espace de noms requis
  3. Liaison des rôles
  4. Générer le fichier kubeconfig
  5. Configuration de input.json pour un fonctionnement en mode restreint
  6. Pré-créer la clé secrète du certificat TLS
  7. Installer et configurer l'outil Service Mesh et GitOps

Étape 1 : création d'un compte de service​

Pour créer un compte de service, procédez comme suit :

  1. Créez l'espace de noms et le projet <uipath> :

    oc get namespace <uipath> || oc new-project <uipath>
    oc get namespace <uipath> || oc new-project <uipath>
    
  2. Définissez l'espace de noms et le projet par défaut sur <uipath>:

    oc project <uipath>
    oc project <uipath>
    

    Toutes les commandes oc ultérieures fonctionneront dans l'espace de noms <uipath> .

  3. Créez un compte de service nommé uipathadmin:

    oc create serviceaccount uipathadmin
    oc create serviceaccount uipathadmin
    
  4. Utilisez le rôle de cluster admin existant pour accorder des autorisations d'administrateur au compte de service uipathadmin dans l'espace de noms <uipath> :

    oc create rolebinding uipathadmin --clusterrole=admin --serviceaccount=<uipath>:uipathadmin
    oc create rolebinding uipathadmin --clusterrole=admin --serviceaccount=<uipath>:uipathadmin
    
    Remarque :

    Il s'agit d'une RoleBinding étendue de l'espace de noms qui fait référence au rôle de cluster admin intégré. Il accorde des autorisations d'administrateur uipathadmin uniquement dans l'espace de noms <uipath>, et non à l'échelle du cluster. Aucun ClusterRoleBinding n’est créé.

Étape 2: Créer les rôles d'étendue de l'espace de noms requis​

Le compte de service uipathadmin nécessite certaines autorisations lors de l’installation d’Automation Suite. Dans le flux de rôles sans cluster, vous fournissez ces autorisations via des rôles à l'échelle de l'espace de noms uniquement.

Pour créer chaque rôle, enregistrez sa configuration sous forme de fichier YAML et exécutez la commande suivante, en remplaçant l'espace réservé <file_name.yaml> par le nom réel du fichier YAML:

oc apply -f <file_name.yaml>
oc apply -f <file_name.yaml>

Vous pouvez créer le fichier YAML pour chaque rôle en copiant la configuration à partir des sections suivantes.

Les rôles suivants au niveau de l'espace de noms sont les seuls rôles dont uipathadmin a besoin dans ce flux. Les vérifications des prérequis qui reposeraient autrement sur des lectures au niveau du cluster sont exclues et validées hors du groupe, comme décrit dans Exécution de vérifications des prérequis sans rôles de cluster.

Autorisations d'installation dans le <uipath> espace de noms​

La plupart des installations d'Automation Suite s'exécutent via ArgoCD, mais certains composants sont installés directement via les graphiques Helm. L'outil uipathctl exécute une tâche d'installation qui effectue ces installations Helm dans l'espace de noms <uipath>. Pour ce faire, uipathadmin a besoin d'un rôle à l'échelle de l'espace de noms qui peut créer et gérer des rôles, des liaisons de rôle, des secrets et des cartes de configuration.

L'exemple suivant présente la configuration uipath-automationsuite-role:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: uipath-automationsuite-role
  namespace: <uipath>
rules:
  - apiGroups: ["rbac.authorization.k8s.io"]
    resources: ["roles", "rolebindings"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]
  - apiGroups: [""]
    resources: ["secrets", "configmaps"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]
  - apiGroups: ["security.istio.io", "networking.istio.io"]
    resources: ["*"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: uipath-automationsuite-role
  namespace: <uipath>
rules:
  - apiGroups: ["rbac.authorization.k8s.io"]
    resources: ["roles", "rolebindings"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]
  - apiGroups: [""]
    resources: ["secrets", "configmaps"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]
  - apiGroups: ["security.istio.io", "networking.istio.io"]
    resources: ["*"]
    verbs: ["get", "watch", "list", "patch", "update", "create", "delete"]

Autorisations de certificat et de validation dans le <istio-system> espace de noms​

Remarque :

Il est possible que l’espace de noms ne existe pas dans votre cluster si vous n’avez pas encore installé Istio. Vous pouvez créer l'espace de noms et le rôle avant d'installer Istio, ou vous pouvez créer le rôle après avoir installé Istio.

Les opérations suivantes sont effectuées dans l'espace de noms <istio-system> :

  1. L'outil de vérification des prérequis Automation Suite lit les pods et les services dans l'espace de noms <istio-system> pour vérifier qu'Istio est installé et configuré correctement.
  2. L'autorisation get secrets est requise pour copier le fichier de certificat depuis l'espace de noms <istio-system> vers l'espace de noms <uipath> .

Étant donné que uipathadmin ne configure pas Istio et n'installe pas le plug-in WebAssembly dans le flux de rôles sans cluster, vous utilisez la variante en lecture seule de ce rôle. Un administrateur de cluster effectue ces opérations à la place (se référer à l'étape 7).

L'exemple suivant présente la configuration istio-system-automationsuite-role:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: istio-system-automationsuite-role
  namespace: <istio-system>
rules:
  - apiGroups: [""]
    resources: ["services", "pods"]
    verbs: ["list"]
  - apiGroups: [""]
    resources: ["secrets"]
    resourceNames: ["istio-ingressgateway-certs"]
    verbs: ["get"]
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: istio-system-automationsuite-role
  namespace: <istio-system>
rules:
  - apiGroups: [""]
    resources: ["services", "pods"]
    verbs: ["list"]
  - apiGroups: [""]
    resources: ["secrets"]
    resourceNames: ["istio-ingressgateway-certs"]
    verbs: ["get"]

Étape 3 : Liaison des rôles​

Liez les rôles d'étendue de l'espace de noms que vous avez créés à l'étape précédente au compte de service uipathadmin en exécutant les commandes suivantes:

oc project <istio-system>
oc create rolebinding istio-system-automationsuite-rolebinding \
  --role=istio-system-automationsuite-role --serviceaccount=<uipath>:uipathadmin
oc project <uipath>
oc create rolebinding uipath-automationsuite-rolebinding \
  --role=uipath-automationsuite-role --serviceaccount=<uipath>:uipathadmin
oc project <istio-system>
oc create rolebinding istio-system-automationsuite-rolebinding \
  --role=istio-system-automationsuite-role --serviceaccount=<uipath>:uipathadmin
oc project <uipath>
oc create rolebinding uipath-automationsuite-rolebinding \
  --role=uipath-automationsuite-role --serviceaccount=<uipath>:uipathadmin

Étape 4 : génération du fichier kubeconfig​

Après avoir attribué toutes les autorisations au compte de service, vous devez créer un fichier kubeconfig à transmettre à l'outil uipathctl pour l'installation.

Génération du fichier kubeconfig sur Linux ou Mac​

Pour générer le fichier kubeconfig sur Linux ou Mac, exécutez les commandes suivantes :

# For generating kubeconfig
# Creates the token for uipathadmin service account
token=$(oc -n <uipath> create token uipathadmin --duration=8760h)
# Getting api-server details
server=$(oc config view -o jsonpath="{.clusters[]..server}")
# Login logs on using the provided token and server and outputs kubeconfig at the provided path.
oc login --server=$server --token=$token --kubeconfig=uipathadminkubeconfig --insecure-skip-tls-verify=true
# For generating kubeconfig
# Creates the token for uipathadmin service account
token=$(oc -n <uipath> create token uipathadmin --duration=8760h)
# Getting api-server details
server=$(oc config view -o jsonpath="{.clusters[]..server}")
# Login logs on using the provided token and server and outputs kubeconfig at the provided path.
oc login --server=$server --token=$token --kubeconfig=uipathadminkubeconfig --insecure-skip-tls-verify=true

Si l'opération a réussi, vous devriez voir un fichier kubeconfig nommé uipathadminkubeconfig.

Génération du fichier kubeconfig sur Windows​

Remarque :

Vous devez effectuer cette étape à l'aide de Windows Powershell.

Pour générer le fichier kubeconfig sur Windows, exécutez les commandes suivantes :

# For generating kubeconfig
# Creates the token for uipathadmin service account
$token = oc -n <uipath> create token uipathadmin --duration=8760h
# Getting api-server details
$server = oc config view -o jsonpath="{.clusters[]..server}"
# Login logs on using the provided token and server and outputs kubeconfig at the provided path.
oc login --server=$server --token=$token --kubeconfig=uipathadminkubeconfig --insecure-skip-tls-verify=true
# For generating kubeconfig
# Creates the token for uipathadmin service account
$token = oc -n <uipath> create token uipathadmin --duration=8760h
# Getting api-server details
$server = oc config view -o jsonpath="{.clusters[]..server}"
# Login logs on using the provided token and server and outputs kubeconfig at the provided path.
oc login --server=$server --token=$token --kubeconfig=uipathadminkubeconfig --insecure-skip-tls-verify=true

Si l'opération a réussi, vous devriez voir un fichier kubeconfig nommé uipathadminkubeconfig.

Étape 5: configuration de input.json pour le fonctionnement en mode restreint​

Dans le flux sans rôle de cluster, vous devez ajouter quelques clés à votre input.json afin que uipathctl et les graphiques de service UiPath évitent les opérations qui nécessitent des lectures ou des ressources au niveau du cluster. Les sections suivantes expliquent chaque clé.

5.1 Classes de priorité​

Définissez ignore_priority_class sur true:

{
  "ignore_priority_class": true
}
{
  "ignore_priority_class": true
}

Ce paramètre effectue les opérations suivantes:

  • Il indique à uipathctl d’ignorer sa propre recherche priorityclasses.scheduling.k8s.io, ce qui nécessiterait autrement une lecture au niveau du cluster.
  • Il le propage à tous les graphiques de service UiPath, qui omettent ensuite priorityClassName de leurs charges de travail.

Par conséquent, aucun pod Automation Suite ne référence une PriorityClass, donc aucun PriorityClass ne doit exister sur le cluster et aucun ne doit être pré-créé.

5.2 Certificats et entrées​

Ajoutez les clés de certificat et d'entrée. Pour de plus amples informations sur les clés liées aux certificats, consultez la section Exigences relatives aux certificats.

{
  "server_certificate": {
    "tls_cert_file": "<path-to-tls.crt>",
    "tls_key_file":  "<path-to-tls.key>",
    "ca_cert_file":  "<path-to-ca.crt>"
  },

  "ingress": {
    "namespace": "<istio-system>",
    "gateway_selector": { "istio": "ingressgateway" },
    "ingress_gateway_secret": "istio-ingressgateway-certs"
  },

  "additional_ca_certs": "<path-to-ca.crt>"
}
{
  "server_certificate": {
    "tls_cert_file": "<path-to-tls.crt>",
    "tls_key_file":  "<path-to-tls.key>",
    "ca_cert_file":  "<path-to-ca.crt>"
  },

  "ingress": {
    "namespace": "<istio-system>",
    "gateway_selector": { "istio": "ingressgateway" },
    "ingress_gateway_secret": "istio-ingressgateway-certs"
  },

  "additional_ca_certs": "<path-to-ca.crt>"
}

La clé additional_ca_certs est requise uniquement lorsque votre certificat TLS est signé par une autorité de certification privée ou auto-signée. Il propage le bundle d'autorité de certification au magasin approuvé de tous les pods Automation Suite.

5.3 Limite de simultanéité des Robots AS​

Important :

Cette étape est requise uniquement si vous activez AS Robots (asrobots).

Si vous activez AS Robots, définissez une concurrency_limit explicite:

{
  "asrobots": {
    "enabled": true,
    "concurrency_limit": 2
  }
}
{
  "asrobots": {
    "enabled": true,
    "concurrency_limit": 2
  }
}

Lorsque concurrency_limit n'est pas défini, le graphique AS Robots déploie une ClusterRole et une ClusterRoleBinding pour lire automatiquement la capacité des nœuds et calculer la simultanéité des robots. Une instance ArgoCD disposant d'un espace de noms ne peut pas gérer ces ressources à l'échelle du cluster, de sorte que l'application asrobots ne parvient pas à synchroniser:

ComparisonError: cluster level ClusterRoleBinding "<uipath>-asrobots-robot-resources-crb" can not be managed when in namespaced mode
ComparisonError: cluster level ClusterRoleBinding "<uipath>-asrobots-robot-resources-crb" can not be managed when in namespaced mode

Avec une concurrency_limit explicite, le graphique ne déploie aucune ressource à l'échelle du cluster.

5.4 Apportez vos propres composants​

Étant donné que uipathadmin ne dispose pas d'autorisations à l'échelle du cluster dans ce flux, le programme d'installation ne peut pas déployer les composants de plateforme qui créent des ressources à l'échelle du cluster (Istio, OPA Gatekeeper, cert-manager et les stratégies réseau). Vous devez enregistrer ces composants vous-même et les répertorier dans exclude_components afin que le programme d'installation les ignore.

Répertoriez les composants que vous vous fournissez dans exclude_components et définissez telemetry_optout sur true, car la télémétrie ne peut pas être activée dans ce flux. Pour obtenir la liste et les détails des composants, consultez la section Sans rôles de cluster.

Étape 6: pré-créer la clé secrète du certificat TLS​

Étant donné que uipathadmin est uniquement spécifique à l'espace de noms, un administrateur de cluster doit créer le istio-ingressgateway-certs Secret dans l'espace de noms <istio-system> avant l'installation. Cela n’accorde à uipathadmin aucun privilège supplémentaire; elle remplace le travail que uipathadmin aurait effectué s'il disposait des autorisations au niveau du cluster. (Aucun PriorityClass ne doit être créé - cette dépendance est supprimée par ignore_priority_class à l’ étape 5.1.)

Le istio-ingressgateway-certs Secret est créé dans le cadre de la configuration du service Mesh. Pour le créer, reportez-vous à Configuration d'Istio et installation du plug-in WASM pour le routage.

Étant donné que uipathadmin contient uniquement le fichier istio-system-automationsuite-role en lecture seule, il peut lire ce fichier Secret mais ne peut pas le créer; un administrateur de cluster doit la créer.

Assurez-vous que Secret contient les trois clés - tls.crt, tls.key et ca.crt - car la clé ca.crt est requise lorsque votre certificat TLS est signé par une autorité de certification privée ou auto-signée.

Étape 7: installation et configuration du service Mesh et de l’outil GitOps​

Suivez les procédures standard pour l’outil Service Mesh et GitOps. Ces procédures créent des rôles et des liaisons supplémentaires à l’échelle de l’espace de noms pour uipathadmin dans l’espace de noms <argocd>; aucun d'eux ne nécessite des autorisations à l'échelle du cluster sur uipathadmin.

  • Installation et configuration du service Mesh - installez OpenShift Service Mesh. Étant donné que uipathadmin s'exécute avec le rôle <istio-system> en lecture seule, il ne peut pas configurer Istio ou installer le plug-in WASM lui-même; un administrateur de cluster doit configurer istio-configure avant l'installation d'Automation Suite.
  • Installation et configuration de l'outil GitOps - enregistrez l'instance ArgoCD dédiée et effectuez toutes les étapes.

Pour les istio-configure étapes de configuration, reportez-vous à Configuration d'Istio et installation du plug-in WASM pour le routage.

Cette page vous a-t-elle été utile ?

Connecter

Besoin d'aide ? Assistance

Vous souhaitez apprendre ? UiPath Academy

Vous avez des questions ? UiPath Forum

Rester à jour