目录
Please enable Javascript to view the contents

Go-Tekton 使用示例及遇坑小记

 ·  ☕ 1 分钟

重要

Tekton 是 K8s 原生的 CI/CD 框架,通过 CRD 定义 Task、Pipeline、PipelineRun 等资源。本文记录实际使用的场景和常见坑点。

环境说明

  • K8s 集群 + Tekton v0.16

1.简介

基于 Tekton 实现以下 CI/CD 场景:

  1. 镜像部署
  2. 源码构建 + 镜像部署
  3. 源码文件上传 HDFS
  4. 微服务依赖关系编排

2.说明

2.1 安装

1
kubectl apply -f https://github.com/tektoncd/pipeline/releases/download/v0.16.0/release.yaml

2.2 Docker-in-Docker

nuctl(nuclio 客户端)需要访问 Docker daemon:

1
2
$ nuctl get project --verbose
# 报错:无法连接到 docker daemon

原因:Tekton Task 中的容器默认不挂载 Docker socket。需要使用 dind-sidecar 模式。

2.3 构建镜像

Kaniko 容器可以在不挂载 Docker socket 的情况下构建镜像:

2.4 Task 之间传递数据

通过 results 在 Task 间传递数据:

方向配置位置关键字
传出Task 定义results
传入Pipeline 定义params + $(tasks.<name>.results.<key>)

2.5 任务编排

方式适用场景
runAfter明确依赖顺序的串行任务
when条件判断,根据前一个 Task 结果决定是否执行

2.6 Workspace 与认证

3.参考

分享

Hex
作者
Hex
CloudNative Developer