Tekton之一:如何部署起来 Tekton
Tekton 是云原生应用的 CICD 平台。可以非常方便地搭建起来云原生应用的自动化持续集成,持续部署,包含应用打包,应用的镜像构建,镜像发布,测试,helm chart 发布,部署到测试、生产环境。
使用 Tekton 可以只部署 tekton pipeline, 通过命令行交互。 也可以部署 tekton pipeline + tekton dashbaord, 可以在 dashbaord 上面进行维护管理。
原本安装 tekton pipeline 和 tekton dashboard 到 kubernetes 集群上是非常简单的事情, 两个命令完成:
kubectl create namespace tekton-pipelineskubectl apply -f https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.3/release.yaml kubectl apply -f https://github.com/tektoncd/dashboard/releases/download/v0.25.0/tekton-dashboard-release.yamlkubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097
然后就可以本地访问 Dashboard: http://localhost:9097
由于众所周知的国内网络的问题,国内由于访问不到 gcr.io 上面的镜像。整个过程比较折腾,需要通过代理把用到的镜像 pull 下来,然后放到自己的镜像仓库。
不过我把整个过程通过脚本几乎自动化了, 你可以参考下文操作即可快速部署起来。大约10多分钟能够部署完,慢的话可能30分钟,当然前提是你对于 k8s, kubectl 之类的比较熟悉,另外需要有以下3个条件:
- 一台 mac 或者 linux工作机。
- 这台工作机上配置好了对于 kubernetes 集群的访问。Tekton 将部署于 kubernetes 之上。
- 有一个你可以访问的 docker 镜像仓库,比如阿里云上创建的镜像仓库。不建议使用 docker.io 作为镜像仓库,国内的 k8s 集群很可能也访问不到上面的镜像。
整个过程如下:
设置代理,docker pull 镜像到本地 -> docker tag && docker push 到国内的镜像仓库 -> 更新 yaml 文件中的配置 -> deploy tekton/tekton dashboard 到 kubernetes.
以下是详细的 4 个步骤的安装过程。
1.下载用于 kubernetes 环境部署的 yaml 文件
以下步骤执行前,开启代理,确保可以正常访问 googleapis, github, gcr.io。
Tekton controller, 选择跟 k8s 相配套的版本:
https://github.com/tektoncd/pipeline#required-kubernetes-version
说明:版本不配套部署的时候会有“Version check failed, kubernetes version xxx is not compatible”的错误日志。
wget https://storage.googleapis.com/tekton-releases/pipeline/previous/v0.32.3/release.yaml -O tekton-pipeline-release.yaml
Tekton Dashboard,选择跟 k8s 相配套的版本:
https://github.com/tektoncd/dashboard#which-version-should-i-use
wget https://github.com/tektoncd/dashboard/releases/download/v0.25.0/tekton-dashboard-release.yaml -O tekton-dashboard-release.yaml
2.拉取 gcr.io 镜像,推送到自己的镜像
在 mac/linux 的工作机器上,执行如下代码(如果你用的 Windows,可以通过安装 gnu 的命令行工具来获取 grep, aws 的工具:
grep -Eo "gcr.io([^\" ]*)" tekton-pipeline-release.yaml | awk '{print "docker pull "$0}' > pull.shgrep -Eo "gcr.io([^\" ]*)" tekton-pipeline-release.yaml | awk -F"@" '{origin = $0;gsub("gcr.io/","",$1);print "docker tag " origin " my-registry.cn-beijing.cr.aliyuncs.com/gcrio/"$1 ";\ndocker push my-registry.cn-beijing.cr.aliyuncs.com/gcrio/" $1}' > tag.push.shsource pull.sh
source push.sh
然后更改 tekton-pipeline-release 中的地址为自己的镜像仓库(Linux):
sed -i "s/gcr.io/my-registry.cn-beijing.cr.aliyuncs.com\/gcrio/g" tekton-pipeline-release.yaml
mac 上这样运行(如果 mac 上面安装了 gnu sed,可以直接执行上面的 sed 命令):
sed -i "" "s/gcr.io/my-registry.cn-beijing.cr.aliyuncs.com\/gcrio/g" tekton-pipeline-release.yaml
然后编辑 tekton-pipeline-release.yaml 里面的内容, 去掉镜像仓库中的 SHA256 ,通过 版本号或者 latest 来引用。
3.部署 Tekton (Tekton pipeline)
kubectl create namespace tekton-pipelines
kubectl apply -f tekton-pipeline-release.yaml
4.部署 Tekton Dashboard
类似于前面部署 Tekton Pipeline 的过程, 由于 dashboard 用到的镜像目前只有1个。 直接生成 docker pull, docker tag, docker push 命令, 输出到 console, 然后手工执行这些命令即可:
grep -Eo "gcr.io([^\" ]*)" tekton-dashboard-release.yaml | awk '{print "docker pull "$0}'grep -Eo "gcr.io([^\" ]*)" tekton-dashboard-release.yaml | awk -F"@" '{origin = $0;gsub("gcr.io/","",$1);print "docker tag " origin " my-registry.cn-beijing.cr.aliyuncs.com/gcrio/"$1 ";\ndocker push my-registry.cn-beijing.cr.aliyuncs.com/gcrio/" $1}'
拷贝前面两个命令的输出, 执行一下命令(docker pull, docker push)
然后替换文件中的镜像地址(Linux):
sed -i "s/gcr.io/my-registry.cn-beijing.cr.aliyuncs.com\/gcrio/g" tekton-dashboard-release.yaml
mac 上这样运行:
sed -i "" "s/gcr.io/my-registry.cn-beijing.cr.aliyuncs.com\/gcrio/g" tekton-dashboard-release.yaml
然后部署 tekton dashboard:
kubectl apply -f tekton-dashboard-release.yaml
检查 pod 的状态:
kubectl get pods --namespace tekton-pipelines
可以看到如下的输出
pod 正常 running 之后, 转发集群端口到本地, 即可通过本地访问:
kubectl --namespace tekton-pipelines port-forward svc/tekton-dashboard 9097:9097
然后就可以本地访问 Dashboard: http://localhost:9097
Tekton之一:如何部署起来 Tekton相关推荐
- Tekton之三:快速理解 Tekton 是如何工作的
Tekton 是云原生环境下面的非常强大的 CICD 产品. 如果你按照 Tekton 的官方文档来学习,使用 Tekton, 可能会跟遇到很多障碍. Tekton 的技术架构非常优秀,同时Tekto ...
- Tekton系列之实践篇-使用Tekton Trigger让Tekton使用更简单
微信公众号:运维开发故事,作者:乔克 在<Tekton实践篇-如何用Jenkins来管理Tekton>我们介绍了如何使用Jenkins来管理Tekton,这种方式是运维主动式管理,也就是需 ...
- 开源云原生CI/CD框架Tekton国内部署方式
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...
- 云原生CI/CD框架Tekton国内部署方式
Tekton 是一款功能非常强大而灵活的 CI/CD 开源的云原生框架.致力于提供全功能.标准化的云原生 CI/CD 解决方案.[本文主要是通过流水线自动化的将tekton镜像同步到腾讯云仓库,并部署 ...
- 开源 CI/CD 构建框架 TekTon 的深入剖析
简介 Tekton 是一个功能强大且灵活的Kubernetes 原生开源框架,用于创建持续集成和交付(CI/CD)系统. 关于Tekton, 网上可以搜到很多很多介绍文档,本文主要阐述我对Tekton ...
- Tekton笔记(三)之catalog kaniko
kaniko是一个容器镜像构建工具 本文主要讲述从github获取Dockerfile,构建镜像,最终上传仓库的过程. 本文使用的task版本为: https://github.com/tektonc ...
- kubernetes原生ci/cd工具tekton版本升级至v0.18.1
前言 最近没啥好写的,一直都在弄hpa的问题,也就是解决hpa没生效的问题,以及最优minReplica最小基数的问题.也已经划水了两篇博客了,所以今天就来简单记录一下之前做过的一个小任务,也就是将项 ...
- openshift Tekton pipeline 实践
文章目录 1. 介绍 2. 部署一个简单的pipeline 2.1 使用TaskRun运行"hello"样例任务 3 部署 Two-Tier Golang Application ...
- k8s tekton 实现CI流程,从git到docker registry
小白防忘. 在没学k8s之前一直使用的是jikens和docker watchtower实现CICD流程,在学习了k8s最后就决定使用tekton实现CI操作,tekton pipelines是一个k ...
最新文章
- Javascript 检查一组 radio 中的哪一个被勾选
- hive中array嵌套map以及行转列的使用
- 移动互联网漫谈(4)-移动通信网络
- mongodb之 复制集维护小结
- linux du命令使用:目录大小排序
- 一口气说出 4种 “附近的人” 实现方式,面试官笑了,嘿嘿
- 【4】SCN-Feign远程调用
- 【刷算法】按照之字形打印二叉树
- Matplotlib 中文用户指南 3.9 路径效果指南
- Android native进程间通信实例-binder篇之——解决实际问题inputreader内建类清楚缓存...
- Java基础学习总结(118)——单元测试的必要性和重要性
- 笔记 编写可读性代码的艺术
- 21天Jmeter打卡Day17 后置处理器_JSON_正则表达式_边界提取器_完成删除场景模拟测试
- ALGO-147_蓝桥杯_算法训练_4-3水仙花数
- ARCGIS 二次开发可以参考的资源(长期更新)
- 5G 时代,一加的机会在哪里?
- oeasy教您玩转linux-010110内容回顾
- 批量抓取羊毛网站信息,定时自动发送到邮箱进行阅览
- 域用户不准更改计算机名,请教高手,域环境下如何不退域修改计算机名?
- 数据治理的成功要素2:数据架构设计