日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
使用 Tektoncd Operator 管理 Tekton 組件

使用 Tektoncd Operator 管理 Tekton 組件

作者:陽明 2022-07-27 07:39:45

云計(jì)算

云原生 Tektoncd Operator 是一個(gè) Kubernetes 的擴(kuò)展,用于在 Kubernetes 集群上安裝、升級和管理 TektonCD Pipelines、Dashboard、Triggers 等。我們只需要編寫各個(gè)組件的 yaml 就可以直接來管理 Tekton 的各種組件。

Tektoncd Operator 是一個(gè) Kubernetes 的擴(kuò)展,用于在 Kubernetes 集群上安裝、升級和管理 TektonCD Pipelines、Dashboard、Triggers 等。我們只需要編寫各個(gè)組件的 yaml 就可以直接來管理 Tekton 的各種組件。

CRD

描述

TektonConfig

配置要安裝和管理的 Tekton 組件。

TektonPipeline

配置安裝管理 Tekton Pipeline 組件。

TektonTrigger

配置安裝管理 Tekton Trigger 組件。

TektonDashboard

配置安裝管理 Tekton Dashboard 組件。

TektonResult

配置安裝管理 Tekton Result 組件。

TektonAddon

配置安裝管理插件,目前僅支持 Openshift。

安裝

安裝 Tektoncd Operator 有多種方式。

從 Operator Hub 安裝

可以直接前往 Operator Hub 頁面 https://operatorhub.io/operator/tektoncd-operator 進(jìn)行安裝,其生命周期將由 Operator Lifecycle Manager (OLM) 進(jìn)行管理。

使用資源清單文件安裝

可以直接從 Github Release 頁面 https://github.com/tektoncd/operator/releases 獲取資源清單文件,使用這種方式安裝,需要自己管理 Operator 的生命周期。

直接使用下面的命令進(jìn)行安裝即可。

$ kubectl apply -f https://storage.googleapis.com/tekton-releases/operator/latest/release.yaml

由于官方使用的鏡像是 gcr 的鏡像,所以正常情況下我們是獲取不到的,如果你的集群由于某些原因獲取不到鏡像,可以使用下面的資源清單文件:

$ kubectl apply -f https://my-oss-testing.oss-cn-beijing.aliyuncs.com/k8s/tekton/operator/release.v0.60.0.yml

默認(rèn)情況下 Tektoncd Operator 創(chuàng)建的對象會使用 gcr 的鏡像,比如 Tekton Pipelines 控制器的鏡像,可以通過環(huán)境變量 IMAGE_PIPELINES_TEKTON_PIPELINES_CONTROLLER 來指定對應(yīng)的鏡像,如下所示的環(huán)境變量是覆蓋默認(rèn)的 gcr 鏡像的配置方式:

- name: IMAGE_PIPELINES_PROXY
value: cnych/tekton-operator-proxy-webhook:v0.60.0
- name: IMAGE_JOB_PRUNER_TKN
value: cnych/tekton-operator-pruner-tkn:v0.60.0
- name: IMAGE_PIPELINES_TEKTON_PIPELINES_CONTROLLER
value: cnych/tekton-controller:v0.37.2
- name: IMAGE_PIPELINES_WEBHOOK
value: cnych/tekton-webhook:v0.37.2
- name: IMAGE_PIPELINES_ARG__ENTRYPOINT_IMAGE
value: cnych/tekton-entrypoint:v0.37.2
- name: IMAGE_PIPELINES_ARG__GIT_IMAGE
value: cnych/tekton-git-init:v0.37.2
- name: IMAGE_PIPELINES_ARG__IMAGEDIGEST_EXPORTER_IMAGE
value: cnych/tekton-imagedigestexporter:v0.37.2
- name: IMAGE_PIPELINES_ARG__KUBECONFIG_WRITER_IMAGE
value: cnych/tekton-kubeconfigwriter:v0.37.2
- name: IMAGE_PIPELINES_ARG__NOP_IMAGE
value: cnych/tekton-nop:v0.37.2
- name: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CONTROLLER
value: cnych/tekton-triggers-controller:v0.20.1
- name: IMAGE_TRIGGERS_WEBHOOK
value: cnych/tekton-triggers-webhook:v0.20.1
- name: IMAGE_TRIGGERS_TEKTON_TRIGGERS_CORE_INTERCEPTORS
value: cnych/tekton-triggers-interceptors:v0.20.1
- name: IMAGE_TRIGGERS_ARG__EL_IMAGE
value: cnych/tekton-triggers-eventlistenersink:v0.20.1

