作为k8s和cicd专家的我|作为k8s和cicd专家的我 在tekton实战中 开发或者需要注意的点
tekton的优点
- 结合k8s的诸多特点:整体上设计的十分巧妙
- hub中有丰富的 task 供我们封装自己的pipeline
- 我在通读它的源码后感慨其伟大之初
- 实话说在k8s中还在玩jenkins的就比较落伍了
- tekton全流水线实战和pipeline运行原理源码解读
- 01 build-push :只构建并推送镜像
- 02 auth-clone-build-push-apply:新服务 or 同时调整镜像和yaml ,构建+部署yaml+替换image
- 03 auth-set-image:只需要更新镜像版本,测试环境测好的镜像部署到线上
- 04 auth-apply-yaml-image:只需要部署yaml,需替换IMAGE_HOLDER, 比如yaml的日志采集等字段更新了,或者configMap参数变更
- 05 apply一个git仓库中的yaml文件,无需替换IMAGE_HOLDER
- 06 apply-yaml-dir:apply一个git仓库中的目录,目录中有多个yaml文件
- 07 apply一个外部的url对应的yaml文件,如装github上的开源组件
- 08 auth-apply-yaml-image-var : 给需要传额外参数的流水线
- 应研发需求,为了防止镜像被污染,在镜像标签中添加时间和commit字符串
- 【作为k8s和cicd专家的我|作为k8s和cicd专家的我 在tekton实战中 开发或者需要注意的点】添加规则如下:
- 如果GIT_REVISION为空,分支或tag信息则为master
- 如果GIT_REVISION不为空,分支或tag信息则为对应的传参
- 加分钟级别时间
- 加commit字符串
- {IMAGE_BASE_PATH}:{GIT_REVISION}-{date}-{commitid}
- 举例 xxx/web/nignx:v1.2.3-20220512-10-55-c8873a524
- 举例 xxx/web/nignx:master-20220512-11-08-a47ac5b8c
- deployment部署的yaml模板在git仓库中
- 经常需要变更镜像版本的地方 用
IMAGE_HOLDER
做占位符
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: IMAGE_HOLDER
ports:
- containerPort: 80
04 在cd时应该限制往在线k8s集群发布的权限
- 在需要部署到k8s集群的流水线中添加鉴权步骤,逻辑如下
- 用户需要传参USER_TOKEN
- 如果是部署的目标集群名字中包含
live
,去校验接口验证USER_TOKEN
- 成功则放行
- 失败则流水线停止
- 校验接口每隔一段时间生成随机token
- 随机token请找对应的SRE索要:目的就是研发发布的时候要通知SRE,大家都知道要往在线集群发布了,避免私下发布或误发布
- 使用admintoken可以通过接口获取随机token,然后填入USER_TOKEN校验即可
- 关于golang项目 go mod 引用公司内其他私有仓库的问题
- 关于habor镜像仓库权限的问题等
- k8s底层原理和源码讲解之精华篇
- k8s底层原理和源码讲解之进阶篇
- k8s纯源码解读课程,助力你变成k8s专家
- k8s运维大师课程
- tekton全流水线实战和pipeline运行原理源码解读
- k8s二次开发之基于真实负载的调度器
- k8s-operator和crd实战开发 助你成为k8s专家
- 01_prometheus全组件配置使用、底层原理解析、高可用实战
- 02_prometheus-thanos使用和源码解读
- 03_kube-prometheus和prometheus-operator实战和原理介绍
- 04_prometheus源码讲解和二次开发
- golang基础课程
- golang运维平台实战,服务树,日志监控,任务执行,分布式探测
- golang运维开发实战课程之k8s巡检平台
- k8s-prometheus课程答疑和运维开发职业发展规划
推荐阅读
- 前端食堂技术周刊第|前端食堂技术周刊第 51 期(pnpm v7.10.0、8 月登陆网络平台的新内容、重新思考流行的 Node.js 模式和工具)
- Dragonfly|Dragonfly 基于 P2P 的文件和镜像分发系统
- Effective|Effective Java学习笔记---------枚举和注解
- 投稿|剧集上市公司需要《开端》和《梦华录》
- 自己的自己
- Android|Android Studio和Gradle使用不同位置JDK的问题解决
- vue项目实现通过ip地址访问和localhost访问方式
- ES6|ES6 关键字 let 和 ES5 及关键字 var 的区别解析
- 音视频开发|技术分享(微信小程序音视频与WebRTC互通的技术思路和实践)
- 音视频开发|腾讯技术分享(微信小程序音视频与WebRTC互通的技术思路和实践)