最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

我在B站學(xué)云原生 | 下一代CI/CD工具,Tekton入門部署指南

2023-08-02 16:00 作者:全棧工程師修煉指南  | 我要投稿

歡迎關(guān)注「全棧工程師修煉指南點(diǎn)我,點(diǎn)我?UP主

全棧工程師修煉指南 UP 主,個(gè)人介紹

作者?<安全開發(fā)運(yùn)維>?答疑交流群,回復(fù)學(xué)習(xí)交流群即可加入

本章目錄:

首發(fā)地址:https://mp.weixin.qq.com/s/cMzgur6KE6XdswvUWhyJUA

0x00 快速入門

1.Tekton 是什么?

歷史背景
Tekton 的前身是?Knative?的子項(xiàng)目?build-pipeline,主要用來給?Kantive?的 build 模塊增加 pipeline 功能之后獨(dú)立出來,Tekton的最終目標(biāo)是一個(gè)通用的?CI/CD?工具。

目前,私有云市場(chǎng)占有率比較高的 CICD 工具對(duì)?Kubernetes?都有所支持,比如?Jenkins、GitLab CI。但是這些工具只是將 Kubernetes 作為其擴(kuò)展的一個(gè)方面,Kubernetes 作為新的基礎(chǔ)設(shè)施,需要原生的 CICD 方案。另一方面,Jenkins 的子項(xiàng)目?JenkinsX?也開始默認(rèn)使用 Tekton 作為 CI 引擎。使用云原生?CRD?(是Kubernetes內(nèi)置的資源類型,即自定義資源的定義) +?Controller?實(shí)現(xiàn)的 Tekton ,無疑有機(jī)會(huì)成為云原生的主流編排引擎。


簡(jiǎn)單介紹
描述:?Tekton 是一個(gè)開源的云原生持續(xù)集成和持續(xù)交付/部署【Cloud Native CI/CD】解決方案, 使用Golang語言進(jìn)行開發(fā),允許開發(fā)人員通過K8S云平臺(tái)快速靈活定義流水線,從而更加便捷構(gòu)建、測(cè)試和部署系統(tǒng),目前是由CD基金會(huì)[https://cd.foundation/]管理的項(xiàng)目,其遵循OpenSSF最佳實(shí)踐。

溫馨提示: 此章節(jié)作為GitOps中的Tekton初識(shí)章節(jié),作者后續(xù)會(huì)持續(xù)更新Tekton+ArgoCD 結(jié)合實(shí)踐教程,Tekton 更專注構(gòu)建 CI/CD 流水線,ArgoCD 更專注應(yīng)用管理和部署,希望大家多多關(guān)注【全棧工程師修煉指南】,作者將推出更多原創(chuàng)文章

Tekton 官網(wǎng)地址:?https://tekton.dev/


2.Tekton 有何用?

描述: 前面介紹到 Tekton 主要用于在云原生架構(gòu)環(huán)境中完成CI、CD部分,主要是devops工程師以及開發(fā)人員使用,其側(cè)重點(diǎn)應(yīng)該是在云原生微服務(wù)應(yīng)用以及傳統(tǒng)應(yīng)用的CI持續(xù)集成上,

除此之外使用 tekton 的好處如下

  • 可移植性: 跨平臺(tái)、語言、和部署環(huán)境。它適用于 Jenkins、Jenkins X、Skaffold、 Knative 和許多其他流行的 CI/CD 工具。

  • 可定制:Tekton 實(shí)體是完全可定制的,從而具有高度的靈活性。平臺(tái)工程師可以定義非常詳細(xì)的構(gòu)建基目錄,以供開發(fā)人員在各種情況下使用

  • 可重復(fù)使用:Tekton 實(shí)體是完全可移植的,因此一旦定義,組織內(nèi)的任何人都可以使用給定的管道并重用其構(gòu)造塊。這使開發(fā)人員可以快速構(gòu)建復(fù)雜的管道,而無需“重新發(fā)明輪子”。

  • 可擴(kuò)展:Tekton Catalog是Tekton社區(qū)驅(qū)動(dòng)的存儲(chǔ)庫。您可以使用Tekton目錄中的預(yù)制組件快速創(chuàng)建新的并展開現(xiàn)有管道。

  • 標(biāo)準(zhǔn)化:Tekton 在您的Kubernetes集群上作為擴(kuò)展安裝并運(yùn)行,并使用成熟的 Kubernetes 資源模型, 其工作負(fù)載在 Kubernetes 容器內(nèi)執(zhí)行。

  • 縮放性:為了增加工作負(fù)載容量,您可以簡(jiǎn)單地將節(jié)點(diǎn)添加到群集, Tekton 隨集群一起擴(kuò)展 無需重新定義資源分配或?qū)艿肋M(jìn)行任何其他修改。


