IBM Cloud Docs
扩展

扩展

有关 Agent for IBM Cloud Schematics的常见问题的答案。

GA 代理程序发行版中有哪些更新?

以下是代理程序发行版中的功能部件。

  • 通过 CLI 和 UI 改进代理程序部署体验。
  • 支持在代理程序上运行 Ansible 运行手册。
  • 将工作空间或操作作业动态分配给代理程序。

安装和使用代理程序的成本是多少?

以下是部署和使用 Schematics 代理程序的成本细目。

部署和运行代理程序所需的先决条件基础结构是收费的:

  • VPC 基础架构元素 (例如,子网和公共网关) 的成本。
  • VPC 上具有三节点工作程序池的 IBM Cloud Kubernetes Service (集群) 的成本。
  • IBM Cloud Object Storage的成本

代理程序服务执行:

  • 在代理程序上运行作业没有任何成本。
  • Schematics 版本 1 代理程序功能是不可收费的功能。 未来版本可收费。

是否可以在集群上安装多个代理程序?

只能在 IBM Cloud Kubernetes Service 集群上安装一个代理程序。 需要其他集群才能部署其他代理程序。 如果尝试在集群上安装多个代理程序,那么部署作业将失败并返回名称空间冲突错误。

代理程序支持哪些 Terraform 版本?

代理程序仅支持 Schematics 支持的两个最新版本的 Terraform,例如 Terraform v1.4Terraform v1.5。 不支持较低版本的 Terraform。 在使用代理程序之前,必须将使用较早版本的 Terraform 的工作空间更新为其中一个受支持版本。 请参阅 升级到新的 Terraform 版本 指示信息,以在使用代理程序之前进行升级。

为何工作空间执行因 terraformx.x: executable file not found in $PATH 而失败

代理程序不支持工作空间所使用的 Terraform 版本。 代理程序支持使用 Terraform v1.4v1.5 或 Schematics支持的 Terraform 的两个最新版本的工作空间。 具有较早版本的 Terraform 的工作空间必须更新为代理程序支持的其中一个受支持版本。 有关更多信息,请参阅 废弃调度和用户操作以升级

可以在代理程序中运行哪种类型的作业?

您可以在代理程序上运行 Schematics 工作空间 Terraform 和 Actions 作业。

如何查看代理程序上运行的作业的 Schematics 作业结果和日志?

工作空间作业或操作作业日志在 Schematics UI 控制台中可用。 您还可以使用 Schematics 工作空间 API 或 CLI 来访问作业日志。

Agent 发行版中需要的最低集群配置是什么?

代理程序需要 IBM Cloud Kubernetes Service 服务,至少有三个类型为 b4x16 或更高的工作程序节点。

可以将多少工作空间分配给代理程序?

目前,您可以将任意数量的工作空间分配给代理程序。 将根据代理程序分配策略对工作空间作业进行排队以在代理程序上运行。 代理程序定期轮询 Schematics 以获取要运行的作业,轮询时间间隔为 1 分钟。 缺省情况下,代理程序仅并行运行三个作业。 其余作业将排队。

可以在代理程序上并行运行多少个作业?

Schematics 代理程序可以并行执行三个 Git 下载,工作空间作业 (Terraform 命令) 和操作作业 (Ansible 运行手册)。 任何其他作业都将排队,并在先前作业完成执行时运行。

代理程序的缺省轮询时间间隔是什么?

Schematics 维护代理程序的作业队列。 缺省情况下,代理程序每 1 分钟轮询一次作业。

使用代理程序时是否存在执行超时限制?

Schematics 代理程序放宽了 local-execremote-exec 和 Ansible 运行手册执行的超时限制。 这些服务在多租户服务中限制为 60 分钟,以确保所有用户公平使用服务。 不会对代理程序上执行的作业应用持续时间。 长时间的作业执行时间需要更多用户集群容量和工作程序节点,以确保及时执行所有集群作业。

建议将诸如 Continuous Delivery 之类的服务用于执行软件安装任务的长时间运行的作业。

代理程序服务中的 agent-locationlocation 标志之间有什么区别?

--agent-location 参数是一个变量,用于指定在其中部署代理程序服务的集群区域。 例如,us-south。 这必须与集群区域匹配。

--location 参数是一个变量,用于指定 Schematics 服务所支持的区域,例如 us-southus-easteu-deeu-gb。代理程序从此位置轮询 Schematics 服务实例,以获取要处理的工作空间或操作作业。

代理程序能否运行与不同资源组相关联的工作空间作业?

是,代理程序可以在帐户中运行与任何资源组关联的工作空间或操作作业。 代理 (分配) 策略用于根据资源组,区域和用户标记向特定代理程序分配作业执行。