上面的方式會創(chuàng)建一個(gè)名為 tekton-operator 的命名空間,其中包含一個(gè) Operator 和一個(gè) Webhook 的 Pod:

$ kubectl get pods -n tekton-operator
NAME READY STATUS RESTARTS AGE
tekton-operator-9d747548b-67t7m 2/2 Running 0 9m42s
tekton-operator-webhook-6cc769b85d-fssq9 1/1 Running 0 9m42s

安裝 Operator 后,就可以安裝所需的 Tekton 組件,例如 Tekton Pipeline、Tekton Triggers。

每個(gè) Tekton 組件都有一個(gè)自定義資源,用于安裝和管理組件。

$ kubectl get crd |grep tekton |grep operator
tektonchains.operator.tekton.dev 2022-07-25T00:51:07Z
tektonconfigs.operator.tekton.dev 2022-07-25T00:51:07Z
tektondashboards.operator.tekton.dev 2022-07-25T00:51:07Z
tektonhubs.operator.tekton.dev 2022-07-25T00:51:07Z
tektoninstallersets.operator.tekton.dev 2022-07-25T00:51:07Z
tektonpipelines.operator.tekton.dev 2022-07-25T00:51:07Z
tektonresults.operator.tekton.dev 2022-07-25T00:51:07Z
tektontriggers.operator.tekton.dev 2022-07-25T00:51:07Z

其中 TektonConfig 是創(chuàng)建其他組件的頂級 CRD。所以我們只需創(chuàng)建具有所需配置的 TektonConfig 對象即可,它將會幫助我們安裝相應(yīng)的其他組件。

TektonConfig 將根據(jù)傳遞給它的配置文件創(chuàng)建 TektonPipeline、TektonTriggers 和其他組件 CR 對象,其中有一個(gè) profile 的字段,可以用于確定要安裝的所有組件。

Tektoncd Operator 內(nèi)置了 3 個(gè) profile:lite、all、basic。

  • all:此配置文件將安裝所有組件。
  • basic:此配置文件將僅安裝 TektonPipeline 和 TektonTrigger 組件。
  • lite:此配置文件將僅安裝 TektonPipeline 組件。

比如我們要安裝 pipelines、triggers 和 dashboard,可以使用 all 這個(gè) profile 進(jìn)行安裝,如下資源清單所示:

# tekton-operator-profile-all.yaml
apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
name: config
spec:
profile: all
targetNamespace: tekton-pipelines
pruner:
resources:
- pipelinerun
- taskrun
keep: 100
schedule: "0 8 * * *"

其中 targetNamespace 用來指定安裝 Tekton 組件的命名空間,默認(rèn)為 tekton-pipelines,pruner 為 Tekton 資源提供自動清理功能。

  • resources:指定可以自動清理的資源。
  • keep:清理時(shí)要保留的最大資源數(shù)。
  • schedule:清理資源的頻率。

直接安裝上面的資源對象即可:

$ kubectl apply -f tekton-operator-profile-all.yaml
$ kubectl get tektonconfig
NAME VERSION READY REASON
config v0.60.0 True

上面的 TektonConfig 對象我們配置的 profile 為 all,會自動為我們創(chuàng)建 tektonpipelines、tektontriggers、tektondashboard 組件對象:

$ kubectl get tektonpipelines
NAME VERSION READY REASON
pipeline v0.37.0 True
$ kubectl get tektontriggers
NAME VERSION READY REASON
trigger v0.20.1 True
$ kubectl get tektondashboard
NAME VERSION READY REASON
dashboard v0.27.0 True

上面的這幾個(gè) cr 對象創(chuàng)建后就會自動創(chuàng)建對應(yīng)的組件,如下所示:

$ kubectl get pods -n tekton-pipelines
NAME READY STATUS RESTARTS AGE
tekton-dashboard-84dc6f966b-g8flx 0/1 ImagePullBackOff 0 3m48s
tekton-operator-proxy-webhook-7587596c79-ld8vm 1/1 Running 0 30m
tekton-pipelines-controller-78bc48896b-sd9fk 1/1 Running 0 30m
tekton-pipelines-webhook-5f48c855b4-js54q 1/1 Running 0 30m
tekton-triggers-controller-668b94cb5b-ggbk7 1/1 Running 0 27m
tekton-triggers-core-interceptors-66b7ddd78c-pq7gb 1/1 Running 0 27m
tekton-triggers-webhook-c8fd7755d-rknch 1/1 Running 0 27m

