使用 Delivery Pipeline Private Worker
Delivery Pipeline 使用公共和专用工作程序来运行管道作业。 缺省情况下,管道作业是使用公共工作程序在 IBM 管理的公共共享基础架构上运行的。
在某些情况下,Delivery Pipeline 可能需要访问内部或内部部署资源。 在这些情况下,可以连接到 Delivery Pipeline Private Worker 并与之集成以在您自己的 Kubernetes 基础架构上运行。
先决条件
设置专用工作程序之前,请确保以下资源已就位:
-
Kubernetes 集群。 您必须具有集群才能安装专用工作程序。 您可以提供自己的集群,也可以从IBM Cloud Kubernetes Service 中 设置集群。
-
可选。 具有管道的工具链,管道中至少包含一个阶段。 可以使用 Delivery Pipeline Private Worker 工具集成来创建工具链。 还可以使用开发 Kubernetes 应用程序工具链模板来创建工具链:
- 登录到 IBM Cloud。
- 访问 https://cloud.ibm.com/devops/create,选择“开发Kubernetes应用程序工具链模板”。
- 填写 Delivery Pipeline 的字段。
- 单击创建以创建 Kubernetes 应用程序工具链。
设置 Delivery Pipeline Private Worker
工具链提供了一组集成的工具,用于构建、部署和管理应用程序。 工具集成是工具链的构建块。 包含在具有一个或多个专用工作程序集成的工具链中的管道具有额外的可用选项。 对于经典管道,这些选项在“阶段配置”页面的 工作程序 选项卡上可用。 对于 Tekton 管道,这些选项在“工作程序”页面上指定的设置中可用。
对于 Tekton 管道,您还可以为每个触发器指定一个工作程序,这将覆盖在“工作程序”页面上的管道级别配置的工作程序。
要设置专用工作程序,请完成以下步骤:
- 为工具链配置 Delivery Pipeline Private Worker 工具集成。
- 配置 Kubernetes 集群以使用专用工作程序。
- 在管道中使用专用工作程序。
使用控制台配置 Delivery Pipeline Private Worker 工具集成
要为工具链配置 Delivery Pipeline Private Worker 工具集成,请完成以下步骤:
-
从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。 然后,单击概述。
a. 单击添加工具。
b. 在“工具集成”部分中,单击 Delivery Pipeline Private Worker。
-
输入工具集成的名称。 此名称用于在管道阶段的工作程序选项卡中标识专用工作程序池。
-
输入服务标识 API 密钥,以认证对工作队列的访问权,在此队列中,一个或多个专用工作程序可以查找工作。 如果您没有服务标识 API 密钥,请单击创建为此专用工作程序生成服务标识 API 密钥。
-
单击创建集成。
-
在工具链的“概述”页面上的 交付管道 卡上,单击 Delivery Pipeline Private Worker。 将显示使用与此服务标识关联的 API 密钥注册的所有工作程序的列表。
首次使用 Delivery Pipeline Private Worker 之前,工作程序的列表为空。
有关 "Delivery Pipeline私人工作者工具集成的更多信息,请参阅 "配置 "Delivery Pipeline私人工作者。
配置 Delivery Pipeline Private Worker 工具与 API 的集成
-
将 Delivery Pipeline Private Worker 工具集成添加到工具链。
curl -X POST \ https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools \ -H 'Authorization: Bearer {token}' \ -H 'Accept: application/json` \ -H 'Content-Type: application/json' \ -d '{ "tool_type_id": "private_worker", "parameters": { "name":"{tool_integration_name}", "workerQueueCredentials":"{sid_apikey}" } }'
下表列出并描述了上一步中使用的每个变量。
变量 | 描述 |
---|---|
{region} |
工具链所在的区域,例如 us-south 。 |
{tool_integration_name} |
工具集成的名称,例如 dev-worker 。 |
{toolchain_id} |
要向其添加工具集成的工具链的标识。 |
{token} |
有效的 IAM 不记名令牌。 |
{sid_apikey} |
专用工作程序用于向工作队列认证的服务标识 API 密钥。 |
配置 Delivery Pipeline Private Worker 工具与 Terraform 的集成
-
要安装 Terraform CLI 并为 Terraform 配置 IBM Cloud 提供程序插件,请遵循 IBM Cloud® 上的 Terraform 入门 的教程。
-
创建名为 "
main.tf
的 Terraform 配置文件。 在此文件中,添加配置以使用 HashiCorp 配置语言创建管道。 有关使用此配置语言的更多信息,请参阅 Terraform 文档。专用工作程序必须属于工具链。 您还可以通过 使用 Terraform 创建工具链。
以下示例使用指定的 Terraform 资源创建工具链和专用工作程序。
data "ibm_resource_group" "group" { name = "default" } resource "ibm_cd_toolchain" "my_toolchain" { name = "terraform_toolchain" resource_group_id = data.ibm_resource_group.group.id } resource "ibm_cd_toolchain_tool_privateworker" "my_private_worker" { parameters { name = "terraform-private-worker" worker_queue_credentials = "{my_sid_apikey}" } toolchain_id = ibm_cd_toolchain.my_toolchain.id }
有关
ibm_cd_toolchain_tool_privateworker
的更多信息,请参阅 Terraform Registry 文档中的参数参考详细信息。 -
初始化 Terraform CLI (如果需要)。
terraform init
-
创建 Terraform 执行计划。 此计划总结了为创建具有专用工作程序的工具链而必须运行的所有操作。
terraform plan
-
应用 Terraform 执行计划。 Terraform 会执行所有必需的操作来创建工具链和专用工作程序。
terraform apply
配置 Kubernetes 集群
配置 Kubernetes 集群以使用专用工作程序:
- 在IBM Cloud控制台中,单击菜单图标
并选择 DevOps。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- 在 交付管道 卡上,单击要配置的 Delivery Pipeline Private Worker 工具集成。
- 单击开始使用,然后执行相关步骤在 Kubernetes 集群上安装和注册专用工作程序。
在管道中使用 Delivery Pipeline Private Worker
要在管道中使用专用工作程序,请完成以下步骤:
-
从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
-
在“交付管道”卡上,单击要使用私有 Worker 的管道。
-
如果要使用经典管道,请在“管道”页面上的阶段上单击 阶段配置 图标。 然后,单击 配置阶段,然后单击 工作程序 选项卡。
-
如果您正在使用 Tekton 管道,请从要为其指定工作程序的触发器中选择“工作程序”页面。
-
选择要在管道中使用的专用工作程序。
默认情况下,管道作业和管道运行是通过在定义管道的区域内使用IBM共享工作者池来运行的。
-
单击保存。
-
您可以手动运行 Classic 管道阶段或 Tekton 管道,也可以等待触发器启动管道运行。 通过在关联的 Kubernetes 集群上使用指定的专用工作程序来完成管道运行。 您可以在 Tekton 管道中查看作业或“运行详细信息”页面的日志文件输出,以确定使用了哪个工作程序。
验证 Delivery Pipeline Private Worker 输出
如果您分配有“工具链编辑者”角色,那么可以在管道的“阶段历史记录”页面中查看管道执行日志。
如果您被分配了工具链管理员角色,或者您有工人集群访问权限,您还可以通过 kubectl CLI 验证安装中的Kubernetes资源。
操作 | 命令 |
---|---|
查看集群中的名称空间列表 | $ kubectl get ns (管道正在运行时)。 在管道作业执行期间,至少会返回一个名称空间,前缀为 pw- 。 例如,pw-f0fb3cdb-5173-4785-ae92-bb05268e041e 。 |
查看正在运行管道作业的 pod | $ kubectl get pods -n pw-f0fb3cdb-5173-4785-ae92-bb05268e041e |
在名为 pw-f0fb3cdb-5173-4785-ae92-bb05268e041e 的 pod 中启动 Bash 会话 |
kubectl -n pw-f0fb3cdb-5173-4785-ae92-bb05268e041e exec -it job-pod-e56e78 bash |
修改 Delivery Pipeline Private Worker 工具集成凭证
设置专用工作程序后,可以更新用于工具集成的凭证。 如果这些凭证已被删除、已到期或已泄露,那么您可能希望更改这些凭证。 可以通过创建新的服务标识或更新 API 密钥来更新凭证。
创建服务标识
服务标识对服务或应用程序进行标识的方式与用户标识对用户进行标识的方式相同。 您可以使用服务标识以支持 IBM Cloud® 外部的应用程序访问 IBM Cloud® 服务。 有关服务标识的更多信息,请参阅创建和使用服务标识。
要创建服务标识,请完成以下步骤:
- 从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- 在“交付管道”卡上,单击要修改的私有工作者工具集成,单击菜单,然后单击“配置”访问配置选项。
- 单击创建。
- 输入服务标识的名称和描述。
- 单击保存集成。
- 在 DevOps 仪表板的工具链页面上,单击工具链,以打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- 在“交付管道”卡上,单击Delivery Pipeline要为其指定新用户凭据的私有 Worker 工具集成。
- 单击开始使用,并完成步骤 2 和 3 以在集群上注册和验证专用工作程序。
更新 API 密钥
API 密钥是传递给 API 的唯一代码,用于标识调用该 API 的应用程序或用户。 为防止恶意使用 API,您可以使用 API 密钥来跟踪和控制该 API 的使用方式。 有关 API 密钥的更多信息,请参阅了解 API 密钥。
要更新用于 Delivery Pipeline Private Worker 工具集成的 API 密钥,请完成以下步骤:
- 从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- 在 "输送管道卡上,转到要修改的 "Delivery Pipeline私人工作者,点击菜单,然后点击 "配置进入配置选项。
- 指定新的 API 密钥。 建议不要直接使用 API 密钥。 请改为使用 Secrets Manager 来存储 API 密钥,并在专用工作程序配置中添加对该存储密钥的引用。
- 单击保存集成。
可以通过删除相应的 API 密钥来撤销对专用工作程序的访问权。 由于要对策略进行高速缓存并使 API 密钥失效,被删除的 API 密钥可能需要最长 60 分钟才能阻止作业运行。 有关删除 API 密钥的更多信息,请参阅删除服务标识的 API 密钥。
删除 Delivery Pipeline Private Worker
要删除专用工作程序,请完成以下步骤:
- 从工作程序池中删除专用工作程序。
- 从 Kubernetes 集群中删除专用工作程序。
从工作程序池中删除 Delivery Pipeline Private Worker
要从工作程序池中删除专用工作程序,请完成以下步骤:
- 从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- 在 交付管道 卡上,单击要配置的 Delivery Pipeline Private Worker 工具集成。
- 单击概述。
- 单击要删除的专用工作程序的菜单,以访问配置选项。
- 单击除去,然后单击确认。
如果删除工人池中的所有私有工人,后续的经典管道阶段运行将失败,并在阶段历史记录中显示 "No workers currently registered
信息。 对于 Tekton 管道,后续阶段运行请求将放入队列中,并且在所选工作程序池中提供工作程序之前不会开始运行。
虽然从工具链中删除 Private Worker 工具集成会阻止该工具链使用工作程序池,但其他工具链仍可能使用该工作程序池。 可以通过删除与 Delivery Pipeline Private Worker 工具集成关联的服务标识,从所有工具链中删除工作程序池。
从 Kubernetes 集群中删除 Delivery Pipeline Private Worker
要在控制台中从集群中删除专用工作程序,请完成以下步骤:
- 单击要配置的 "Delivery Pipeline私有 Worker 工具集成。
- 单击开始使用,然后执行相关步骤从集群中删除专用工作程序。
要使用 CLI 从集群中删除专用工作程序,请运行以下命令:
kubectl delete --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install/worker?serviceId={SERVICE_ID}&apikey={APIKEY}&name={WORKER_NAME}"
使用控制台删除 Delivery Pipeline Private Worker 工具集成
如果从工具链中删除 Delivery Pipeline Private Worker 工具集成,那么该删除操作无法撤销。
要删除 Delivery Pipeline Private Worker 工具集成,请完成以下步骤:
- 从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
- On the 输送管道 card, click the Delivery Pipeline Private Worker tool integration that you want to delete, and then click the menu to access the configuration options.
- 要从工具链删除工具集成,请单击删除。
- 单击删除以确认。 这将从工具链中除去 Delivery Pipeline Private Worker 工具集成,并且工具集成在 Delivery Pipeline 的“阶段配置”页面的工作程序选项卡中不再可用。
如果从工具链中删除 Delivery Pipeline Private Worker 工具集成,但该专用工作程序已配置用于管道阶段,那么它仍会在“阶段配置”页面的工作程序选项卡中列出。 但是,该专用工作程序将被禁用并标注为“已除去”。 您必须选择其他专用工作程序(如果存在)或改为使用公共工作程序。
删除 Delivery Pipeline Private Worker 工具与 API 的集成
-
从工具链中除去 Delivery Pipeline Private Worker 工具集成。
curl -X DELETE \ https://api.{region}.devops.cloud.ibm.com/toolchain/v2/toolchains/{toolchain_id}/tools/{worker_id} \ -H 'Authorization: Bearer {token}'
下表列出并描述了上一步中使用的每个变量。
变量 | 描述 |
---|---|
{region} |
工具链所在的区域,例如 us-south 。 |
{worker_id} |
要删除的专用工作程序工具的标识。 |
{toolchain_id} |
要向其添加工具集成的工具链的标识。 |
{token} |
有效的 IAM 不记名令牌。 |
删除 Delivery Pipeline Private Worker 工具与 Terraform 的集成
-
找到包含现有管道的
resource
块的 Terraform 文件 (例如,main.tf
)。以下示例中的
resource
描述了现有管道。data "ibm_resource_group" "group" { name = "default" } resource "ibm_cd_toolchain" "my_toolchain" { name = "terraform_toolchain" resource_group_id = data.ibm_resource_group.group.id } resource "ibm_cd_toolchain_tool_privateworker" "my_private_worker" { parameters { name = "terraform-private-worker" worker_queue_credentials = "{my_sid_apikey}" } toolchain_id = ibm_cd_toolchain.my_toolchain.id }
-
从 Terraform 文件中除去
ibm_cd_toolchain_privateworker
resource
块。 -
初始化 Terraform CLI (如果需要)。
terraform init
-
创建 Terraform 执行计划。 此计划总结了为创建具有专用工作程序的工具链而必须运行的所有操作。
terraform plan
-
应用 Terraform 执行计划。 Terraform 将执行所有必需操作以从工具链中除去专用工作程序。
terraform apply
因为专用工作程序代理程序可能在其他工具链中使用,所以它会保留在集群上,直到您将其删除为止。
查看 Delivery Pipeline Private Worker 状态
您可以查看集群上的专用工作程序状态,以验证该专用工作程序是否已注册以及是否使用有效的 API 密钥。 在初始专用工作程序注册期间设置专用工作程序注册和 API 密钥分配。 这些设置允许专用工作程序与 IBM Cloud® Continuous Delivery 框架进行通信,并将其视为“活动”。
完成以下步骤以查看其安装所在集群上的专用工作程序状态:
-
以授权用户身份登录到托管工作程序的集群。
-
运行以下命令以列出在集群上注册的所有代理程序:
kubectl get workeragents
每个代理的信息如下:
- 名称: 为此工作程序注册的名称。
- ServiceID:该工作人员的
serviceId
。 - 代理程序: 通过指定
OK
或显示错误消息来指示工作程序代理程序是否在集群上正常运行。 - 已注册: 工作程序的注册状态,例如
Succeeded
或Unregistered
。 - 版本: 此工作程序的版本,适用于框架所使用的当前版本,例如
OK
,Outdated
或Unsupported
。 - Auth: 工作程序使用的 API 密钥的有效性,例如
OK
或Error
。 - 受约束: 通过指定
OK
或显示错误消息来指示是否存在影响工作程序的任何集群问题。 - 已暂停: 指示代理程序是通过指定
true
还是false
主动搜索新任务。
要验证已注册专用工作程序池的总体状态,请从使用该池的工具链中检查 Delivery Pipeline 专用工作程序的“概述”页面。
-
从IBM Cloud控制台,单击菜单图标
>平台自动化>工具链。 在“工具链”页面,单击工具链打开其“概述”页面。 或者,在应用程序“概述”页面的“持续交付”卡上,单击查看工具链。
-
在 交付管道 卡上,单击要查看其所有已注册工作程序列表的专用工作程序工具集成。 此工作程序池包含一个或多个安装在不同集群上但共享
ServiceId
的专用工作程序。 将工作分配给专用工作程序池时,池中列出的任何专用工作程序都有资格运行工作负载。针对在此池中注册的每个工作程序提供了以下信息:
- 名称: 已注册工作程序的名称。
- 状态:工人的当前状态。
- 版本: 工作程序的当前版本。 如果当前版本已过时,那么将显示通知。
- Tekton 版本: Tekton 发行版。
- 集群: 在其中注册工作程序的集群的名称 (如果可用)。
- 上次活动时间: 代理程序上次报告的时间。
私人工人可以有以下一种身份:
- active: 专用工作程序正常运行。
- inactive: 专用工作程序处于脱机状态。 检查集群。 您可能需要重新注册专用工作程序。
- 不受支持: 不再支持正在使用的专用工作程序版本。 专用工作程序无法运行,您必须更新为最新版本。
更新 Delivery Pipeline 专用工作程序
完成以下步骤以更新专用工作程序以使用最新版本:
- 以授权用户身份登录到托管工作程序的集群。
- 运行以下命令:
kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/update"
Delivery Pipeline 专用工作程序映像
专用工作程序安装脚本从全局 IBM Cloud® Container Registry中提取所需映像。 它会拉取管道专用工人的最新图像以及相应的 Tekton 框架图像,其中包含针对发现的任何漏洞的修订。
管道专用工作程序的图像 URL 为 icr.io/continuous-delivery/pipeline/pipeline-private-worker:<agent version>
。
专用工作程序安装还会将以下支持的开放式源代码映像拉取到集群中:
icr.io/continuous-delivery/pipeline/tekton/controller
icr.io/continuous-delivery/pipeline/tekton/entrypoint
icr.io/continuous-delivery/pipeline/tekton/nop
icr.io/continuous-delivery/pipeline/tekton/sidecarlogresults
icr.io/continuous-delivery/pipeline/tekton/events
icr.io/continuous-delivery/pipeline/tekton/workingdirinit
icr.io/continuous-delivery/pipeline/tekton/powershell
icr.io/continuous-delivery/pipeline/tekton/resolvers
icr.io/continuous-delivery/pipeline/tekton/webhook
专用工作程序代理程序还使用以下内部映像:
icr.io/continuous-delivery/pipeline/pipeline-private-worker-util
icr.io/continuous-delivery/pipeline/tekton/kubectl-jq
icr.io/continuous-delivery/pipeline/tekton/ubi
icr.io/continuous-delivery/pipeline/tekton/base
支持先前的 Delivery Pipeline 专用工作程序映像
要利用当前功能部件和修订,并保持完全合规性,建议您使专用工作程序映像保持最新。
对于专用工作程序映像的每个后续发行版,将更新版本号。
- 代理程序更改会导致次要版本增量,例如 V 14.10 更改为 V 14.11。
- 新的 Tekton 框架更改将导致主要版本增量,例如版本 14.11 将更改为版本 15.0。
IBM Cloud® Continuous Delivery 支持当前专用工作程序映像的 n-1
主版本。 例如,如果当前映像是 V 14.x,那么还允许运行先前版本的 13.x 映像。 在管道工作程序映像的主版本递增到 15.x之后,允许使用 V 14.x 映像,但任何 V 13.x 或更低版本的映像都被视为已过时。