配置定制资源

了解如何在 Red Hat® OpenShift® Container Platform上为 IBM Robotic Process Automation 配置定制资源。

有关配置私钥的更多信息,请参阅 私钥 🡥

开始之前

在创建 IBM RPA 定制资源之前,需要创建四个私钥:

  • 数据库连接私钥
    创建包含数据库连接字符串的私钥。

  • SMTP 密钥
    创建包含 SMTP 服务器的用户名和密码的密钥。

  • 第一个租户所有者私钥
    从 V 21.0.6: 开始 创建包含第一个租户所有者的名称和电子邮件的私钥。

  • 仪表板密码私钥
    如果多个 IBM RPA 实例共享数据库服务器,那么它们必须共享仪表板密码。 为共享数据库服务器的每个 IBM RPA 实例创建包含相同密码的私钥。

    从 V 21.0.3开始,您不再需要创建仪表板私钥。 如果您的版本为 21.0.3 或更高版本,请跳过此步骤。

  • Redis password secret
    可选。 在输入 IBM RPA 操作程序之前,请为 Redis 创建密码密钥。

    如果跳过此步骤,那么操作程序将生成缺省凭证,但您将收到一条警告消息以更改 Redis 密码。 您必须使用新的 Redis 私钥重新安装 IBM RPA 操作程序,以有效更改密码并除去警告消息。

有关配置私钥的更多信息,请参阅 私钥 🡥

创建数据库私钥

使用以下命令创建该私钥:

oc create secret generic <NAME> -n <NAMESPACE> --from-literal=AddressContext='<ADDRESS_CONTEXT_CONNECTION_STRING>' --from-literal=AutomationContext='<AUTOMATION_CONTEXT_CONNECTION_STRING>' --from-literal=KnowledgeBase='<KNOWLEDGEBASE_CONTEXT_CONNECTION_STRING>' --from-literal=WordnetContext='<WORDNET_CONTEXT_CONNECTION_STRING>' --from-literal=AuditContext='<AUDIT_CONTEXT_CONNECTION_STRING>'

替换以下值:

  • NAME
    您私钥的名称。 它必须与 CR 的 externalConnection 部分中指定的名称相匹配。

  • NAMESPACE
    您要在其中创建私钥的名称空间。 它可以是您在其中创建 IBM RPA 实例的名称空间。

  • ADDRESS_CONTEXT_CONNECTION_STRING
    与地址数据库的连接字符串。

  • AUTOMATION_CONTEXT_CONNECTION_STRING
    到自动化数据库的连接字符串。

  • KNOWLEDGEBASE_CONTEXT_CONNECTION_STRING
    与知识库数据库的连接字符串。

  • WORDNET_CONTEXT_CONNECTION_STRING
    与 wordnet 数据库的连接字符串。

  • AUDIT_CONTEXT_CONNECTION_STRING
    与审计数据库的连接字符串。

这些连接字符串必须与您创建的 Microsoft SQL Server 数据库相对应,如 数据库需求 文档中所述。

下面是示例连接字符串:

Data Source=dbserver.example.com\SQLEXPRESS,1433;Initial Catalog=automation;User ID=dbuser;Password=dbpass;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False

创建 SMTP 私钥

使用以下命令创建该私钥:

oc create secret generic <NAME> -n <NAMESPACE> --from-literal=username=<USERNAME> --from-literal=password=<PASSWORD>

替换以下值:

  • NAME
    您私钥的名称。 它必须与 CR 的 smtp 部分的 userSecret 属性中指定的名称相匹配。

  • NAMESPACE
    您要在其中创建私钥的名称空间。 它需要与您在其中创建 IBM RPA 实例的名称空间相同。

  • USERNAME
    smtp 服务器的用户名。

  • PASSWORD
    smtp 服务器的密码。

创建第一个租户所有者私钥

从 21.0.6: 现在需要此私钥。

使用以下命令创建该私钥:

