Tekton安装

半兽人 发表于: 2022-01-12   最后更新时间: 2022-01-20 17:39:27  
{{totalSubscript}} 订阅, 2,131 游览

前提

  • 对于Tekton Pipelines v0.11.0或更高版本,Kubernetes集群的版本为1.15或更高,或者对于Tekton v0.11.0之前的版本,Kubernetes集群的版本为1.11或更高。

  • 在集群中启用基于角色的访问控制 (RBAC)。

  • 授予当前用户 cluster-admin 角色。

安装(Installation)

要安装Tekton的核心组件Tekton Pipelines,请运行以下命令。

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

# 国内:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/Tekton/v0.31.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

# 国内:
kubectl apply -f https://www.kubebiz.com/raw/KubeBiz/Tekton/v0.31.0/release.notags.yaml

注意

此命令会自动安装Tekton核心组件Tekton Pipelines的最新官方版本。如果您想安装以前的版本,请使用

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

用你喜欢的版本替换YOUR-VERSION。你可以在GitHub上找到Tekton官方版本的完整列表。

安装完成可能需要一些时间,可以使用以下命令检查进度:

kubectl get pods --namespace tekton-pipelines

确认列出的每个组件都是Running状态。

持久卷(Persistent volumes)

要运行CI/CD工作流,你需要为Tekton提供一个用于存储的持久卷。Tekton 默认会请求一个具有默认存储类别的 5Gi 卷。您可能需要手动创建。请注意,Tekton的性能可能因您选择的存储选项而有所不同。

注意

你可以用下面的命令检查可用的持久性卷和存储类别。

kubectl get pv
kubectl get storageclasses

如果您想配置持久化卷Tekton请求的大小和存储类别,可以通过更新默认的config-artifact-pvc configMap。此 configMap 包括两个属性。

  • size: 卷的大小
  • storageClassName: 卷的存储类别的名称

下面的例子要求Tekton在运行工作流时,手动存储类请求一个10Gi的持久卷。

kubectl create configmap config-artifact-pvc \
                         --from-literal=size=10Gi \
                         --from-literal=storageClassName=manual \
                         -o yaml -n tekton-pipelines \
                         --dry-run=client | kubectl replace -f -

另外,除非另有配置,否则Tekton会使用Kubernetes集群中的默认服务账户;如果您想覆盖,请更新ConfigMap config-defaultsdefault-service-account属性。

kubectl create configmap config-defaults \
                         --from-literal=default-service-account=YOUR-SERVICE-ACCOUNT \
                         -o yaml -n tekton-pipelines \
                         --dry-run=client  | kubectl replace -f -

设置CLI

为方便起见,建议将 Tekton CLI tkn 与 Tekton 的核心组件 Tekton Pipelines 一起安装。

Linux

Fedora, CentOS 和 其他基于rpm的安装方式:

先到Tekton释放下载对应的包。

然后安装

rpm -Uvh tektoncd-cli-0.21.0_Linux-64bit.rpm

更多安装方式:https://tekton.dev/docs/getting-started/#set-up-the-cli

使用Tekton的第一个CI/CD工作流程

使用Tekton,CI/CD工作流程中的每个操作都成为一个步骤(Step),用你指定的容器镜像执行。然后将步骤组织到任务中,在集群中作为Kubernetes pod运行。你可以进一步将任务组织到管道(Pipelines)中,管道可以控制几个任务的执行顺序。

要创建一个任务,使用Tekton API创建一个Kubernetes对象,其类型为任务(Task)。下面的YAML文件指定了一个具有简单步骤的任务,该任务使用Ubuntu官方镜像来打印一句Hello World!

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
  name: hello
spec:
  steps:
    - name: hello
      image: ubuntu
      command:
        - echo
      args:
        - "Hello World!"

将上述YAML写入一个名为task-hello.yaml的文件,并将其应用于你的Kubernetes集群。

kubectl apply -f task-hello.yaml

要用Tekton运行这个任务,你需要创建一个TaskRun,这是另一个Kubernetes对象,用于指定任务的运行时间信息。

要查看此 TaskRun 对象,可运行以下 Tekton CLI (tkn) 命令。

tkn task start hello --dry-run

运行上述命令后,应显示以下TaskRun定义:

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  generateName: hello-run-
spec:
  taskRef:
    name: hello

要使用上面的TaskRun来启动 "echo任务",你可以使用tknkubectl

tkn开始:

tkn task start hello

kubectl开始:

# 使用 tkn 的 --dry-run 选项,将 TaskRun 保存到一个文件中
tkn task start hello --dry-run > taskRun-hello.yaml

# 创建TaskRun
kubectl create -f taskRun-hello.yaml

Tekton 现在将开始运行您的任务。要查看最后一次TaskRun的日志,请运行以下 tkn命令:

tkn taskrun logs --last -f

任务可能需要一些时间才能完成。 当它执行时,它应该显示以下输出:

[hello] Hello World!
更新于 2022-01-20

查看Tekton更多相关的文章或提一个关于Tekton的问题,也可以与我们一起分享文章