IBM Cloud Docs
安装 Delivery Pipeline Private Worker

安装 Delivery Pipeline Private Worker

安装并注册 Delivery Pipeline Private Worker,以便 IBM Cloud® Continuous Delivery 开发团队可以在其工具链配置中使用专用工作程序。 开发者可以在没有任何入站网络连接的情况下,在专用工作程序安装的网络作用域内运行工作负载。

Delivery Pipeline 使用公共和专用工作程序来运行管道作业。 缺省情况下,管道作业是使用公共工作程序在 IBM 管理的公共共享基础架构上运行的。 管道作业只能在公用网络上访问资源(IBM 内部和外部资源),并且每个作业的运行时间限制为 60 分钟。

在某些情况下,Delivery Pipeline 可能需要访问内部或内部部署资源。 在这些情况下,可以连接到 Delivery Pipeline Private Worker 并与之集成以在您自己的 Kubernetes 基础架构上运行。

安装在专用集群上的专用工作程序代理程序仅从 IBM托管的专用工作程序服务请求数据。 数据流是单向的,仅源自代理程序。

先决条件

在安装专用工作程序之前,请确保您有 IBM Cloud® 帐户可创建认证密钥。 您需要在管理员的台式计算机上安装的最新 kubectl 版本。 此外,您还必须拥有 Kubernetes 集群 (版本 1.15 或更高)和管理权限,才能安装私有 Worker。

  • 建议的 Kubernetes 集群配置:

    • IBM Cloud Kubernetes Service 1.21 或更高版本,以便在 Public 上隔离运行工作负载。IBM Cloud
    • Red Hat® OpenShift® on IBM Cloud® V 4.9 或更高版本。
  • 网络访问权:

    • 入站: 不需要。
    • 出站网络访问使用 "(TCP:443),其中区域与交付管道位置相匹配,为悉尼(au-syd)、法兰克福(eu-de)、伦敦(eu-gb)、东京(jp-tok)、大阪(jp-osa)、达拉斯(us-south)、华盛顿(us-east)、圣保罗(br-sao)或多伦多(ca-tor)。 例如,对于法兰克福区域,请指定 https://private-worker-service.eu-de.devops.cloud.ibm.com (TCP:443)。 要获取对全局端点的网络访问权以进行 API 密钥验证,请使用 https://iam.cloud.ibm.com (TCP:443)
  • 用于从 icr.io中拉取映像的许可权。 私人工作者需要 tekton-pipelines 基础设施,并且必须能够从 icr.io 提取 tekton-releases 映像,以完成私人工作者的安装。

    要从 "icr.io 容器注册表中提取映像,可能需要 定义特定的Kubernetes ClusterImagePolicy

  • 可选。 如果要使用 Operator Lifecycle Manager (OLM) 来安装专用工作程序,那么 OLM 操作程序框架必须 安装在集群上。 缺省情况下,此框架预安装在所有 Red Hat® OpenShift® on IBM Cloud® 集群上。

    在 v1.23之前创建的集群上提供了先前版本的 IBM Cloud Kubernetes Service。 要在 IBM Cloud Kubernetes Service 集群上使用 OLM,必须首先将集群更新为 v1.23。 接下来,必须通过卸载先前版本的 OLM 并重新安装 OLM来升级到当前版本的 OLM。

    要从 IBM Cloud Kubernetes Service 集群卸载先前的 OLM 框架,请运行以下命令:

    kubectl delete deployment -n ibm-system catalog-operator
    kubectl delete deployment -n ibm-system olm-operator
    kubectl delete crd operatorgroups.operators.coreos.com
    kubectl delete crd operators.operators.coreos.com
    kubectl delete crd subscriptions.operators.coreos.com
    kubectl delete crd catalogsources.operators.coreos.com
    kubectl delete crd clusterserviceversions.operators.coreos.com
    kubectl delete crd installplans.operators.coreos.com
    kubectl delete sa -n ibm-system olm-operator-serviceaccount
    kubectl delete clusterrole system:controller:operator-lifecycle-manager
    kubectl delete clusterrolebinding olm-operator-binding-ibm-system
    kubectl delete clusterrole aggregate-olm-edit
    kubectl delete clusterrole aggregate-olm-view
    

    有关如何安装新的 OLM 框架的指示信息,请参阅 How do I install OLM?

由于专用工作程序与 Red Hat OpenShift 管道不兼容,因此建议不要在具有 Red Hat OpenShift 管道的集群上安装这些工作程序。

安装 Delivery Pipeline Private Worker