3.Tekton 組件介紹

  • ?Tekton Pipelines:Tekton 的基礎(chǔ)部分,它定義了一組Kubernetes自定義資源,這些資源充當(dāng)構(gòu)建塊,您可以從中組裝CI/CD管道。

  • ?Tekton Triggers:允許基于 event 實(shí)例化 pipeline。例如,每次PR與GitHub存儲(chǔ)庫合并時(shí),您都可以觸發(fā)管道的實(shí)例化和執(zhí)行。

  • ?Tekton Cli:是Tekton Pipelines的一個(gè)基于Web的圖形界面,用于顯示有關(guān)管道執(zhí)行的信息。目前正在進(jìn)行中。

  • ?Tekton Dashboard:是Tekton Pipelines的一個(gè)基于Web的圖形界面,用于顯示有關(guān)管道執(zhí)行的信息。

  • ?Tekton Catalog:是一個(gè)由社區(qū)貢獻(xiàn)的高質(zhì)量Tekton構(gòu)建塊(任務(wù)、管道等)的存儲(chǔ)庫,可在您自己的管道中使用。

  • ?Tekton Hub:基于Web的圖形界面,用于訪問Tekton Catalog。

  • ?Tekton Operator:是一個(gè)Kubernetes Operator模式,允許您在Kubernete集群上安裝、更新和刪除Tekton項(xiàng)目。

  • ?Tekton Chain : 為使用Tekton Pipelines建造的文物提供生成、存儲(chǔ)和標(biāo)記出處的工具。


4.Tekton 概念術(shù)語

Tekton Pipelines 中最重要的五個(gè)概念:Task、TaskRunPipeline、PipelineRun、PipelineResources(已在v0.44版本被丟棄,此處簡(jiǎn)單了解)。

  • Task:Tekton 中的最小單元,代表一個(gè)任務(wù)模板,包括多個(gè)步驟。定義一個(gè)有序的Step以及每個(gè) Step 調(diào)用特定的 在一組特定的輸入上構(gòu)建工具,并生成一組特定的輸出,這些輸出可用作下一個(gè)輸入 Step。

  • TaskRun:實(shí)例化一個(gè)特定的 Task 在一組特定的輸入并生成一組特定的輸出,并且一個(gè) TaskRun 會(huì)創(chuàng)建一個(gè)對(duì)應(yīng)的 Pod,每個(gè) step 對(duì)應(yīng) pod 中的一個(gè) container。

  • Pipeline:Tekton 中一系列有序 Task 組成的有向無環(huán)圖,定義了流水線的模板。

  • PipelineRun:Pipeline 執(zhí)行時(shí)需要定義一個(gè) PipelineRun,作為流水線的實(shí)例,生成一條流水線記錄。

  • PipelineResource(已被丟棄):流水線執(zhí)行過程中需要的資源信息。


Steps, Tasks, and Pipelines 運(yùn)行示例圖

  • 在?Step?中 定義CI/CD工作流中可以完成某一階段的操作,例如代碼拉取,編譯構(gòu)建Java程序,鏡像構(gòu)建,以及應(yīng)用部署,Tekton 通常會(huì)為每一個(gè)階段生成一個(gè)Container。

  • 在?Task?中 是按照順序排列 Step 的集合,定義裝載一個(gè)Kubernetes卷共享環(huán)境,Tekton以Kubernetes pod的形式運(yùn)行任務(wù),其中每個(gè)步驟都成為pod中的運(yùn)行容器。

  • 在?Pipelines?中是按照順序排列 Task 的集合,Tekton 整理所有的Task,將它們連接到有向無環(huán)圖(DAG)中,并按順序依次執(zhí)行。換句話說,它創(chuàng)建了許多Kubernetes pod,并確保每個(gè)pod都能按要求成功運(yùn)行。

溫馨提示: 任務(wù)(Tasks)和管道(Pipelines)被指定為Kubernetes集群中的自定義資源(CRD)。
知識(shí)擴(kuò)展: Task、Pipeline 分別用于什么時(shí)候?

