自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用 Tekton 在 Kubernetes 中編寫你的第一條 CI/CD 流水線

開源
Tekton 是一個(gè)用于創(chuàng)建持續(xù)集成和持續(xù)交付(CI/CD)系統(tǒng)的 Kubernetes 原生開源框架。

Tekton 是一個(gè)用于創(chuàng)建持續(xù)集成和持續(xù)交付(CI/CD)系統(tǒng)的 Kubernetes 原生開源框架。通過對(duì)底層實(shí)施細(xì)節(jié)的抽象,它還可以幫助你在多個(gè)云供應(yīng)商或企業(yè)內(nèi)部系統(tǒng)中進(jìn)行端到端(構(gòu)建、測(cè)試、部署)應(yīng)用開發(fā)。

Tekton 介紹

??Tekton?? 最初被稱為 ??Knative Build??,后來被重組為獨(dú)立的開源項(xiàng)目,有自己的 ??治理組織??,現(xiàn)在是屬于 ??Linux 基金會(huì)?? 的項(xiàng)目。Tekton 提供了一個(gè)集群內(nèi)的容器鏡像構(gòu)建和部署工作流程,換句話說,它是一個(gè) 持續(xù)集成continuous integration(CI)和 持續(xù)交付continuous delivery(CD)服務(wù)。它由 Tekton 流水線和幾個(gè)支持組件如 Tekton CLI、Triggers 和 Catalog 等組成。

Tekton 是一個(gè) Kubernetes 原生應(yīng)用。它在 Kubernetes 集群中作為擴(kuò)展被安裝和運(yùn)行,由一套Kubernetes 定制化資源組成,定義了你為流水線創(chuàng)建和復(fù)用的構(gòu)建塊。由于 Tekton 是一種 Kubernetes 原生技術(shù),所以它非常容易擴(kuò)展。當(dāng)你需要增加你的工作負(fù)載時(shí),你只需向你的集群添加節(jié)點(diǎn)就可以了。由于其可擴(kuò)展的設(shè)計(jì)和社區(qū)貢獻(xiàn)的組件庫,它也很容易定制。

對(duì)于需要 CI/CD 系統(tǒng)來開展工作的開發(fā)人員,和為其組織內(nèi)的開發(fā)人員建立 CI/CD 系統(tǒng)的平臺(tái)工程師,Tekton 是理想選擇。

Tekton 組件

構(gòu)建 CI/CD 流水線的過程非常復(fù)雜,因此 Tekton 為每一步都提供工具。以下是 Tekton 提供的主要組件:

  • 流水線Pipeline: 定義了一組 Kubernetes ??自定義資源??,作為你用來組裝 CI/CD 流水線的構(gòu)建塊。
  • 觸發(fā)器Triggers:一種 Kubernetes 自定義資源,允許你根據(jù)從事件有效載荷中提取的信息來創(chuàng)建流水線。例如,你可以在每次創(chuàng)建 Git 倉庫的合并請(qǐng)求時(shí),觸發(fā)流水線的實(shí)例化和執(zhí)行。
  • 命令行CLI:提供一個(gè)名為 ??tkn?? 的命令行界面,你可以使用它從終端與 Tekton 進(jìn)行交互。
  • 儀表盤Dashboard:是 Tekton 流水線的一個(gè)基于網(wǎng)頁的圖形界面,顯示流水線的執(zhí)行信息。
  • 目錄Catalog:是一個(gè)高質(zhì)量的、由社區(qū)貢獻(xiàn)的 Tekton 構(gòu)建塊(任務(wù)、流水線等),可在你自己的流水線中使用。
  • 中心Hub:是一個(gè)基于網(wǎng)頁的圖形界面,用于訪問 Tekton 目錄。
  • 操作員Operator:是一種 Kubernetes ??操作員模式??,你可以在 Kubernetes 集群中安裝、更新、升級(jí)和刪除 Tekton 項(xiàng)目。
  • 鏈Chains:是一個(gè) Kubernetes 自定義資源定義Custom Resource Definition(CRD)控制器,使你可以在 Tekton 中處理供應(yīng)鏈安全的問題。正在開發(fā)中。
  • 結(jié)果Results:旨在幫助用戶對(duì) CI/CD 工作負(fù)載歷史進(jìn)行邏輯分組,并將長(zhǎng)期結(jié)果的存儲(chǔ)從流水線控制器中分離出來。

Tekton 術(shù)語

Tekton terminology

Tekton terminology

  • 步驟Step:是 CI/CD 工作流程中最基本的實(shí)體,例如為 Python 網(wǎng)絡(luò)應(yīng)用程序運(yùn)行一些單元測(cè)試或編譯一個(gè) Java 程序。Tekton 使用容器鏡像執(zhí)行每個(gè)步驟。
  • 任務(wù)Task::kissing:* 是按特定順序排列的步驟的集合。Tekton 以 ??Kubernetes 容器莢?? 的形式運(yùn)行任務(wù),其中每個(gè)步驟都成為 容器莢pod
  • 流水線Pipelines:是按特定順序排列的任務(wù)的集合。Tekton 把所有任務(wù)連接成一個(gè) 有向無環(huán)圖directed acyclic graph(DAG),并按順序執(zhí)行圖。換句話說,它創(chuàng)建了一些 Kubernetes 容器莢,并確保每個(gè)容器莢按預(yù)期成功運(yùn)行。

Tekton pipelines

Tekton pipelines

  • 流水線運(yùn)行PipelineRun:顧名思義,是一條流水線的具體執(zhí)行。
  • 任務(wù)運(yùn)行TaskRun:是一個(gè)任務(wù)的具體執(zhí)行。你可以選擇在流水線外運(yùn)行一次任務(wù)運(yùn)行,可以通過它查看任務(wù)中每個(gè)步驟執(zhí)行的具體情況。