要安装专用工作程序,您必须具有对集群的管理员级别访问权。 由于没有可用的图形用户界面,因此只能通过命令行来完成专用工作程序安装。

使用 CLI 安装 Delivery Pipeline Private Worker

以下步骤适用于正在为多个人员或团队准备环境和专用工人的管理员。 要安装专用工作程序以供您自己使用,请参阅 设置 Delivery Pipeline 专用工作程序

您可以直接在 IBM Cloud Kubernetes 集群或 Red Hat® OpenShift® on IBM Cloud® 集群上安装专用工作程序框架,也可以使用 Operator Lifecycle Manager(OLM)安装该框架。

直接在群集上安装

要在集群上直接安装框架,您必须对该集群具有管理访问权。 在 IBM Cloud CLI 中,输入以下命令:

kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install"

其中,{REGION} 是工具链管道的位置。 您可以为 {REGION} 指定以下任何值:

  • 悉尼 au-syd
  • 法兰克福 eu-de
  • 伦敦 eu-gb
  • 东京 jp-tok
  • 大板 jp-osa
  • 达拉斯 us-south
  • 华盛顿 us-east
  • 多伦多 ca-tor
  • 圣保罗州 br-sao

直接在防火墙群集上安装

要在集群上直接安装框架,您必须对该集群具有管理访问权。 在 IBM Cloud CLI 中,输入以下命令:

kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install?private=true"

其中,{REGION} 是工具链管道的位置。 您可以为 {REGION} 指定以下任何值:

  • 法兰克福 eu-de
  • 伦敦 eu-gb
  • 达拉斯 us-south
  • 华盛顿 us-east

您必须具有 VRF 已启用 IBM Cloud 帐户才能使用此功能。

使用 OLM

OLM 处理安装并设置自动更新的框架。 此方法可确保您的专用工作程序始终是最新发行版的最新版本。 可以在 Red Hat® OpenShift® on IBM Cloud® 和 IBM Cloud Kubernetes 集群上使用 OLM。 有关如何安装 OLM 框架的更多信息,请参阅 How do I install OLM?

输入以下命令以在 Red Hat® OpenShift® on IBM Cloud® 集群上安装用于自动更新的框架:

kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install?type=openshift&olm=true"

其中,{REGION} 是工具链管道的位置。 您可以为 {REGION} 指定以下任何值:

  • 悉尼 au-syd
  • 法兰克福 eu-de
  • 伦敦 eu-gb
  • 东京 jp-tok
  • 大板 jp-osa
  • 达拉斯 us-south
  • 华盛顿 us-east
  • 多伦多 ca-tor
  • 圣保罗州 br-sao

以下代码片段显示了在达拉斯地区 Red Hat® OpenShift® on IBM Cloud® 上安装私人工作者 OLM 的示例:

$ kubectl apply --filename "https://private-worker-service.us-south.devops.cloud.ibm.com/install?type=openshift&olm=true"
catalogsource.operators.coreos.com/private-worker-agent created
subscription.operators.coreos.com/private-agent-subscription created

输入以下命令以在 IBM Cloud Kubernetes 集群上安装用于自动更新的框架:

kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install?type=iks&olm=true"

其中,{REGION} 是工具链管道的位置。 您可以为 {REGION} 指定以下任何值:

  • 悉尼 au-syd
  • 法兰克福 eu-de
  • 伦敦 eu-gb
  • 东京 jp-tok
  • 大板 jp-osa
  • 达拉斯 us-south
  • 华盛顿 us-east
  • 多伦多 ca-tor
  • 圣保罗州 br-sao

以下代码片段显示了达拉斯地区私人工作者 OLM 安装的示例,网址是 IBM Cloud Kubernetes:

$ kubectl apply --filename "https://private-worker-service.us-south.devops.cloud.ibm.com/install?type=iks&olm=true"
catalogsource.operators.coreos.com/private-worker-agent created
catalogsource.operators.coreos.com/tekton-framework created
operatorgroup.operators.coreos.com/agent-operator-group created
subscription.operators.coreos.com/private-agent-subscription created

要设置专用工作程序池,请对更多 Kubernetes 集群重复此过程。

注册 Delivery Pipeline Private Worker

创建服务标识

服务标识表示可一起操作的一个或多个专用工作程序组成的池。 可以初始注册一个专用工作程序安装,然后通过复用相同的服务标识,以递增方式将更多的专用工作程序注册到同一组中。 在同一组中注册多个专用工作程序可支持更高的可用性,并可对专用工作程序容量进行水平缩放。 有关服务标识的更多信息,请参阅创建和使用服务标识

