@
目录
Tekton 官网地址 https://tekton.dev/
Tekton 最新官网文档 https://tekton.dev/docs/
Tekton GitHub源码地址 https://github.com/tektoncd
Tekton是一个强大、灵活的构建 CI/CD 流水线系统的开源框架,允许开发者构建、测试和发布应用。Tekton 是云原生的,通过定义 CRD ,让用户快速灵活定义流水线;
Tekton是构建CI/CD系统的本地云解决方案。它由提供构建块的Tekton pipeline和支持组件组成,如Tekton CLI和Tekton Catalog,使Tekton成为一个完整的生态系统;Tekton也是CD基金会(一个Linux基金会项目)的一部分;以yaml文件编排应用构建及部署流程,是一个纯云原生的标准化CICD流水线构建、测试和部署流程的工具。
可定制的:Tekton实体是完全可定制的,从而具有高度的灵活性。平台工程师可以定义非常详细的构建基目录,以供开发人员在各种情况下使用。
可重复使用的:Tekton实体是完全可移植的,因此一旦定义,组织内的任何人都可以使用给定的管道并重用其构造块。这使开发人员可以快速构建复杂的管道,而无需“重新发明轮子”。
可扩展的:Tekton Catalog是Tekton社区驱动的存储库。您可以使用Tekton目录中的预制组件快速创建新的并展开现有管道。
标准化:Tekton在您的Kubernetes集群上作为扩展安装并运行,并使用完善的Kubernetes资源模型。 Tekton工作负载在Kubernetes容器中执行。
缩放性:为了增加工作负载容量,您可以简单地将节点添加到群集。 Tekton与您的群集进行缩放,无需重新定义您的资源分配或对管道的任何其他修改。
Tekton Pipelines:tekton 的基础,定义了一组 CRD,用于定义 pipeline
Tekton Triggers:允许基于 event 实例化 pipeline。比如:git的pr请求
Tekton Cli:提供命令行工具和 tekton 交互
Tekton Dashboard:图形化界面展示 pipeline 信息
Tekton Catalog:高质量的、社区贡献的 pipeline 仓库
Tekton Hub:图形化界面访问 tekton catalog
Tekton Operator:在k8s上安装、移除、更新tekton组件的项目
Tekton引入了任务的概念,它指定了你想要运行的工作负载;Tekton 最重要的五个概念:Task、TaskRun、Pipeline、PipelineRun、PipelineResources:
每个任务在它自己的Kubernetes Pod中执行。因此,默认情况下,Pipeline中的任务不共享数据。要在任务之间共享数据,必须显式地配置每个任务,使其输出可用于下一个任务,并将先前执行的任务的输出作为其输入。
安装kubectl
安装K8S集群
minikube部署用于开发测试的K8S集群。
wget "https://storage.googleapis.com/kubernetes-release/release/v1.18.8/bin/linux/amd64/kubectl"
chmod 777 kubectl
mv kubectl /usr/local/bin
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
install minikube-linux-amd64 /usr/local/bin/minikube
minikube start
adduser K8S //创建K8S用户
passwd K8S //设置密码asdfwsxedc
groupadd mydocker
gpasswd -a K8S mydocker //$USER为上面创建的K8S用户
newgrp mydocker
docker version
minikube start
minikube delete
#也可以使用--registry-mirror=https://registry.docker-cn.com, running minikube within a VM, consider using --driver=none,--image-mirror-country='cn'
minikube start --force --driver=docker
Kubekey部署单节点K8S集群,详细可以参考前面的文章《云原生下基于K8S声明式GitOps持续部署工具ArgoCD实战-上》
官方部署方式
kubectl apply --filename <br /> https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
修改镜像地址方式
kubectl get pods --namespace tekton-pipelines --watch
kubectl get pods --namespace describe pod
kubectl --namespace tekton-pipelines describe pods
mkdir tekton
#修改yaml 里面的镜像库
vi release.yaml
wget https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml
%s/gcr.io/gcr.azk8s.cn/g
#重新创建资源
kubectl apply -f release.yaml
阿里云资源方式
kubectl apply -f http://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/release.yaml
kubectl get pods -n tekton-pipelines
安装完后后,可以看到在Kubernetes集群中新增了哪些Tekton的crd
创建并运行一个基本任务,Task在API中表示为Task类对象,它定义了一系列按顺序运行的步骤,以执行Task所需的逻辑。每个Task都作为一个pod在Kubernetes集群上运行,每个步骤都在自己的容器中运行。创建vi hello-world.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello
spec:
steps:
- name: echo
image: alpine
script: |
#!/bin/sh
echo "Hello World,itxs"
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello
spec:
steps:
- name: echo
image: ubuntu # contains bash
script: |
#!/usr/bin/env bash
echo "Hello World,itxs"
应用到集群的更改
kubectl apply --filename hello-world.yaml
要运行此Task,必须使用TaskRun实例化它。创建另一个名为hello-task-run的文件Yaml,内容如下:
apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
name: hello-task-run
spec:
taskRef:
name: hello
将更改应用到集群以启动任务
kubectl apply --filename hello-task-run.yaml
# 验证运行是否正常
kubectl get taskrun hello-task-run
# 查看容器运行日志
kubectl logs --selector=tekton.dev/taskRun=hello-task-run
官方部署方式
kubectl apply --filename https://storage.googleapis.com/tekton-releases/dashboard/latest/tekton-dashboard-release.yaml
阿里云资源方式
kubectl apply -f http://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/dashboard.yaml
安装完后,可以查看其svc资源,类型为NodePort,暴露30952端口
访问http://tekton.com:30952/ ,这里我是作为host解析,所以可以域名访问
# 下载rpm或者二进制包
wget https://github.com/tektoncd/cli/releases/download/v0.26.0/tektoncd-cli-0.26.0_Linux-64bit.rpm
# rpm安装
rpm -Uvh tektoncd-cli-0.26.0_Linux-64bit.rpm
tkn task list
tkn --help
演示步骤如下
创建goodbye-world.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: goodbye
spec:
steps:
- name: goodbye
image: alpine
script: |
#!/bin/sh
echo "Goodbye World,itxs"
# 应用第二个任务
kubectl apply --filename goodbye-world.yaml
# 管道定义了一个按特定执行顺序排列的有序任务系列,作为CI/CD工作流的一部分,创建管道包含前面两个任务
vi hello-goodbye-pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: hello-goodbye
spec:
tasks:
- name: hello
taskRef:
name: hello
- name: goodbye
runAfter:
- hello
taskRef:
name: goodbye
# 应用管道
kubectl apply --filename hello-goodbye-pipeline.yaml
# 用PipelineRun对象实例化你的Pipeline。创建一个名为hello-goodbye-pipeline-run的新文件。Yaml,内容如下
vi hello-goodbye-pipeline-run.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: hello-goodbye-run
spec:
pipelineRef:
name: hello-goodbye
# 通过将PipelineRun配置应用到集群来启动Pipeline:
kubectl apply --filename hello-goodbye-pipeline-run.yaml
# 使用如下命令查看PipelineRun的日志:
tkn pipelinerun logs hello-goodbye-run -f -n default
后续再补充基于Tekton的CI结合ArgoCD的CD实现完美新一代云原生组合
**本人博客网站 **IT小神 www.itxiaoshen.com
手机扫一扫
移动阅读更方便
你可能感兴趣的文章