代理程序能否使用属于不同 Schematics 区域的工作空间和操作?

代理程序部署与作业执行的 Schematics 主区域相关联。 它们只能执行在相同区域 (例如,North AmericaEurope) 中定义的工作空间或操作作业。

代理程序定期轮询其主 Schematics 区域以访存和运行作业。 它只能执行为包含其主区域的区域定义的工作空间或操作作业。 例如,在悉尼的用户集群上部署了代理程序,并将其配置为使用 eu-de 作为其主位置。 代理程序将轮询包含 eu-deeu-gb 区域的欧洲区域中的作业。 要使用悉尼代理程序部署资源,必须在 eu-deeu-gb 区域中创建工作空间或操作。

是否可以使用代理程序来执行多个帐户的作业?

否,代理程序与单个父 Schematics 帐户相关联,并且只能针对属于此帐户的工作空间或操作执行作业。

现有工作空间能否在代理程序上运行作业?

需要。 工作空间和操作由策略选择以在代理程序上执行。 Schematics agent-selection-policy 分配要在目标代理程序上运行的现有 (或新) 工作空间或操作 (如果它们与标记,资源组和位置的策略属性相匹配)。

例如,如果您具有现有工作空间 wks-0120tag=dev,并且希望该工作空间在 Agent-1 上运行。 创建具有规则的 agent-selection-policy,以便在 tag == dev 时选取 Agent-1。 稍后,将动态路由工作空间作业 (例如,计划,应用和更新) 以在 Agent-1 上运行。

部署代理程序需要哪些 IAM 许可权?

有关访问许可权的信息,请参阅 代理程序许可权

能否在代理程序运行期间在 IBM Cloud Kubernetes Service pod 或容器可信 CA 根证书库中注入自签名证书或 TLS 证书?

是,执行以下步骤以将证书注入到代理程序运行时中。

在四个 .cer 扩展文件名中,确保修改以将空格替换为下划线。

  1. 使用 .cer 文件创建配置映射,如 kubectrl 命令中所示。

    kubectl -n schematics-runtime create configmap bnpp-root —-from-file 2014-2044_BNPP_Root.cer
    
    kubectl -n schematics-runtime create configmap bnpp-authentication —-from-file 2014-2029 BNPP_Users_Authentication.cer
    
    kubectl -n schematics-runtime create configmap bnpp-infrastructure —-from-file 2014-2029 BNPP_Infrastructure.cer
    
  2. 将配置映射文件作为目录 /etc/ssl/certs/ 中的卷安装为共享 bnpp_agent_deployment_files 目录中的文件 agent-runtime-deployment-certs.yaml

共享目录 bnpp_agent_deployment_files 具有两个名为 yaml 的文件

  • agent-runtime-deployment-certs.yaml
  • agent-runtime-deployment.yaml.

agent-runtime-deployment-certs.yaml 文件将更新证书并追加 agent-runtime-deployment.yaml 文件,该文件为您提供所需的部署详细信息,以注入证书而不进行任何其他更改。

工作空间或操作的哪些属性用于动态选择要执行的目标代理程序

Schematics 工作空间或操作的以下属性用于动态选择代理程序实例。

  • 资源组
  • 位置(区域)
  • 标记

代理程序实例的 代理程序分配策略 确定选择哪个代理程序来运行工作空间或操作作业。

以下是使用标记的样本场景。

如果您的组织具有三个不同的网络隔离区域 (例如 DevHR-StageHR-Prod),并且您已安装三个代理程序 (每个代理程序对应三个网络隔离区域)。 您为在 Dev 中运行的代理程序定义了 agent-assignment-policy,选择器为 tags=dev。 所有自动具有 tags=dev 的工作空间都将绑定到 Dev 代理程序。 换言之,Dev 代理程序用于下载 Terraform 模板 (从 Git 存储库) 并运行 Terraform 作业。 同样,agent-assignment-policy 可以包含工作空间的其他属性,以定义用于执行作业的代理程序。

如何在代理程序中启用调试方式?

您可以遵循以下步骤来启用或禁用代理程序的调试方式。

  1. 登录到 IBM Cloud
  2. 从导航器窗口中单击 Kubernetes,然后单击 集群
  3. Kubernetes 集群 页面上,单击 集群 > Kubernetes 仪表板
    • 单击 缺省 下拉列表以查看 名称空间列表:
      • 在下拉列表中,输入 Schematics-job-runtime 名称空间。
      • 配置和存储器中单击 配置映射
      • 从“配置映射”页面。 针对 schematics-jobrunner-config 单击三个点。
      • 单击 编辑 以查看具有 YAMLJSON 选项卡的“编辑资源”页面。
      • 现在,您可以编辑作业运行器微服务日志记录的 JR_LOGGERLEVEL 参数。 缺省情况下,该值为 -1,指示禁用调试以使您能够将 JR_LOGGERLEVEL 作为 0 进行编辑。
      • 单击 更新 以应用编辑。