在控制台中创建服务标识

  1. 登录到 IBM Cloud
  2. 转至 https://cloud.ibm.com/iam/serviceids
  3. 单击创建
  4. 输入服务标识的名称和描述。 如果要为专用工作程序池创建服务标识,请指定专用工作程序池的名称,例如:Pipeline Private Workers for Acme
  5. 单击创建
  6. 保存服务标识供将来使用。 在针对 Delivery Pipeline Private Worker 安装的 Kubernetes 集群上,服务标识是必需的。

使用 CLI 创建服务标识

在 IBM Cloud CLI 中,输入以下命令:

$ ibmcloud iam service-id-create {worker-pool-name} -d "{worker-pool-description}"

Creating service ID {worker-pool-name} bound to current account as username@domain.com...OK
Service ID {worker-pool-name} is created successfully

Name           {worker-pool-name}
Description    {worker-pool-description}
CRN            crn:v1:bluemix:public:iam-identity::a/8d63fb1cc5e99e86dd7229dddff75fef::serviceid:ServiceId-38ffff31-3ea3-4ecc-9732-190f7a993097
Bound To       crn:v1:bluemix:public:::a/8d63fb1cc5e99e86dd7229dddff75fef:::
Version        1-6df15bde97b6e87f583a557f8731888f
Locked         false
UUID         ServiceId-38ffff31-3ea3-4ecc-9732-190f7a993097

创建 API 密钥

API 密钥是传递给 API 的唯一代码,用于标识调用该 API 的应用程序或用户。 为防止恶意使用 API,您可以使用 API 密钥来跟踪和控制该 API 的使用方式。 有关 API 密钥的更多信息,请参阅了解 API 密钥

在控制台中创建 API 密钥

  1. 登录到 IBM Cloud
  2. 转至 https://cloud.ibm.com/iam/serviceids
  3. 选择要为其创建 API 的服务标识。
  4. API 密钥选项卡中,单击创建
  5. 输入 API 密钥的名称和描述,以指定专用工作程序安装,例如 Pipeline Private Worker in IBM Cloud Private
  6. 单击创建
  7. 复制或下载 API 密钥。 创建 API 密钥后,无法再次对其进行检索。

使用 CLI 创建 API 密钥

在 IBM Cloud CLI 中,输入以下命令:

$ ibmcloud iam service-api-key-create {worker-api-key-name} (SERVICE\_ID\_NAME|SERVICE\_ID\_UUID) \[-d, --description DESCRIPTION\] \[--file OUT_FILE\]

Creating API key  {worker-api-key-name} of service
SERVICE\_ID\_NAME as username@domain.com...
OK
Service API key {worker-api-key-name} is created
Successfully saved API key information to FILE
Please preserve the API key! It cannot be retrieved after it's created.

Name           {worker-api-key-name}
Description    Description
Bound To       crn:v1:bluemix:public:iam-identity::a/2cac145ae78048679b129009cfe8c7f9::serviceid:ServiceId-9a6a14e5-5811-4c2c-9131-0e1d4bb7dfe1
Created At     2019-07-04T10:51+0000
API Key        doJX9kORc4q5PRkH19H3lePDwYRAKNWk4XlIuEBrriOD
Locked         false
UUID           ApiKey-c1ee0fb5-90f2-476e-a260-a796e6d7f5f7

向 IBM Cloud 注册专用工作程序

必须先 部署专用工作程序框架,然后才能向 IBM Cloud注册专用工作程序。 要使用注册命令,您必须(使用 kubectl)登录到先前安装了专用工作程序的 Kubernetes 集群。

您必须向对应于要启用的 Delivery Pipeline 的位置的特定 IBM Cloud 区域注册专用工作程序。

  1. 为专用工作程序指定有意义的名称。 该名称必须以小写字母数字字符开头和结尾,也可以包含 _. 字符。

  2. 使用先前创建的服务标识和 API 密钥,专用工作程序名称以及作为工具链管道位置的 {REGION} 来运行以下命令。

    $ kubectl create secret generic {WORKER_NAME}-auth -n default --from-literal=apikey={API_KEY} && kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install/worker?serviceId={SERVICE_ID}&name={WORKER_NAME}"
    
    workeragent.devops.cloud.ibm.com/worker-name created
    secret/worker-name-auth created
    

    您可以为 {REGION} 指定以下任何值:

    • 悉尼 au-syd
    • 法兰克福 eu-de
    • 伦敦 eu-gb
    • 东京 jp-tok
    • 大板 jp-osa
    • 达拉斯 us-south
    • 华盛顿 us-east
    • 多伦多 ca-tor
    • 圣保罗州 br-sao
  3. 要注册代理以使用专用端点,请使用可选的 private 查询参数,如下所示:

       $ kubectl create secret generic {WORKER_NAME}-auth -n default --from-literal=apikey={API_KEY} && kubectl apply --filename "https://private-worker-service.{REGION}.devops.cloud.ibm.com/install/worker?serviceId={SERVICE_ID}&name={WORKER_NAME}&private=true"
    

    您必须为 {REGION} 指定以下值之一:

    • 法兰克福 eu-de
    • 伦敦 eu-gb
    • 达拉斯 us-south
    • 华盛顿 us-east