oc create secret generic <NAME> -n <NAMESPACE> --from-literal=name=<USERNAME> --from-literal=email=<EMAIL>

替换以下值:

  • NAME
    您私钥的名称。 它必须与 CR 的 firstTenant 部分的 ownerSecret 属性中指定的名称相匹配。

  • NAMESPACE
    您要在其中创建私钥的名称空间。 它必须与您在其中创建 RPA 实例的名称空间相同。

  • USERNAME
    租户管理员的用户名。

  • EMAIL
    租户管理员用户的电子邮件地址。

创建仪表板私钥

使用以下命令创建该私钥:

oc create secret generic <INSTANCE-NAME>-apiserver-rpa-dashboard -n <NAMESPACE> --from-literal=DASHBOARD_PASSWORD='<PASSWORD>'

替换以下值:

  • INSTANCE-NAME
    IBM RPA 实例的名称,在 Robotic Process Automation CR 的 name 属性中指定。

  • PASSWORD
    符合托管您的数据库服务器的系统密码要求的安全密码。 对于共享数据库服务器的每个 IBM RPA 实例,此密码必须相同。

🛈 请记住: 在 IBM RPA 21.0.3 或更高版本中不再需要仪表板私钥。

创建 Redis 密码密钥

  1. 使用指定的密码在本地创建 YAML 密钥:

    apiVersion: v1
    kind: Secret
    metadata:
      name: <RPA-INSTANCE-NAME>-redis-rpa
      namespace: <NAMESPACE>
      labels:
        app.kubernetes.io/component: rpa
        app.kubernetes.io/instance: <RPA-INSTANCE-NAME>
        app.kubernetes.io/managed-by: ibm-rpa-operator
        app.kubernetes.io/name: redis
        rpa.automation.ibm.com/cr-name: <RPA-INSTANCE-NAME>
    data:
      default_password: <PASSWORD>
    type: Opaque 
    

    替换以下值:

    • RPA-INSTANCE-NAME
      IBM RPA 实例的名称,在 Robotic Process Automation CR 的 name 属性中指定。

    • NAMESPACE
      您要在其中创建私钥的名称空间。 它需要与您在其中创建 IBM RPA 实例的名称空间相同。

    • PASSWORD
      Redis的 base64-encoded 密码。 在 21.0.7-FP012之前的版本中,此字段为 ADMIN_PASSWORD 而不是 default_password

  2. 应用文件:

    oc apply -f <FILENAME>.yaml
    

    FILENAME 替换为 YAML 文件的路径。

重要信息:
  • 从 V 21.0.7-FP012开始,现在可以在安装操作程序后更改密码。
  • 如果您未创建密码私钥,那么操作员将生成缺省密码,并且您将收到警告消息,建议您更改密码。
  • 要除去警告消息并更改密码,您可以更改 Redis 密码私钥中的 default_password 字段。 在 21.0.7-FP012之前的版本中,必须创建新的 Redis 密码密钥并重新安装 IBM RPA 操作程序。

基本设置

以下示例显示了包含所有必需部分和属性的最小 IBM RPA 定制资源:

apiVersion: rpa.automation.ibm.com/v1beta1
kind: RoboticProcessAutomation
metadata:
  name: rpa-sample
spec:
  license:
    accept: true
  version: 1.7.14
  tls: {}
  api:
    externalConnection:
      secretName: rpa-db
    firstTenant:
      name: ibm
      owner:
        ownersecret:
          secretName: rpa-owner
    replicas: 1
    smtp:
      port: 587
      server: smtp.example.com
      userSecret:
        secretName: rpa-smtp
    storage: {}
  ui:
    replicas: 1
  ocr:
    replicas: 1  

