部署代理程式

在選定的 IBM Cloud® Schematics 區域建立代理程式註冊,以便直接在私有網路或隔離網路區域的雲端基礎架構中工作。

遵循步驟來建立及部署代理程式。

  1. 建立代理程式定義,以管理代理程式部署。 此步驟會使用用來將代理程式部署至其目標位置的代理程式配置來起始設定 Schematics。
  2. 使用 ibmcloud schematics agent validateibmcloud schematics agent deploy CLI 指令或對應的 API 來 部署代理程式

開始之前

檢閱並完成 準備代理程式部署 中說明的步驟。 建立群集、IBM Cloud Object Storage 實例和 IBM Cloud Object Storage 桶之後,收集下列資訊,作為將您的代理部署到目標位置的輸入。

  • 叢集 IBM Cloud Object Storage 實例和 IBM Cloud Object Storage 儲存區建立在相同的資源群組中。

  • 記錄代理程式部署之 Kubernetes Service 叢集的 cluster IDcluster resource groupregion

  • Object Storage 儲存區的 IBM Cloud® Object Storage instance nameIBM Cloud Object Storage bucket name 用於代理程式暫用資料儲存體。 IBM Cloud Object Storage 實例與儲存桶的資源群組及區域必須與叢集相同。

  • 可選 - 如果您需要將代理伺服器更新為 Agent 微服務,請參閱 配置Schematics代理到代理伺服器

  • 選用-如果您使用專用 Git 實例,則需要透過憑證建立與代理程式的連線。 如需相關資訊,請參閱 將代理程式與專用 Git 實例相關聯的步驟

    您需要查看 ClusterIBM Cloud Object Storage instance 是否位於相同的資源群組中。

建立代理程式定義

  1. 登入 IBM Cloud控制台
  2. 點選選單圖示漢堡包圖示> Platform Automation > Schematics > Extensions > Create Agent
    • 定義代理程式詳細資料 區段中:
      • 請輸入一個唯一的代理名稱
      • 選擇地點資源組從下拉選項中。
      • 輸入代理程式的 標籤說明
    • 指派給叢集 區段中:
      • 選取 IBM Cloud Kubernetes ServiceRed Hat OpenShift 服務。
      • 選取叢集名稱。
      • 定義 COS 實例
        • 請輸入 COS 實例名稱
        • 請輸入 COS 儲存桶名稱
        • 輸入 COS 儲存區地區
  3. 按一下「定義」。
  4. 按一下 驗證 以驗證叢集及 IBM Cloud Object Storage 配置。
  5. 按一下 部署 以部署代理程式。

透過 CLI 建立代理定義

第一步,您必須在 IBM Cloud 帳戶中建立一個代理程式定義,其中包含用於部署代理程式的組態。 如需 agent create 選項的完整清單,請參閱 ibmcloud schematics agent create 指令。

選擇IBM Cloud您想要定義和管理代理的區域。 執行 ibmcloud target -r <region>,以設定 CLI region 指令。 該區域必須與 location 指定於 agent create 命令。 IBM Cloud Object Storage 儲存區位置的格式必須是 eu-gbus-south,而不是城市名稱。

範例 agent create 語法。 < > 之間的文字必須新增您的值:

ibmcloud schematics agent create --name <agent-ga-prod-cli-jan-10> --location <us-south> --agent-location <us-south> --version <1.0.0> --infra-type <ibm_kubernetes> --cluster-id <cg3fgvad0dak571xxx> --cluster-resource-group <Default> --cos-instance-name <agent-cos-instance> --cos-bucket <agent-cos-bucket> --cos-location <us-east> --resource-group <Default>

輸出

Creating agent...
OK
ID               agent-ga-prod-cli-jan-10.soA.cd1c
Name             agent-ga-prod-cli-jan-10
Status           Defined
Version          1.0.0
Location         us-south
Agent Location   us-south
Resource Group   aac37f57b20142dba1a435c70aeb12df
Metadata         [Metadata]
                 - [git]
                 - [github.com]

記錄 Agent ID 以在後續指令中使用。 若要顯示代理程式詳細資料,您可以使用 agent get 指令。

範例

ibmcloud schematics agent get --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Retrieving agent...
OK
ID               agent-ga-prod-cli-jan-10.soA.cd1c
Name             agent-ga-prod-cli-jan-10
Status           ACTIVE
Version          1.0.0
Location         us-south
Agent Location   us-south
Resource Group   Default
Metadata         [Metadata]
                 - [git]
                 - [github.com]

透過 CLI 驗證代理部署的先決條件

您可以使用代理程式驗證指令來驗證代理程式定義及叢集可用性。 驗證對目標代理基礎架構進行先決條件檢查。 此指令會採用 Agent ID 作為 agent create 指令所傳回的輸入。 代理驗證指令的輸出顯示相關列表Kubernetes和代理屬性名稱、期望值、實際值和結果:PASS 或者 FAIL

範例