注:如果主机群集处于防火墙环境中,则需要在注册代理时使用 private 查询参数

  1. 要验证代理程序是否已正确注册,请输入以下命令:

    $ kubectl get workeragents
    NAME           SERVICEID     AGENT   REGISTERED   VERSION   AUTH   CONSTRAINED   PAUSED
    <worker_name>  <ServiceId>   OK      Succeeded    OK        OK     false         false
    

专用工作程序将安装在 default 名称空间中。 它们永远不应安装在 tekton-pipelines 名称空间中。 此名称空间保留用于 Tekton 框架和代理程序部署。 在与 default 名称空间不同的名称空间中安装工作程序代理程序可能会导致一些意外的副作用。

配置 Delivery Pipeline Private Worker 以使用专用端点

缺省情况下,专用工作程序使用公共端点进行通信。 集群管理员可以更新专用工作程序配置以使用专用端点,以便专用工作程序与 IBM Cloud® Continuous Delivery 服务之间的通信不使用公用因特网。

  1. 获取群集上安装的代理名称:

    kubectl get workeragents -n default
    
  2. 更改该代理程序的 apiUrl :

    kubectl patch workeragent {WORKER_NAME} --type='merge' -p '{"spec": {"apiUrl":"https://private-worker-service.private.{REGION}.devops.cloud.ibm.com"}}'
    

    其中,{REGION} 是工具链管道的位置。 专用终端可在以下地区使用:

    • 达拉斯 us-south
    • 华盛顿州 us-east
    • 法兰克福 eu-de
    • 伦敦 eu-gb

    您必须具有 VRF 已启用 IBM Cloud 帐户才能使用此功能。

  3. 可选。 要返回到使用代理程序的公共端点,请输入以下命令:

    kubectl patch workeragent {WORKER_NAME} -n default --type='merge' -p '{"spec": {"apiUrl":"https://private-worker-service.{REGION}.devops.cloud.ibm.com"}}'
    

配置 Delivery Pipeline 专用工作程序以使用 Satellite 链路端点

缺省情况下,专用工作程序使用公共端点进行通信。 集群管理员可以更新专用工作程序配置以使用 Satellite 链接端点,以便专用工作程序与 Continuous Delivery 服务之间的通信通过 Satellite 链接端点。

  1. 为 IBM Cloud® Continuous Delivery 服务创建云 Satellite 链接端点,并设置 FQDNService indication name 以使用以下值:

    private-worker-service.{REGION}.devops.cloud.ibm.com
    

    其中,{REGION} 是工具链管道的位置。

  2. 在专用工作程序名称空间中创建用于将公共端点映射到 Satellite 链接端点的 configmap:

    apiVersion: v1
    kind: ConfigMap
    metadata:
       name: pipelineworker-url-map
    data:
       iam.cloud.ibm.com: <default IAM satellite link endpoint for your satellite location>
       private-worker-service.{REGION}.devops.cloud.ibm.com: <satellite link endpoint created in step 1)>
    

    您可以将端点添加到 configmap,例如这些 缺省 Satellite 链接端点

更新 Delivery Pipeline Private Worker 安装

如果专用工作程序报告为不活动,那么必须更新安装。

要查看专用工作程序的版本,请输入以下命令之一:

  • IBM Cloud Kubernetes Service: kubectl -n tekton-pipelines describe deploy private-worker-agent | grep Image
  • Red Hat® OpenShift® on IBM Cloud®: kubectl -n openshift-operators describe deploy private-worker-agent-controller-manager | grep Image

要更新专用工作程序安装,请完成以下步骤:

  1. 再次运行安装命令
  2. 再次在 Kubernetes 集群上注册专用工作程序

您可以复用用于现有专用工作程序的 apikey

有关 Delivery Pipeline 专用工作程序的更多信息,请参阅 Delivery Pipeline 专用工作程序的故障诊断管道专用工作程序的常见问题解答