了解必需的 CR 部分

  • license
    接受许可证。 有关许可证详细信息,请参阅 IBM RPA 许可证 🡥
  • version
    请指定 IBM RPA 操作数的版本。 请参阅版本控制参考,了解可用选项。
  • tls
    指定空 TLS 部分,以便操作程序创建自签名证书。
  • externalConnection
    指定包含数据库连接字符串的私钥的名称。
  • api
    • firstTenant
      指定第一个租户的认证配置。
      • groupMappings (从 21.0.2开始不推荐)
        指定身份提供者中映射到特定 IBM RPA 角色的组。 在上一个示例中, LDAP 中的 IBM 用户组映射到 IBM RPA 用户角色。 要指定多个组,请使用分号进行分隔。

        • adminGroups
          指定管理用户组的名称。
        • superAdminsGroups
          指定超级管理员用户组的名称。
        • userGroups
          指定用户组的名称。

        : 需要将 IBM RPA 租户组映射到有效 LDAP 组,用户才能访问 UI。

        指定身份提供者中映射到特定 IBM RPA 角色的组。 在上一个示例中, LDAP 中的 IBM 用户组映射到 IBM RPA 用户角色。 要指定多个组,请使用分号进行分隔。

        : 需要将 IBM RPA 租户组映射到有效 LDAP 组,用户才能访问 UI。

      • name
        第一个租户的名称

      • owner

        • ownerSecret
          21.0.6: 包含第一个租户所有者的用户名和电子邮件的私钥的名称。
        • name
          在 21.0.6: 租户所有者的用户名。 请改为使用 ownerSecret
        • email
          21.0.6: 租户所有者的电子邮件。 请改为使用 ownerSecret
    • replicas
      IBM RPA的 API 服务器 pod 的副本数。
    • smtp
      配置 IBM RPA 用于发送电子邮件通知的 SMTP 服务器。
      • port
        使用 TLS 连接到 SMTP 服务器时使用的端口号。
      • server
        SMTP 服务器的主机名
      • userSecret
        包含 SMTP 服务器的用户名和密码的私钥的名称。
    • storage
      通过指定空存储部分,操作程序将使用集群缺省存储类来创建持久卷声明。
  • ui
    • replicas
      UI 服务器 pod 的副本数。
  • ocr
    • replicas
      ABBYY™ 光学字符识别 (OCR) pod 的副本数。 如果指定 0,那么不会创建任何 OCR pod。

可选配置

缺省情况下,您会获得多个部分,但不需要在 CR 中指定这些部分。 如果要定制其值并更改缺省行为,那么可以包含这些部分:

  • antiVirus
    配置 IBM RPA的防病毒组件。 此部分是可选的。 如果您未指定此值,那么缺省副本数为 1。

    • replicas
      反病毒 pod 的副本数。 如果指定 0,那么不会创建反病毒 pod。
    • autoUpdateEnabled
      配置 IBM RPA 反病毒服务是否自动更新病毒签名数据库。 如果 true,那么它将使反病毒服务能够与因特网建立出口连接。 缺省值为 false
  • nlp
    配置 IBM RPA的 NLP 提供程序组件。 此部分是可选的。 如果您未指定此值,那么缺省副本数为 1。

    • replicas
      NLP pod 的副本数。 如果指定 0 ,那么不会创建任何 NLP pod。
  • webDriverUpdates
    配置服务器是否应查找 Web 浏览器驱动程序更新。

  • systemQueueProvider
    为 IBM RPA配置系统队列提供程序。

    • highAvailability
      如果未在 CR 中指定 highAvailability ,那么缺省值为 false ,并将 IBM MQ 的单个实例部署为系统队列提供程序。 如果 true,那么它将部署 IBM MQ的高可用性配置。

    • supplementalGroups
      提供要在容器上设置的 Linux™ 组标识的列表。 使用 NFS 存储器时可能需要执行此操作,如:

      supplementalGroups:
        - 4001
        - 4002
      

      如果在 Red Hat® OpenShift® Kubernetes Service on IBM Cloud (ROKS) 或 Red Hat® OpenShift® Service on AWS (ROSA) 上安装 IBM RPA ,请使用以下配置:

      supplementalGroups:
        - 65534
      
      重要信息:对于具有 Red Hat Enterprise Linux™ 7 的集群,请使用 99 而不是 65534

      要了解更多信息,请参阅配置存储器。 有关其他设置,请参阅 容器和 IBM Cloud Pak for Integration 中的 IBM MQ

    • queueManagerVersion
      您可以指定要在当前安装中使用的 IBM MQ 操作程序的版本。 如果将 IBM RPA 与其他 IBM Cloud Paks 一起安装在同一名称空间中,那么可以使用此选项。 请参阅 IBM MQ Operator 的发布历史记录 ,以获取受支持的 IBM MQ 版本的完整列表。

    • queueManagerLicense
      输入 IBM MQ 操作程序版本的许可参考。 请参阅 mq.ibm.com/v1beta1 ,以获取受支持值的完整列表。

    • queueManagerLicenseUsage
      输入 IBM MQ 操作程序版本的许可使用参考。 请参阅 mq.ibm.com/v1beta1 ,以获取受支持值的完整列表。

  • createRoutes
    配置 IBM RPA 操作程序是否为 IBM RPA创建 Red Hat® OpenShift® Container Platform 路径。