Task?- 適用于更簡(jiǎn)單的工作負(fù)載,例如運(yùn)行測(cè)試、lint 或構(gòu)建 Kaniko 緩存, Task 在單個(gè)中執(zhí)行 Kubernetes Pod,使用單個(gè)磁盤,通常保持簡(jiǎn)單。
Pipeline?- 適用于復(fù)雜的工作負(fù)載,例如靜態(tài)分析,以及測(cè)試、構(gòu)建和部署復(fù)雜的項(xiàng)目

TaskRuns and PipelineRuns 運(yùn)行示例圖

  • pipelineRuns?是 Pipeline 的執(zhí)行入口,可以觸發(fā)執(zhí)行 Pipeline 即?CI/CD工作流,每次執(zhí)行都將成為Kubernetes集群中可跟蹤的pipelineRun資源。

  • TaskRuns?是 Task 的特定執(zhí)行, 當(dāng)您選擇在Pipeline 之外運(yùn)行Task時(shí)非常有用,您可以通過它查看任務(wù)中每個(gè)步驟執(zhí)行的細(xì)節(jié)。

知識(shí)總結(jié):?TaskRuns?和?PipelineRuns?運(yùn)行將資源與?Task?和?Pipeline?連接起來,運(yùn)行必須包括資源的實(shí)際地址,例如存儲(chǔ)庫的URL、任務(wù)或管道需求,從而允許開發(fā)人員針對(duì)不同的輸入和輸出重用?Task?或者?Pipeline.

溫馨提示: 您可以手動(dòng)創(chuàng)建?taskRunpipelineRuns以及通過 Tekton Triggers 自動(dòng)觸發(fā)Tekton立即運(yùn)行Task或pipeline。

5.Tekton 如何使用?

描述: 本小節(jié)將講解 Tekton 如何學(xué)習(xí)及其使用,我們可以參考官方的Task、Pipeline以及Tekton Triggers示例進(jìn)行入門學(xué)習(xí),快速開始:https://tekton.dev/docs/getting-started/

其次是參考Tekton Github項(xiàng)目中的Task、Taskrun、Pipeline、Pipeline以及掛載卷、Step 結(jié)果存儲(chǔ)等高級(jí)示例示例,地址為:?https://github.com/tektoncd/pipeline/tree/main/examples

最后是參考Tekton Hub中的常用的Task腳本,幫助各位看友可以快速上手使用,等待熟悉之后后期可以自行編寫Task,再使用Pipeline進(jìn)行自定義流水線組合,地址為:https://hub.tekton.dev

至此,我們可以從上述的網(wǎng)站中可以快速學(xué)習(xí)上手使用,并應(yīng)用在你企業(yè)內(nèi)部GitOps環(huán)境中。

0x01 安裝部署

部署環(huán)境

測(cè)試環(huán)境及版本說明:


部署實(shí)踐

Tekton 組件部署

pipeline

描述: Tekton Pipelines 項(xiàng)目提供了 k8s 風(fēng)格的資源用于聲明 CI/CD 樣式的管道。Tekton Pipelines 可以部署到任何的K8S集群,管道中的任務(wù)可以獨(dú)立運(yùn)行,并且Git存儲(chǔ)資源可以在之間相互輕松交互。

項(xiàng)目地址:?https://github.com/tektoncd/pipeline/releases

溫馨提示: 針對(duì)于不同的Kubernetes版本需要采用不同的Tekton Pipelines版本,你應(yīng)該查看官方文檔 Required Kubernetes Version 章節(jié), 例如作者此時(shí)k8s環(huán)境為 v1.23.x版本應(yīng)該選用?v0.41.x <= 可選范圍 <v0.45.x之間的版本 。

溫馨提示: Pipelines v0.44.4 | Triggers v0.22.2 | Dashboard v0.35.1 版本的相關(guān)鏡像都可以在作者dockerHub中下載,地址?https://hub.docker.com/r/weiyigeek/

安裝步驟
Step 1.下載 tektoncd pipeline 資源部署清單。


