Skip to content

Latest commit

 

History

History
289 lines (214 loc) · 11.7 KB

install.md

File metadata and controls

289 lines (214 loc) · 11.7 KB

安装Tekton管道

本指南介绍如何安装Tekton管道,包含以下主题:

开始之前

  1. 选择你想要安装的Tekton管道版本:

    • 正式版 - 在没有其他特定原因时可选择安装此版本.
    • 每夜构建 - 每日构建的非稳定版本,可能包含bug,镜像为gcr.io/tekton-nightly.
    • [HEAD] 这是最新的代码,它包含未发布的代码,可能产生无法预料的行为,请参考 开发指南.
  2. 如果你还没有现成的Kubernetes集群,请先安装,要求为1.15及以上版本:

    #在GKE上创建集群的命令示例
    gcloud container clusters create $CLUSTER_NAME \
      --zone=$CLUSTER_ZONE --cluster-version=1.15.11-gke.5
  3. 为当前用户赋予 cluster-admin 权限:

    kubectl create clusterrolebinding cluster-admin-binding \
    --clusterrole=cluster-admin \
    --user=$(gcloud config get-value core/account)

    请参考 基于角色的访问控制.

在Kubernetes集群中安装Tekton管道

要在Kubernetes集群中安装Tekton,需要:

  1. 运行以下命令安装Tekton管道及其依赖:

    kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

    你可以通过指定 previous/$VERSION_NUMBER来安装特定的版本,例如:

     kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.2.0/release.yaml

    如果你的容器运行时不支持 image-reference:tag@digest (例如, 像在OpenShift 4.x中使用的 cri-o ), 那么使用 release.notags.yaml 文件来代替:

    kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.notags.yaml
  2. 通过以下命令监控安装的进度,直到所有的Pod都变成运行状态:

    kubectl get pods --namespace tekton-pipelines --watch

    注意: 通过CTRL+C来停止监控.

恭喜! 你已经成功地在Kubernetes集群中安装了Tekton管道。接下来,你可查看以下主题:

在OpenShift中安装Tekton管道

要在OpenShift集群中安装Tekton,你首先需要应用anyuid安全上下文到tekton-pipelines-controller服务账户。这是运行webhook Pod的必须条件。 参考 安全上下文约束 查看更多信息。

  1. cluster-admin权限登录,以下使用默认的system:admin 用户:

    # For MiniShift: oc login -u admin:admin
    oc login -u system:admin
  2. 设置命令空间(项目)以及配置其服务账户:

    oc new-project tekton-pipelines
    oc adm policy add-scc-to-user anyuid -z tekton-pipelines-controller
  3. 安装Tekton管道:

    oc apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.notags.yaml

    参考 OpenShift命令行文档 查看有关 oc 命令的说明.

  4. 使用以下命令查看安装进度,直到所有组件都显示为运行状态:

    oc get pods --namespace tekton-pipelines --watch

    注意: 通过 CTRL + C 停止监控.

恭喜! 你已经成功地在OpenShift集群中安装了Tekton管道。接下来,你可参考以下主题:

If you want to run OpenShift 4.x on your laptop (or desktop), you should take a look at Red Hat CodeReady Containers.

配置物料存储

Tekton管道中的Tasks需要从一个或多个位置中获取输入或存储输出。 你可以使用以下方式来配置Tekton管道所需的存储资源:

注意: Tasks所需的输入与输出位置可通过 PipelineResources来定义。

对于Tekton管道来说,两种选项具有相同的功能,你可以按照你的实际业务需要进行选择。例如:

  • 在一些环境中,创建一个持久化卷可能比传输文件到云存储更慢。
  • 如果集群运行在多个可用区,访问持久化卷可能就不合适了。

注意: 要自定义持久化卷所用ConfigMaps的名称 (例如避免与其他服务冲突的情况), 重命名你的 ConfigMap 名称并更新controller.yaml中引用的值.

配置持久化卷

要配置 持久化卷, 通过使用一个名称为 config-artifact-pvcConfigMap 然后配置以下属性:

  • size: 卷的大小. 默认为5GiB.
  • storageClassName: 持久化卷所使用的存储类名称。默认为默认存储类。

配置云存储

要配置 S3 桶或者 GCS 桶, 使用一个名称为config-artifact-bucketConfigMap然后配置以下属性:

  • location - 桶的位置, 例如 gs://mybucket 或者 s3://mybucket.
  • bucket.service.account.secret.name - 服务账号使用的包含可访问桶的凭证的密文名称。
  • bucket.service.account.secret.key - 服务账号所需JSON文件的键名称。
  • bucket.service.account.field.name - 当指定密文路径时,所使用的环境变量名称。默认为 GOOGLE_APPLICATION_CREDENTIALS. 如果使用S3,需设置为BOTO_CONFIG.

