GitOps 提供了一种基于 Git 的操作理念,而 Tekton 和 ArgoCD 分别作为 CI/CD 工具,共同实现了这一理念在 Kubernetes 集群中的应用
k8s只是jenkins 流水线中的一环,但是在tekton中,k8s是基础设施
工作流程:
- 代码提交:开发人员提交代码到 Git 仓库。
- CI 流程(通过 Tekton 实现):Tekton 触发构建流水线,编译代码、运行测试、构建 Docker 镜像,并将其推送到镜像仓库。
- CD 流程(通过 GitOps 和 Argo CD 实现):Tekton 更新 Git 仓库中的声明性配置(如 Kubernetes YAML 文件),Argo CD 检测到配置的变化后,将新的版本自动部署到 Kubernetes 集群中。
1. tekton
Tekton入门部署
装的时候有两条漏网之鱼
vim TektonCD-Pipelines.yaml # 改下下面,去掉后面的sha256.我这里没删是为了留个纪念
#jiangmaoxi/base:latest 把这个改成 alpine:3.12 把别的sha256删掉,只留tag就行了,要不它总重新pull镜像# This is gcr.io/google.com/cloudsdktool/cloud-sdk:302.0.0-slim"-gsutil-image", "jiangmaoxi/cloud-sdk:latest@sha256:27b2c22bf259d9bc1a291e99c63791ba0c27a04d2db0a43241ba0f1f20f4067f",# The shell image must be root in order to create directories and copy files to PVCs.# gcr.io/distroless/base:debug as of February 17, 2022# image shall not contains tag, so it will be supported on a runtime like cri-o"-shell-image", "jiangmaoxi/base:latest@sha256:3cebc059e7e52a4f5a389aa6788ac2b582227d7953933194764ea434f4d70d64",
skopeo copy --all docker://gcr.io/google.com/cloudsdktool/cloud-sdk docker://jiangmaoxi/cloud-sdk
skopeo copy --all docker://gcr.io/distroless/base docker://jiangmaoxi/base
有run才能跑。step组成task,task组成pipeline。task和pipeline 都是 CRD
Tekton Triggers 是用于触发 CI/CD 流水线的组件。
它提供了一种机制,可以根据外部事件(如 Git 仓库中的代码提交、拉取请求或定时事件)来自动触发 Pipelines 的执行。
创建ingress-nignx
当把上面这个部署ingress-nginx的yaml文件里的LoadBalance 改成NodePort后
kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller NodePort 10.233.13.142 <none> 80:31061/TCP,443:30608/TCP 133m
ingress-nginx-controller-admission ClusterIP 10.233.13.240 <none> 443/TCP 133m[root@master1 tekton]# cat tekton-dashboard-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: tekton-dashboard-ingressnamespace: tekton-pipelinesannotations:kubernetes.io/ingress.class: nginxnginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- host: tekton.example.comhttp:paths:- path: /pathType: Prefixbackend:service:name: tekton-dashboardport:number: 9097
然后在host里配置好 节点ip 域名。然后通过浏览器访问 http://域名: port
install tkn
tkn下载地址
tar -zxvf tkn_0.31.3_Linux_x86_64.tar.gz -C /usr/local/bin/ tkn
tkn version