創(chuàng)建你的 CI/CD 流水線

開始使用 Tekton 的最簡(jiǎn)單方法是自己編寫一個(gè)簡(jiǎn)單的流水線。如果你每天都在使用 Kubernetes,那你可能對(duì) YAML 很熟悉,這正是 Tekton 流水線的定義方式。下面是一個(gè)克隆代碼庫的簡(jiǎn)單流水線的例子。

首先,創(chuàng)建一個(gè) ??task.yaml?? 文件,用你喜歡的文本編輯器打開它。這個(gè)文件定義了你要執(zhí)行的 步驟Step。在這個(gè)例子中,就是克隆一個(gè)倉庫,所以我把這個(gè)步驟命名為 “clone”。該文件設(shè)置了一些環(huán)境變量,然后使用一個(gè)簡(jiǎn)單的 shell 腳本來執(zhí)行克隆。

接下來是 任務(wù)Task。你可以把步驟看作是一個(gè)被任務(wù)調(diào)用的函數(shù),而任務(wù)則設(shè)置步驟所需的參數(shù)和工作空間。

apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: git-clone
spec:
workspaces:
- name: output
description: The git repo will be cloned onto the volume backing this Workspace.
params:
- name: url
description: Repository URL to clone from.
type: string
- name: revision
description: Revision to checkout. (branch, tag, sha, ref, etc...)
type: string
default: ""
steps:
- name: clone
image: "gcr.io/tekton-releases/github.com/tektoncd/pipeline/cmd/git-init:v0.21.0"
env:
- name: PARAM_URL
value: $(params.url)
- name: PARAM_REVISION
value: $(params.revision)
- name: WORKSPACE_OUTPUT_PATH
value: $(workspaces.output.path)
script: |
#!/usr/bin/env sh
set -eu

CHECKOUT_DIR="${WORKSPACE_OUTPUT_PATH}"

/ko-app/git-init \
-url="${PARAM_URL}" \
-revision="${PARAM_REVISION}" \
-path="${CHECKOUT_DIR}"
cd "${CHECKOUT_DIR}"
EXIT_CODE="$?"
if [ "${EXIT_CODE}" != 0 ] ; then
exit "${EXIT_CODE}"
fi
# Verify clone is success by reading readme file.
cat ${CHECKOUT_DIR}/README.md

創(chuàng)建第二個(gè)文件 ??pipeline.yaml??,并用你喜歡的文本編輯器打開它。這個(gè)文件通過設(shè)置諸如可以運(yùn)行和處理任務(wù)的工作區(qū)等重要參數(shù)來定義流水線。

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: cat-branch-readme
spec:
params:
- name: repo-url
type: string
description: The git repository URL to clone from.
- name: branch-name
type: string
description: The git branch to clone.
workspaces:
- name: shared-data
description: |
This workspace will receive the cloned git repo and be passed
to the next Task for the repo's README.md file to be read.
tasks:
- name: fetch-repo
taskRef:
name: git-clone
workspaces:
- name: output
workspace: shared-data
params:
- name: url
value: $(params.repo-url)
- name: revision
value: $(params.branch-name)

最后,創(chuàng)建一個(gè) ??pipelinerun.yaml?? 文件,用喜歡的文本編輯器打開它。這個(gè)文件真正的運(yùn)行流水線。它調(diào)用流水線中定義的參數(shù)(繼而調(diào)用任務(wù)文件中定義的任務(wù))。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: git-clone-checking-out-a-branch
spec:
pipelineRef:
name: cat-branch-readme
workspaces:
- name: shared-data
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
params:
- name: repo-url
value: <https://github.com/tektoncd/pipeline.git>
- name: branch-name
value: release-v0.12.x

把不同工作分在不同的文件中的好處是,??git-clone?? 任務(wù)可以在多條流水線中復(fù)用。

例如,假設(shè)你想為一個(gè)流水線項(xiàng)目做端到端的測(cè)試。你可以使用 ??git-clone?? 任務(wù) 來讓每一次測(cè)試都基于最新的代碼

總結(jié)

只要你熟悉 Kubernetes,那 Tekton 對(duì)你來說就像其他 Kubernetes 原生應(yīng)用一樣簡(jiǎn)單。它有很多工具可以幫助你創(chuàng)建流水線并與之交互。如果你喜歡自動(dòng)化,不妨試試 Tekton!

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2019-11-07 09:00:39

Jenkins流水線開源

2021-06-26 14:22:34

Tekton流水線Kubernetes

2021-06-18 05:48:02

Tekton DevopsKubernetes

2023-08-18 10:24:52

GitLabCI 流水線

2022-03-10 13:57:23

TektonJenkinsPipeline

2021-06-28 06:32:46

Tekton Kubernetes Clone

2023-11-08 00:25:14

CI云原生DevOps

2021-04-13 06:15:37

開源部署流水線Jenkins

2023-09-27 08:24:49

2022-08-09 08:42:15

引擎方案

2021-05-13 18:23:53

Tekton云原生Kubernetes

2017-03-02 14:12:13

流水線代碼Clojure

2013-06-06 09:31:52

2017-02-28 15:40:30

Docker流水線Azure

2021-07-09 06:40:59

TektonArgo CD GitOps

2021-06-09 05:44:45

云原生 CICD

2021-01-05 08:39:51

容器前端流水線

2022-01-26 08:12:42

Jenkins開源流水線

2022-07-18 06:05:28

Gitlab流水線

2017-02-28 16:00:45

DevOpsMarkdownreST
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)