ibmcloud schematics agent validate --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Initiating agent validate...
Job ID	.ACTIVITY.600cadf9
Polling status...
Status	job_pending
Status	job_in_progress
Status	job_in_progress
Status	job_in_progress
Status	job_finished

範例

ibmcloud schematics agent get --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Retrieving agent...
OK
ID               agent-ga-prod-cli-jan-10.soA.cd1c
Name             agent-ga-prod-cli-jan-10
Status           ACTIVE
Version
Location         us-south
Agent Location   us-south
Resource Group   Default
Recent Job   Job ID                             Status                  Last modified
DEPLOY       -                                  Deploy in progress      2024-01-10T09:54:32.607Z
VALIDATE     8b168c1e0e4b35708e95c2af9a99d9d4   Successful validation   2024-01-10T09:53:48.435Z

透過 CLI 部署代理

您可以使用代理程式定義,以 agent deploy 指令來部署代理程式。 agent deploy 指令會採用 Agent ID 作為輸入。 您可以使用以下命令升級現有部署 force deploy 選項。

代理程式部署需要數分鐘才能完成。

ibmcloud schematics agent deploy --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Initiating agent deploy...
Job ID	.ACTIVITY.465e9716

範例

ibmcloud schematics agent get --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Retrieving agent...
OK
ID               agent-ga-prod-cli-jan-10.soA.cd1c
Name             agent-ga-prod-cli-jan-10
Status           ACTIVE
Version          1.0.0
Location         us-south
Agent Location   us-south
Resource Group   Default
Recent Job   Job ID               Status                 Last modified
DEPLOY       .ACTIVITY.465e9716   Triggered deployment   2024-01-10T10:20:48.435Z
VALIDATE     8b168c1e0e4b35708e   Successful validation   2024-01-10T09:53:48.435Z

透過 CLI 驗證代理部署

您可以使用 agent health 指令來驗證最近部署代理程式的性能。 該指令會採用 Agent ID 作為輸入。 輸出會顯示相關 Kubernetes 的清單,其中包含代理程式性能內容名稱、期望值、實際值,以及結果 PASSFAIL

範例

ibmcloud schematics agent health --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Initiating agent health...
Job ID	.ACTIVITY.f6f77588

範例

ibmcloud schematics agent get --id agent-ga-prod-cli-jan-10.soA.cd1c

輸出

Retrieving agent...
OK
ID               agent-ga-prod-cli-jan-10.soA.cd1c
Name             agent-ga-prod-cli-jan-10
Status           ACTIVE
Version
Location         us-south
Agent Location   us-south
Resource Group   Default
Recent Job   Job ID                             Status                   Last modified
DEPLOY       f5c6987ce53032547b6d5d5f870dfe5f   Job Success               0001-01-01T00:00:00.000Z
HEALTH       .ACTIVITY.f6f77588                 Triggered health check   2023-03-27T12:31:15.326Z

此外,您還可以使用KubernetesCLI (kubectl) 或Kubernetes叢集的儀表板,用於查看命名空間中與代理相關的微服務、pod、部署、configmap 和叢集綁定的狀態和日誌,schematics-agent-observe,schematics-sandbox,schematics-runtimeschematics-job-runtime

透過API建立代理

遵循 步驟 以建立 IAM 存取記號,並透過 API 向 Schematics 進行鑑別。 如需相關資訊,請參閱使用 API 來 建立代理程式

範例

  POST /v2/agents HTTP/1.1
  Host: schematics.cloud.ibm.com
  Content-Type: application/json
  Authorization: Bearer
  {
    "name": "agentb1-gsmforvpc",
    "description": "Create Agent",
    "resource_group": "Default",
    "tags": [
        "env:prod",
        "mytest"
    ],
    "version": "v1.0.0",
    "schematics_location": "eu-de",
    "agent_location": "Frankfurt MZR",
    "agent_infrastructure": {
        "infra_type": "ibm_kubernetes",
        "cluster_id": "cg3fgvad0dak571op4g0",
        "cluster_resource_group": "Default",
        "cos_instance_name": "agent-cos-instance",
        "cos_bucket_name": "agent-cos-bucket"
    },
    "user_state": {
        "state": "enable"
    }
}

驗證已順利建立代理程式定義,如輸出中所示。 記錄要在後續指令中使用的代理程式 ID。 例如,agentb1-gsmforvpc.soA.115c

輸出

  {
      "name": "agentb1-gsmforvpc",
      "description": "Create Agent",
      "resource_group": "aac37f57b20142dba1a435c70aeb12df",
      "tags": [
          "env:prod",
          "mytest"
      ],
      "version": "v1.0.0",
      "schematics_location": "eu-de",
      "agent_location": "Frankfurt MZR",
      "user_state": {
          "state": "enable",
          "set_by": "xxxx@in.ibm.com",
          "set_at": "2023-03-16T18:08:18.399224788Z"
      },
      "agent_crn": "crn:v1:bluemix:public:schematics:eu-de:a/1f7277194bb748cdxxxxxxxxxxx42-0d59-415c-a6ce-0b662f520a4d:agent:agentb1-gsmforvpc.soA.115c",
      "id": "agentb1-gsmforvpc.soA.115c",
      "created_at": "2023-03-16T18:08:18.39924616Z",
      "creation_by": "xxxxx@in.ibm.com",
      "updated_at": "0001-01-01T00:00:00Z",
      "system_state": {
          "status_code": "draft"
      },
      "agent_kpi": {}
  }