我可以将代理程序 Beta 版本升级到代理程序一般可用性 (GA) 版本吗?

否,无法将代理程序 Beta 设置升级到代理程序 GA 版本。

Schematics 代理程序是否与 Terraform 云代理程序相同?

Schematics 代理程序执行与 Terraform Cloud 代理程序类似的角色。

代理程序是否在 IBM Cloud 云资源上运行?

Schematics 代理程序只能运行工作空间和操作工作负载。 对于 Beta,代理程序部署在用户帐户中的 IBM Cloud IBM Cloud Kubernetes Service 集群中。

支持 Schematics 代理程序上的 30 个作业所需的最低集群配置是什么?

对于 IBM Cloud® Virtual Servers for Virtual Private Cloud 或 IBM Cloud® Kubernetes Service 集群。 您需要具有 bx2.4x16 类型模板的 9 最小节点数,并编辑以下代理程序微服务部署以具有规定的副本计数。

微服务;副本数量; | -- | -- | | jobrunner | 4 | | 沙箱 | 8 | | 运行时 | 16 |

用户如何识别代理程序创建的作业?

您可以确定工作空间是由代理程序通过工作空间作业日志创建的。

工作空间是否可能由代理程序创建,并且在工作空间作业日志中仍没有引用?

否,如果代理程序创建工作空间,那么您必须在工作空间作业日志中看到引用。 如果未看到该引用,那么必须检查策略验证是否失败。

Schematics 代理程序能否与专用 Git 实例建立连接?

是,Schematics 代理程序与专用 Git 实例建立连接。 但是,您需要拥有 SSL 证书,并在代理程序微服务中执行以下步骤。

  1. 通过在 JobrunnerSandboxRuntime-ws 代理程序微服务中配置 SSL 证书来建立连接。
  2. 应使用 Kubernetes Service 配置映射安装来完成配置。
    • 创建具有所需 SSL 证书的 configmap,例如,

      kubectl -n schematics-job-runtime create configmap mytestcert --from-file cert.pem
      
    • 使用 configmap 作为卷,并在 JobrunnerSandboxRuntime-ws 微服务的部署文件中共享安装。

         apiVersion: apps/v1
         kind: Deployment
         metadata:
         annotations:
         deployment.kubernetes.io/revision: "1"
         kubernetes.io/change-cause: job_runner_1.0
         creationTimestamp: "2023-09-14T12:18:07Z"
         generation: 1
         labels:
         app: jobrunner
         name: jobrunner
         namespace: schematics-job-runtime
         resourceVersion: "23425"
         uid: fa66583a-8bdb-40a1-9b05-df2c2bf56656
         spec:
         progressDeadlineSeconds: 600
         .....
         .....
         volumes:
         - hostPath:
                 path: /var/log/at
                 type: ""
                 name: at-events
         - hostPath:
                 path: /var/log/schematics
                 type: ""
                 name: ext-logs
         - name: mytestcert  #### added as a volume
                 configMap:
                 name: mytestcert
                 status:
                 availableReplicas: 1
                 conditions:
         - lastTransitionTime: "2023-09-14T12:18:42Z"
                 lastUpdateTime: "2023-09-14T12:18:42Z"
                 message: Deployment has minimum availability.
                 reason: MinimumReplicasAvailable
                 status: "True"
                 type: Available
         - lastTransitionTime: "2023-09-14T12:18:07Z"
                 lastUpdateTime: "2023-09-14T12:18:42Z"
                 message: ReplicaSet "jobrunner-7f9ffdf959" has successfully progressed.
                 reason: NewReplicaSetAvailable
                 status: "True"
                 type: Progressing
                 observedGeneration: 1
                 readyReplicas: 1
                 replicas: 1
                 updatedReplicas: 1
      
      

Schematics 代理程序是否可以更新与专用 Git 实例的连接?

是,您可以使用元数据更新代理程序,以使用专用 Git 实例执行目录加载。 使用样本更新 API 请求作为参考。

仅当代理程序没有元数据时,才执行此步骤。

curl -X PUT 'https://schematics.cloud.ibm.com/v2/agents/<agent_id>'
    -H 'Authorization: Bearer <token>'
    -H 'X-Feature-Agents: true'
    -H 'refresh_token: <refresh_token>'
    -d '{
"agent_metadata": [
        {
            "name": "purpose",
            "value": ["git"]
        },
        {
            "name": "git_endpoints",
            "value": ["https://myprivate-gitinstance/testrepo"]
        }
      ]
    }'