false 表示 IBM RPA 不创建自己的路由, true 表示 IBM RPA 创建的是自己的路由。 如果未指定 createRoutes,那么缺省值为 false

❕ 重要信息: 仅当您在 21.0.2之前安装了 IBM RPA 操作程序时,才会将此值设置为 true 。 如果要安装较新版本,那么不再需要此配置,并且仅为向后兼容旧路由系统而保留此配置。

示例:

apiVersion: rpa.automation.ibm.com/v1beta1
kind: RoboticProcessAutomation
metadata:
  name: rpa-sample
spec:
  license:
    accept: true
  version: 1.7.14
  tls: {}
  api:
    externalConnection:
      secretName: rpa-db
    firstTenant:
      name: ibm
      owner:
        ownersecret:
          secretName: rpa-owner
    replicas: 1
    smtp:
      port: 587
      server: smtp.example.com
      userSecret:
        secretName: rpa-smtp
    storage: {}
    webDriverUpdates:
      enabled: true
    systemQueueProvider:
      storage:
        class: my-storage-class
  ui:
    replicas: 1
  ocr:
    replicas: 1  

: 在基本配置中,缺省情况下会获得一个副本,但不需要在 CR 中指定。

模板

还可以使用以下字段为容器创建模板:

  • template (可选)
    描述创建 pod 时使用的 pod 覆盖的对象。
    • pod (可选)
      包含 pod 信息。
      • metadata (可选)
        定制任务管理器 pod 元数据。
        • annotations
          在任务管理器 pod 上设置或覆盖注释。
      • spec (可选)
        包含 pod 容器和调度信息。
        • containers (可选)
          包含 pod 容器覆盖的规范。
          • name (必需): 例如, taskmanager
          • resources
            描述计算资源需求。
          • image
            覆盖容器映像。
          • imagePullPolicy 覆盖 imagePullPolicy
        • affinity (可选)
          pod 调度的亲缘关系信息。 有关更多信息,请参阅 Kubernetes 文档 🡥
          • nodeAffinity (可选)
            用于选择调度程序选择的节点。
          • podAffinity (可选)
            使用它可根据已部署的 pod 来影响 pod 的部署位置。
          • podAntiAffinity (可选)
            描述 pod 反亲缘关系调度规则,例如避免将此 pod 与其他某个 pod 放在同一节点或区域中。
        • tolerations
          可选 core/v1/Tolerations 数组,用于指定调度污点的容错。 有关更多信息,请参阅 Kubernetes 文档 🡥

模板的示例包括:

