延伸規格

關於「IBM Cloud Schematics 代理程式」的常見問題解答。

GA 代理程式版本中有哪些更新項目?

以下是代理程式版本中的特性。

  • 透過 CLI 及使用者介面改善代理程式部署體驗。
  • 支援在代理程式上執行 Ansible 教戰手冊。
  • 動態將工作區或動作工作指派給代理程式。

安裝及使用代理程式的成本為何?

以下是部署及使用 Schematics 代理程式的成本明細。

部署及執行代理程式所需的必備基礎架構是可收費的:

  • VPC 基礎架構元素的成本,例如子網路、公用閘道。
  • VPC 上具有三節點工作者節點儲存區的 IBM Cloud Kubernetes Service (叢集) 成本。
  • IBM Cloud Object Storage的成本

代理程式服務執行:

  • 在代理程式上執行工作沒有成本。
  • Schematics 第 1 版代理程式功能是不可計費的特性。 未來版本可能需要付費。

可以在叢集上安裝多個代理程式嗎?

您只能在 IBM Cloud Kubernetes Service 叢集上安裝一個代理程式。 需要其他叢集才能部署其他代理程式。 如果您嘗試在叢集上安裝多個代理程式,則部署工作失敗,並發生名稱空間衝突錯誤。

代理程式支援哪些 Terraform 版本?

代理程式僅支援 Schematics 所支援的兩個最新版本 Terraform,例如 Terraform v1.13Terraform v1.14。 不支援舊版 Terraform。 使用舊版 Terraform 的工作區必須先更新至其中一個支援的版本,然後才能使用代理程式。 在使用代理程式之前,請參閱 升級至新的 Terraform 版本 以升級。

為何使用 terraformx.x: executable file not found in $PATH 執行工作區失敗

代理程式不支援工作區使用的 Terraform 版本。 代理程式支援使用 Terraform v1.13v1.14 或 Schematics所支援的兩個最新版本 Terraform 的工作區。 具有舊版 Terraform 的工作區必須更新至其中一個受支援版本,才能由代理程式支援。 如需相關資訊,請參閱 用於升級的淘汰排程和使用者動作

可在代理程式中執行何種類型的工作?

您可以在代理程式上執行 Schematics 工作區 Terraform 和「動作」工作。

如何查看在代理程式上執行之工作的 Schematics 工作結果及日誌?

工作區工作或動作工作日誌位於 Schematics 使用者介面主控台中。 您也可以使用 Schematics 工作區 API 或 CLI 來存取工作日誌。

代理程式版本中需要的最低叢集配置為何?

代理程式需要 IBM Cloud Kubernetes Service 服務,至少有三個工作者節點,且類型為 b4x16 或更高。

可以指派多少個工作區給代理程式?

目前,您可以將任意數目的工作區指派給代理程式。 根據代理程式指派原則,工作區工作會排入佇列以在代理程式上執行。 代理程式會定期輪詢 Schematics 以取得要執行的工作,輪詢間隔為一分鐘。 依預設,代理程式僅平行執行三個工作。 剩餘工作已排入佇列。

在代理程式上可以平行執行多少個工作?

Schematics 代理程式可以平行執行三個 Git 下載、工作區工作 (Terraform 指令) 及動作工作 (Ansible 教戰手冊)。 任何其他工作都會排入佇列,並在先前工作完成執行時執行。

代理程式的預設輪詢間隔為何?

Schematics 會維護代理程式的工作佇列。 依預設,代理程式會每隔一分鐘輪詢一次工作。

使用代理程式時是否有執行逾時限制?

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-0120,含有 tag=dev,且您希望工作區在 Agent-1 上執行。 建立 agent-selection-policy,其中包含當 tag == dev 時要挑選 Agent-1 的規則。 稍後,工作區工作 (例如計劃、套用、更新) 會動態遞送至在 Agent-1 上執行。

部署代理程式需要哪些 IAM 許可權?

如需存取權的相關資訊,請參閱 代理程式許可權

在代理程式執行期間,我能否將自簽名或 TLS 憑證注入至 IBM Cloud Kubernetes Service 的 Pod 或容器中的「受信任的 CA 根憑證儲存庫」中?

是,請遵循下列步驟,將憑證注入代理程式執行時期。

在四個 .cer 副檔名中,請確保您修改以將空格取代為底線。

  1. 使用 .cer 檔案建立配置對映,如 kubectrl 指令所示。

    kubectl -n schematics-runtime create configmap xyz-root —-from-file 2014-2044_xyz_Root.cer
    
    kubectl -n schematics-runtime create configmap xyz-authentication —-from-file 2014-2029 xyz_Users_Authentication.cer
    
    kubectl -n schematics-runtime create configmap xyz-infrastructure —-from-file 2014-2029 xyz_Infrastructure.cer
    
  2. 將配置對映檔裝載為共用 xyz_agent_deployment_files 目錄中 /etc/ssl/certs/ 檔案 agent-runtime-deployment-certs.yaml 目錄中的磁區。

Shared 目錄 xyz_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
      • 按一下 更新 以套用您的編輯。

我可以將代理程式測試版升級至代理程式通用版 (GA) 版本嗎?

否,您無法將代理程式測試版設定升級至代理程式 GA 版本。

Schematics 代理程式是否與 Terraform 雲端代理程式相同?

Schematics 代理程式執行與 Terraform Cloud 代理程式類似的角色。

代理程式是否在 IBM Cloud 雲端資源上執行?

Schematics 代理程式只能執行工作區和動作工作量。 對於測試版,代理程式部署在使用者帳戶中的 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
runtimes ws 16

使用者如何識別由代理程式建立的工作?

您可以識別工作區是由代理程式透過工作區工作日誌所建立。

工作區是否可能由代理程式建立,且在工作區工作日誌中仍沒有參照?

否,如果代理程式建立工作區,您必須在工作區工作日誌中看到參照。 如果您沒有看到參照,則必須檢查原則驗證是否失敗。

Schematics 代理程式可以建立與專用 Git 實例的連線嗎?

是,Schematics 代理程式會建立與專用 Git 實例的連線。 不過,您需要擁有一個 SSL 憑證,並在代理微服務中依照以下步驟操作。

  1. 請透過在 JobrunnerSandboxRuntime-ws 代理微服務中設定 SSL 憑證,來建立連線。
  2. 應該使用 Kubernetes Service configmap 裝載來完成配置。
    • 建立一個包含所需 SSL 憑證的配置映射,例如:

      kubectl -n schematics-job-runtime create configmap mytestcert --from-file cert.pem
      
    • JobrunnerSandboxRuntime-ws 微服務的部署檔案中使用 configmap 作為磁區並裝載為共用。

         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 實例的連線嗎?

是,您可以使用 meta 資料更新代理程式,以在使用專用 Git 實例進行登入時執行型錄。 請使用範例更新 API 要求作為參照。

只有在代理程式沒有 meta 資料時,才執行此步驟。

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"]
        }
      ]
    }'