數年前我在 Kubernetes 環境中使用 Tekton 這個工具來建立 CI/CD 管道。
當時的細節設定和程式碼我幾乎不記得了,但這次我會將當時的經驗和學習整理一番,讓初學者也能感受到整體氛圍。
當時已經有運行中的 Kubernetes 環境,我負責用 Tekton 創建 CI/CD 的一部分管道。
在參考官方網站(英文)和書籍的同時,也受到上司和前輩的建議,逐步推進工作。
然而,當時 Tekton 的參考資源比較少,讓我在理解其運作機制上遇到了困難。
我對 Docker 和 Kubernetes 的容器技術也不太熟悉,因此需要一邊查詢一邊進行理解。
此外,現有的系統規模龐大且複雜,對於如何導入 Tekton 並沒有清晰的概念,讓我感到相當困惑。
Tekton 是一個在 Kubernetes 上運作的 CI/CD 工具。
簡單來說,它是一個幫助自動化開發工作的工具。
例如,可以自動化執行原始碼的建置、測試和部署等手動執行的工作。
重點:使用 Tekton 可以讓「人手依序進行的工作」以固定的順序自動化執行。

在 Tekton 中,可以將 Task 和 Pipeline 寫入 YAML 配置檔,註冊到 Kubernetes,並創建 PipelineRun,以依序執行定義的步驟。
檔名範例: hello-build-task.yaml
apiVersion: tekton.dev/v1
kind: Task
metadata:
name: hello-build-task
spec:
steps:
- name: say-hello
image: ubuntu
script: |
echo "Hello Tekton!"
註冊上述 YAML 後,Task 將會在 Kubernetes 上創建。
Task 本身僅會被註冊,尚未執行。
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
name: hello-pipeline
spec:
tasks:
- name: build
taskRef:
name: hello-build-task
若要定義多個 Task,則在 tasks 中添加即可。
這個 YAML 註冊後將創建 Pipeline,並能夠依序執行 Task。
檔名範例: hello-pipeline-run.yaml
apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
name: hello-pipeline-run
spec:
pipelineRef:
name: hello-pipeline
註冊這個 YAML 後,Pipeline 將依序執行各個 Task。
在第一次創建 Tekton 的 Pipeline 時,由於對 Task 和 Pipeline 的關係並不熟悉,讓我在瞭解全貌上頗有困難。
我記得當時無法將官方文檔或書籍中的範例(模板)直接套用到實際系統上,感到相當困惑,不知該如何進行。
特別困難的是權限的相關處理,幾乎都是反覆嘗試的過程。
我整天都在跟錯誤對抗,循環著不斷變更 YAML 的描述進行測試。
同時也需要學習 Docker 和 Kubernetes 的基本知識,許多內容一次性學習讓我感到十分辛苦。
在這個過程中,我意識到以下幾點很重要:
這樣雖然需要花一些時間,但能幫助我理解,更加鞏固所學知識。
在這篇文章中,我回顧了過去接觸 Tekton 的經驗,並試著整理出自己的理解。
通過再度動手學習並將所得轉化為文字,讓我對這個主題的理解得以加深。
作為 Advent Calendar 的文章發表使我有機會整理資料並分享經驗。
順便一提,這是我第一次在 Qiita 發表文章。
原文出處:https://qiita.com/ta1ch1-sa1to/items/958cf3943266d7deca21