spec:
  template:
    pod:
      spec:
        containers:
        - name: svc
          resources:
            requests:
              cpu: 8
              memory: 64Gi
            limits:
              cpu: 10
              memory: 128Gi
        - name: sidecar
          resources:
            requests:
              cpu: 1
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
              - matchExpressions:
                - key: kubernetes.io/arch
                  operator: In
                  values:
                  - amd64
          podAntiAffinity:
            preferredDuringSchedulingIgnoredDuringExecution:
            - podAffinityTerm:
                labelSelector:
                  matchLabels:
                    app.kubernetes.io/component: rpa
                    app.kubernetes.io/instance: test-instance
                    app.kubernetes.io/managed-by: ibm-rpa-operator
                    app.kubernetes.io/name: apiserver
                    rpa.automation.ibm.com/cr-name: test-instance
                topologyKey: kubernetes.io/hostname
              weight: 80

标签和注释

在 CR 上定义的标签和注释可以与操作程序定义的标签和注释合并。 根据优先级,这些标签和注释的顺序如下:

  • 模板格式标签和注释(最高优先级)
  • 短格式标签和注释
  • 操作程序的缺省值(最低优先级)

标签和注释可以应用于 pod。

如果 CR 只有一个主部署,或者如果部署无需独立配置,那么可以使用 labelsannotations 键来配置标签和注释:

spec:
  labels:
    my.custom/label: "foo"
  annotations:
    my.custom/annotation: "bar"

如果 CR 有多个需要独立配置的组件,那么可以将这些键包含在组件的子部分中:

spec:
  ui:
    labels:
      my.custom/label: "foo"
    annotations:
      my.custom/annotation: "bar"
  api:
    labels:
      my.custom/label: "fizz"
    annotations:
      my.custom/annotation: "buzz"

或者,可以按组件拆分块:

spec:
  labels:
    ui:
      my.custom/label: "foo"
    api:
      my.custom/label: "fizz"
  annotations:
    ui:
      my.custom/annotation: "bar"
    api:
      my.custom/annotation: "buzz"

使用节点选择器的工作负载布置

模式必须使用选择器 spec 描述符来标记 nodeSelector 字段。

如果 CR 只有一个主部署,或者部署无需独立配置,请使用 nodeSelector 键来配置节点选择器:

spec:
  nodeSelector:
    disktype: ssd

如果有多个需要独立配置的组件,那么可以将这些键包含在组件的子部分中:

spec:
  ui:
    nodeSelector:
      type: edge
  api:
    nodeSelector:
      disktype: ssd

或者,可以按组件拆分块:

spec:
  nodeSelector:
    ui:
      type: edge
    api:
      disktype: ssd

Redis 的定制

这是可选的 Redis 资源覆盖,它对所有 Redis 资源(即 ProxyLogDBProxyMgmt)应用统一的内存和 CPU 限制更改。

CR 覆盖是一个顶级 CR 属性 sharedCache,如下所示:

sharedCache:
  memoryLimit: 250Mi
  cpuLimit: 0.8

缺省情况下,memoryLimit 的值为 100Mi,且 cpuLimit 设置为 0.4

重要信息:从 V 21.0.7-FP012开始,不推荐使用 sharedCache 属性。 现在,您可以直接在 Redis 操作程序规范中定义 CPU 和内存限制。

计算资源限制

您可以定制 CPU 和内存等计算资源的限制。 这将使用字段名称 resources

这可按如下所示进行指定:

字段 描述
requests(对象) requests 描述所需的最低计算资源量。 如果省略容器的 requests,而且已显式指定 limits,那么会缺省为 limits,否则会缺省为实现所定义的值。
requests.cpu(数量) CPU 请求。
requests.memory(数量) 内存请求。
limits(对象) limits 描述允许的最低计算资源量。
limits.cpu(数量) CPU 限制。
limits.memory(数量) 内存限制。

下面是示例:

resources:
  requests:
    cpu: "8"
    memory: 64Gi
  limits:
    cpu: "12"
    memory: 128Gi

此外,这还能以模板格式用作要合并到容器的覆盖。 仅当容器的资源限制不可能由用户更改时,才应使用此项:

spec:
  template:
    pod:
      containers:
      - name: helper-pod
        resources:
          requests:
            cpu: 0.5
            memory: 128Mi
          limits:
            cpu: 1
            memory: 128Mi