Step 2.使用作者此篇【?如何使用Github Action優(yōu)雅的同步國外鏡像到DockerHub或私有倉庫?】文章的方式[?https://mp.weixin.qq.com/s/0STtKrlgYqpoqwMgb0QnoA],利用Github Action來拉取指定鏡像到我們的DockerHub中或私有鏡像倉庫中,執(zhí)行如下Shell腳本構(gòu)建skopeo同步命令以及替換資源清單中相關(guān)鏡像。


執(zhí)行結(jié)果:



Github項(xiàng)目地址(歡迎大家Fork,然后自行更改項(xiàng)目中的secrets即可):?https://github.com/WeiyiGeek/action-sync-images/?,將上述執(zhí)行結(jié)果復(fù)制到入下圖所示的工作流中。

Step 3.部署 Tekton-Pipelines

執(zhí)行結(jié)果:



triggers

描述: Tekton Triggers是一個(gè)Kubernetes自定義資源定義(CRD)控制器,它允許您根據(jù)從事件有效負(fù)載中提取的信息創(chuàng)建Kubernete資源。

項(xiàng)目地址:?https://github.com/tektoncd/triggers
安裝文檔:?https://tekton.dev/docs/installation/triggers/

溫馨提示: 同樣的,針對(duì)于不同的Kubernetes版本需要采用不同的Tekton triggers版本,你應(yīng)該查看官方文檔?Required Kubernetes Version?章節(jié), 例如作者此時(shí)k8s環(huán)境為 v1.23.x版本應(yīng)該選用v0.22.x的版本 。


安裝步驟
Step 1.從官網(wǎng)下載 tekton-triggers 所需的資源清單。


Step 2.同安裝pipelines步驟2一樣,作者使用此篇【?如何使用Github Action優(yōu)雅的同步國外鏡像到DockerHub或私有倉庫】文章的方式[https://mp.weixin.qq.com/s/0STtKrlgYqpoqwMgb0QnoA],利用Github Action來拉取指定鏡像到我們的DockerHub中或私有鏡像倉庫中,執(zhí)行如下Shell腳本構(gòu)建skopeo同步命令以及替換資源清單中相關(guān)鏡像。

執(zhí)行結(jié)果:

Github項(xiàng)目地址(歡迎大家Fork,然后自行更改項(xiàng)目中的secrets即可):?https://github.com/WeiyiGeek/action-sync-images/?,將上述執(zhí)行結(jié)果復(fù)制到pipelines步驟2圖中所示的工作流中。


Step 3.部署 Tekton Triggers


dashboard

描述:Tekton Dashboard是一個(gè)通用的、基于web的用戶界面,用于Tekton Pipelines和Tekton Triggers資源, 它允許用戶管理和查看Tekton資源的創(chuàng)建、執(zhí)行和結(jié)果查看,其支持的一些功能:

  • PipelineRun和TaskRun狀態(tài)和日志的實(shí)時(shí)視圖

  • 按標(biāo)簽篩選資源

  • 查看資源概述和YAML

  • 顯示整個(gè)集群的資源或限制特定命名空間的可見性

  • 直接從git存儲(chǔ)庫導(dǎo)入資源

  • 通過擴(kuò)展添加功能

項(xiàng)目地址:?https://github.com/tektoncd/dashboard/
安裝文檔:?https://tekton.dev/docs/dashboard/

溫馨提示: 同樣的,針對(duì)于不同的Kubernetes版本需要采用不同的Tekton dashboard版本并且對(duì)應(yīng)著Pipelines Releases / Triggers Releases版本,你應(yīng)該查看官方文檔?Required Kubernetes Version?章節(jié), 例如作者此時(shí)k8s環(huán)境為 v1.23.x版本應(yīng)該選用v0.22.x的版本 。


安裝步驟
Step 1.從官網(wǎng)下載 Tekton Dashboard 所需的資源清單, 注意此處分為?release?與?release-full?兩個(gè)版本前置只支持read,而后者支持修改流水線等操作,此處作者使用full版本。


Step 2.同安裝pipelines步驟2一樣,作者使用此篇【如何使用Github Action優(yōu)雅的同步國外鏡像到DockerHub或私有倉庫】文章的方式,利用Github Action來拉取指定鏡像到我們的DockerHub中或私有鏡像倉庫中,執(zhí)行如下Shell腳本構(gòu)建skopeo同步命令以及替換資源清單中相關(guān)鏡像。


執(zhí)行結(jié)果:?skopeo copy --all docker://gcr.io/tekton-releases/github.com/tektoncd/dashboard/cmd/dashboard:v0.35.1 docker://weiyigeek/tektoncd-dashboard-dashboard:v0.35.1


Step 3.部署Tekton Dashboard


Step 4.為Tekton Dashboard站點(diǎn)配置域名test.weiyigeek.top,此處我在騰訊云中申請(qǐng)了免費(fèi)SSL證書,為此站點(diǎn)配置SSL, 提交申請(qǐng)之后大約5~10分鐘的樣子即可,簽發(fā)下來此時(shí)在證書后點(diǎn)擊下載根證書下載(crt文件)以及 Nginx(適用大部分場(chǎng)景)(pem文件、crt文件、key文件),并上傳至服務(wù)器使用unzip解壓。

申請(qǐng)地址:?https://cloud.tencent.com/act/cps/redirect?redirect=10019&cps_key=b33075ae5a2baf3b47e7456ee5821502


Step 5.此處作者已經(jīng)在集群中安裝了ingress-nginx,若還沒有安裝部署的可以參考作者此篇文章【?Ingress-Nginx 服務(wù)暴露基礎(chǔ)學(xué)習(xí)與實(shí)踐?】[https://blog.weiyigeek.top/2020/5-27-529.html]或者ngress-nginx官網(wǎng),執(zhí)行下述命令創(chuàng)建ingress規(guī)則,以便我們通過https://test.weiyigeek.top/tekton/地址訪問 Tekton-Dashboard 服務(wù)。


Step 6.客戶端設(shè)置硬解析或者使用內(nèi)部DNS服務(wù)器將test.weiyigeek.top解析到Kubernetes任意一個(gè)節(jié)點(diǎn),通常會(huì)指定一個(gè)出口節(jié)點(diǎn),例如此處10.20.176.215 test.weiyigeek.top。

然后使用瀏覽器訪問 tekton-dashboard 地址(https://test.weiyigeek.top/tekton/) , 配置無誤將顯示如下圖所示:

至此,Tekton 在K8S常規(guī)組件的安裝完畢。


Tekton CLI

描述: Tekton Pipelines CLI項(xiàng)目提供了一個(gè)命令行界面(CLI),用于與Tekton交互,Tekton是一個(gè)用于持續(xù)集成和交付(CI/CD)系統(tǒng)的開源框架。

項(xiàng)目地址:?https://github.com/tektoncd/cli/releases
使用文檔:?https://tekton.dev/docs/cli/

安裝流程

Step 1.指定當(dāng)前最新的Cli版本,使用二進(jìn)制方式進(jìn)行安裝部署.


Step 2.將tkn添加為kubectl插件.

原文地址:https://blog.weiyigeek.top/2023/7-22-768.html

親,文章都看完了,不關(guān)注【全棧工程師修煉指南】嗎?

如果此篇文章對(duì)你有幫助,請(qǐng)你將它分享給更多的人!

學(xué)習(xí)書籍推薦?往期發(fā)布文章?

作者答疑學(xué)習(xí)交流群:歡迎各位志同道合的朋友一起學(xué)習(xí)交流關(guān)注UP主后回復(fù)【學(xué)習(xí)交流群】。

??歡迎加入交流學(xué)習(xí)群:https://weiyigeek.top/visit.html

WeiyiGeek Blog's - 花開堪折直須折,莫待無花空折枝?】
作者主頁:【?https://weiyigeek.top?】
博客地址:【?https://blog.weiyigeek.top?】
作者交流(wechat):weiyigeeker
公眾號(hào)(wechat):全棧工程師修煉指南

溫馨提示: 由于作者水平有限,本章錯(cuò)漏缺點(diǎn)在所難免,希望讀者批評(píng)指正,并請(qǐng)?jiān)谖恼履┪擦粝履鷮氋F的經(jīng)驗(yàn)知識(shí),聯(lián)系郵箱地址?master@weiyigeek.top?或者?UP主 、UP主?聯(lián)系我。

希望各位B站多支持【關(guān)注、點(diǎn)贊、評(píng)論、收藏、投幣】,助力每一個(gè)夢(mèng)想。

我在B站學(xué)云原生 | 下一代CI/CD工具,Tekton入門部署指南的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
汉川市| 和顺县| 潜江市| 宜兰市| 浮梁县| 邳州市| 平邑县| 安化县| 儋州市| 徐汇区| 乾安县| 富川| 焦作市| 都匀市| 江油市| 莲花县| 东平县| 长兴县| 台湾省| 阿勒泰市| 武安市| 凤庆县| 合山市| 宁阳县| 庄浪县| 晋江市| 武城县| 青田县| 扶沟县| 潢川县| 沙湾县| 合阳县| 广南县| 岳西县| 桐庐县| 永平县| 六盘水市| 庄浪县| 昔阳县| 临沧市| 义马市|