重要: 配置你的桶的回收策略为在运行Tasks后删除所有文件。

注意: 你只能使用 us-east-1 可用区的S3桶. 这是gsutil 的限制.

S3 桶配置示例

以下为使用S3桶的示例:

apiVersion: v1
kind: Secret
metadata:
  name: tekton-storage
  namespace: tekton-pipelines
type: kubernetes.io/opaque
stringData:
  boto-config: |
    [Credentials]
    aws_access_key_id = AWS_ACCESS_KEY_ID
    aws_secret_access_key = AWS_SECRET_ACCESS_KEY
    [s3]
    host = s3.us-east-1.amazonaws.com
    [Boto]
    https_validate_certificates = True
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-artifact-bucket
  namespace: tekton-pipelines
data:
  location: s3://mybucket
  bucket.service.account.secret.name: tekton-storage
  bucket.service.account.secret.key: boto-config
  bucket.service.account.field.name: BOTO_CONFIG

GCS桶示例

以下为使用GCS桶的示例:

apiVersion: v1
kind: Secret
metadata:
  name: tekton-storage
  namespace: tekton-pipelines
type: kubernetes.io/opaque
stringData:
  gcs-config: |
    {
      "type": "service_account",
      "project_id": "gproject",
      "private_key_id": "some-key-id",
      "private_key": "-----BEGIN PRIVATE KEY-----\nME[...]dF=\n-----END PRIVATE KEY-----\n",
      "client_email": "[email protected]",
      "client_id": "1234567890",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://oauth2.googleapis.com/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/tekton-storage%40gproject.iam.gserviceaccount.com"
    }
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-artifact-bucket
  namespace: tekton-pipelines
data:
  location: gs://mybucket
  bucket.service.account.secret.name: tekton-storage
  bucket.service.account.secret.key: gcs-config
  bucket.service.account.field.name: GOOGLE_APPLICATION_CREDENTIALS

自定义基础执行参数

你可以自定义Tekton管道运行TaskRunPipelineRun时所用的服务账号 (ServiceAccount), 超时时间 (Timeout), 以及Pod模板 (PodTemplate) , 要自定义这些值,可直接修改配置文件 config-defaults

以下示例将自定义:

  • 默认服务账号从default 修改为 tekton.
  • 默认超时时间从60 分钟修改为 20 分钟.
  • 为所有由执行TaskRuns的Pod附加统一的 app.kubernetes.io/managed-by 标签.
  • 为默认的Pod模板添加一个节点选择器. 更多信息, 请参考 TaskRuns中的PodTemplate 或者 PipelineRuns中的PodTemplate.
apiVersion: v1
kind: ConfigMap
metadata:
  name: config-defaults
data:
  default-service-account: "tekton"
  default-timeout-minutes: "20"
  default-pod-template: |
    nodeSelector:
      kops.k8s.io/instancegroup: build-instance-group
  default-managed-by-label-value: "my-tekton-installation"

注意:config-defaults.yaml提供的_example键 的内容示例都可由你来自定义。

自定义管道控制器行为

要自定义管道控制器的行为,可修改配置文件 feature-flags :

  • disable-home-env-overwrite - 设置此标记为true,如果你想阻止Tekton执行步骤时覆盖你的$HOME环境变量, 默认为false, 更多信息请参考 相关issue.

  • disable-working-directory-overwrite - 设置此标记为true,如果你想阻止Tekton执行步骤时覆盖你的工作区目录,默认为false,这将允许Tekton在执行每一个步骤时将工作目录设置为 /workspace. 更多信息请参考 相关issue.

例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: feature-flags
data:
  disable-home-env-overwrite: "true" # Tekton will not override the $HOME variable for individual Steps.
  disable-working-directory-overwrite: "true" # Tekton will not override the working directory for individual Steps.

创建自定义Tekton管道版本

你可以创建Tekton管道的自定义发布版本,参考以下步骤 创建一个正式发布. 例如, 你可能需要自定义Tekton管道所使用的容器镜像。

下一步

开始使用Tekton管道, 参考Tekton管道手册 以及查看我们的 示例.


除非另有说明,本页内容采用Creative Commons Attribution 4.0 License授权协议,示例代码采用Apache 2.0 License授权协议