????优质资源分享????
???? Python实战微信订餐小程序 ???? | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
????Python量化交易实战???? | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
安装前提条件安装TektonPipelines创建并运行任务安装Dashboard安装CliPipelines示例演示
Tekton是构建CI/CD系统的本地云解决方案。它由提供构建块的Tektonpipeline和支持组件组成,如TektonCLI和TektonCatalog,使Tekton成为一个完整的生态系统;Tekton也是CD基金会的一部分;以yaml文件编排应用构建及部署流程,是一个纯云原生的标准化CICD流水线构建、测试和部署流程的工具。
常见CICD工具
使用好处
TektonPipelines:tekton的基础,定义了一组CRD,用于定义pipelineTektonTriggers:允许基于event实例化pipeline。比如:git的pr请求TektonCli:提供命令行工具和tekton交互TektonDashboard:形化界面展示pipeline信息TektonCatalog:高质量的、社区贡献的pipeline仓库TektonHub:形化界面访问tektoncatalogTektonOperator:在k8s上安装、移除、更新tekton组件的项目
基本概念
Tekton引入了任务的概念,它指定了你想要运行的工作负载;Tekton最重要的五个概念:Task、TaskRun、Pipeline、PipelineRun、PipelineResources:
Task:Tekton中的最小单元,代表一个任务模板,包括多个步骤。每一个操作定义为Task中的一个stepPipeline:多个Task组成的有向无环,定义了流水线的模板PipelineRun:Pipeline真正执行时需要定义一个PipelineRun,作为流水线的实例,生成一条流水线记录TaskRun:Task真正执行的实例,记录任务状态。一个TaskRun会创建一个对应的Pod,每个step对应pod中的一个containerPipelineResource:流水线执行过程中需要的资源信息
每个任务在它自己的KubernetesPod中执行。默认情况下,Pipeline中的任务不共享数据。要在任务之间共享数据,必须显式地配置每个任务,使其输出可用于下一个任务,并将先前执行的任务的输出作为其输入。
前提条件
安装kubectl安装K8S集群minikube部署用于开发测试的K8S集群。
官方部署方式
修改镜像地址方式
阿里云资源方式
安装完后后,可以看到在Kubernetes集群中新增了哪些Tekton的crd
创建并运行任务
创建并运行一个基本任务,Task在API中表示为Task类对象,它定义了一系列按顺序运行的步骤,以执行Task所需的逻辑。每个Task都作为一个pod在Kubernetes集群上运行,每个步骤都在自己的容器中运行。创建vihello-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
官方部署方式
阿里云资源方式
安装完后,可以查看其svc资源,类型为NodePort,暴露30952端口
安装Cli
Pipelines示例演示
演示步骤如下
创建两个任务。其中一个任务用3节的任务创建一个包含任务的管道。使用PipelineRun实例化并运行包含任务的管道。
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实现完美新一代云原生组合
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点