現在,使用 agent ID 執行 agent deploy API,以建立用於部署代理程式的 Schematics 工作區。 agent deploy 作業會同時啟動 agent validateagent deploy 作業,以設定代理程式。

語法

  PUT /v2/agents/<enter your agentID>/deploy HTTP/1.1
  Host: schematics.cloud.ibm.com
  Content-Type: application/json
  Authorization: Bearer

範例

  PUT /v2/agents/agentb1-gsmforvpc.soA.115c/deploy HTTP/1.1
  Host: schematics.cloud.ibm.com
  Content-Type: application/json
  Authorization: Bearer

輸出

{
    "workspace_id": "eu-de.workspace.agentb1-gsmforvpc-deploy.1xxxxdf",
    "job_id": ".ACTIVITY.7f40fdc0",
    "updated_at": "2023-03-16T18:13:27.217864196Z",
    "updated_by": "xxxx@in.ibm.com",
    "status_code": "PENDING",
    "status_message": "Triggered deployment"
}

透過 Terraform 建立代理

若要使用 Terraform 建立 Schematics Agent 部署,請在 Terraform 配置檔案中定義 ibm_schematics_agent_deploy 資源。 請依照以下步驟建立「Schematics」代理程式。 您可以選擇參閱 terraform-ibm-schematics-agent 模組,以取得相關的基礎架構程式碼和使用範例。

  1. 安裝 Terrafrom CLI

  2. 設定 IBM Cloud Provider Plug-in for Terraform 外掛程式

  3. 測試您的設定

  4. main.tf 檔案中定義 ibm_schematics_agent 資源。

    resource "ibm_schematics_agent" "schematics_agent_instance" {
    agent_infrastructure {
            infra_type = "ibm_kubernetes"
            cluster_id = "cluster_id"
            cluster_resource_group = "cluster_resource_group"
            cos_instance_name = "cos_instance_name"
            cos_bucket_name = "cos_bucket_name"
            cos_bucket_region = "cos_bucket_region"
    }
    agent_location = "us-south"
    agent_metadata {
            name = "purpose"
            value = ["git", "terraform", "ansible"]
    }
    description = "Create Agent"
    name = "MyDevAgent"
    resource_group = "Default"
    schematics_location = "us-south"
    tags = ["agent-MyDevAgent"]
    version = "1.0.0"
    }
    

    或使用 Terraform IBM 模組進行示意圖代理,如圖所示:

    module "schematics_agent" {
        source                      = "terraform-ibm-modules/schematics-agent/ibm"
        version                     = "1.4.0"
        infra_type                  = "ibm_openshift"
        cluster_id                  = "cluster-id"
        cluster_resource_group_name = "Default"
        cos_instance_name           = "cos-instance-name"
        cos_bucket_name             = "cos-bucket-name"
        cos_bucket_region           = "cos-bucket-region"
        agent_location              = "us-south"
        agent_description           = "schematics agent description"
        agent_name                  = "k8s-schematics-agent"
        agent_resource_group_name   = "Default"
        schematics_location         = "us-south"
        agent_version               = "1.5.0"
    }
    
  5. 起始設定

    terraform init
    
  6. 套用

    terraform apply
    
  7. 使用 ibm_schematics_agent_deploy 資源部署代理。

    resource "ibm_schematics_agent_deploy" "schematics_agent_deploy_instance" {
    agent_id = "agent_id"
    }
    

您可以查看 IBM Cloud Provider Plug-in for Terraform 說明文件,以取得更多資源的特定參數。

附註

ca-mon 的 Agent 部署完成後,最初會顯示錯誤狀態。 要解決這個問題,您需要針對 schematics-runtime 名稱空間中的 kube-vpeg-<cluster_IDxxxx> 安全群組,為 Schematics private 區域 建立虛擬專用端點閘道(VPE Gateway)。 此過程約需 5 分鐘。 完成後,Agent 部署狀態會變更為完成。

下一步

代理程式的部署及配置已完成。

  • 如果您使用的是私人Git實例,然後透過憑證與代理建立連線。 如需相關資訊,請參閱 關聯代理程式以連接的步驟
  • 若要使用以下方式設定和設定您的基礎設施,請參閱 代理政策。 代理程式原則由 Schematics 用來動態將 Git 儲存庫下載工作、工作區或 Terraform 工作以及動作或 Ansible 工作遞送至代理程式。
  • 管理 代理程式及 Kubernetes 叢集
  • 您可以查看 代理程式常見問題(FAQ),以瞭解與代理程式相關的任何常見問題。
  • 當代理程式不再需要時,可以遵循 刪除代理程式 中的步驟來移除它。