由于 dashboard 組件的鏡像沒有對應(yīng)的覆蓋的環(huán)境變量,所以需要我們手動進(jìn)行修改:

$ kubectl edit deploy tekton-dashboard -n tekton-pipelines
......
image: cnych/tekton-dashboard:v0.28.0
......

Dashboard 的服務(wù)默認(rèn)通過 ClusterIP 方式進(jìn)行暴露,我們可以手動創(chuàng)建一個(gè) Ingress 對象或者修改 Service 為 NodePort 方式進(jìn)行暴露。

$ kubectl get svc -n tekton-pipelines
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
tekton-dashboard ClusterIP 10.102.221.101 9097/TCP 28m
tekton-operator-proxy-webhook ClusterIP 10.96.175.155 443/TCP 33m
tekton-pipelines-controller ClusterIP 10.99.0.85 9090/TCP,8008/TCP,8080/TCP 33m
tekton-pipelines-webhook ClusterIP 10.106.195.14 9090/TCP,8008/TCP,443/TCP,8080/TCP 33m
tekton-triggers-controller ClusterIP 10.99.84.154 9000/TCP 30m
tekton-triggers-core-interceptors ClusterIP 10.97.83.136 8443/TCP 30m
tekton-triggers-webhook ClusterIP 10.108.88.140 443/TCP 30m

測試

Tekon 的組件安裝完成后,接下來我們來運(yùn)行一個(gè)簡單的 Pipeline。

首先創(chuàng)建一個(gè)如下所示的 Task 任務(wù),下面的任務(wù)中會在 bash 容器中去執(zhí)行 echo "Hello, world!" 的命令。

# hello-task.yaml
apiVersion: tekton.dev/v1beta1
kind: Task
metadata:
name: hello
spec:
steps:
- name: hello
image: bash:latest
command:
- echo
args:
- "Hello, world!"

用同樣的方式再創(chuàng)建一個(gè) goodbye 的任務(wù),只需要將上面的 echo 內(nèi)容修改為 goodbye 即可。

然后就可以定義一個(gè) Pipeline 流水線了,如下所示:

# hello-goodbye-pipeline.yaml
apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: hello-goodbye-pipeline
spec:
tasks:
- name: hello
taskRef:
name: hello
- name: goodbye
runAfter:
- hello
taskRef:
name: goodbye

通過 taskRef 引用對應(yīng)的 Task 對象。

直接創(chuàng)建上面的資源對象即可:

$ kubectl get pipeline
NAME AGE
hello-goodbye-pipeline 24s
$ kubectl get task
NAME AGE
goodbye 101s
hello 107s

要執(zhí)行該流水線,我們還需要?jiǎng)?chuàng)建一個(gè) PipelineRun 的對象才會真正執(zhí)行。

# hello-goodbye-pipeline-run.yaml
apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
generateName: hello-goodbye-pipeline-
spec:
pipelineRef:
name: hello-goodbye-pipeline

創(chuàng)建上面的資源即可,需要注意我們這里使用的 generateName? 屬性,需要使用 kubectl create 命令進(jìn)行創(chuàng)建。正常創(chuàng)建后很快就會按照上面 Pipeline 的描述去執(zhí)行兩個(gè)任務(wù)了。

要想卸載 Tekton 我們也只需要將定義的 TektonConfig 對象刪除即可。

如果不想使用 TektonCD Operator 內(nèi)置的幾個(gè) profile,我們也可以自己手動去分別配置不同組件的 CR 實(shí)例,另外 TektonCD Operator 現(xiàn)階段提供的可配置方式并不多,特別是對于國內(nèi)用戶來說鏡像這個(gè)老大難的問題,只能通過環(huán)境變量去全局覆蓋 Operator,還有部分鏡像壓根沒有覆蓋,如果是在國內(nèi)使用并且不能使用 gcr 鏡像的話可能體驗(yàn)就不是那么順暢了。


當(dāng)前文章:使用 Tektoncd Operator 管理 Tekton 組件
網(wǎng)站網(wǎng)址:http://www.dlmjj.cn/article/cojhogj.html