🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付

1. 前言

數年前我在 Kubernetes 環境中使用 Tekton 這個工具來建立 CI/CD 管道。
當時的細節設定和程式碼我幾乎不記得了,但這次我會將當時的經驗和學習整理一番,讓初學者也能感受到整體氛圍。

2. 當時的狀況

當時已經有運行中的 Kubernetes 環境,我負責用 Tekton 創建 CI/CD 的一部分管道。
在參考官方網站(英文)和書籍的同時,也受到上司和前輩的建議,逐步推進工作。
然而,當時 Tekton 的參考資源比較少,讓我在理解其運作機制上遇到了困難。
我對 Docker 和 Kubernetes 的容器技術也不太熟悉,因此需要一邊查詢一邊進行理解。
此外,現有的系統規模龐大且複雜,對於如何導入 Tekton 並沒有清晰的概念,讓我感到相當困惑。

3. Tekton 的基本概念

Tekton 是一個在 Kubernetes 上運作的 CI/CD 工具。
簡單來說,它是一個幫助自動化開發工作的工具
例如,可以自動化執行原始碼的建置、測試和部署等手動執行的工作。

3-1. Tekton 與 Kubernetes 的關係

  • Kubernetes 是一個容器管理平台
  • Tekton 是用於在 Kubernetes 上 自動執行 CI/CD 管道的工具
  • 使用 Tekton 可以輕鬆實現開發流程的自動化

3-2. Tekton 能做的事情(示例)

  • 自動建置原始碼
  • 測試建置結果
  • 若無問題則自動部署至暫存環境或生產環境
  • 將多個作業(Task)依序組合成管道,並自動執行

重點:使用 Tekton 可以讓「人手依序進行的工作」以固定的順序自動化執行。

3-3. Tekton 的主要組成要素

  • Task:單個處理單位(例:原始碼建置、測試、部署等)
  • Pipeline:依序排列的 Task 流程(例:建置→測試→部署)
  • PipelineRun:實際執行 Pipeline 的操作

圖1: Tekton 的概念模型(來源: Tekton官方網站)

3-4. Tekton 的使用方法

在 Tekton 中,可以將 Task 和 Pipeline 寫入 YAML 配置檔,註冊到 Kubernetes,並創建 PipelineRun,以依序執行定義的步驟

3-4-1. 創建 Task

  • 將「要做的事情」寫入 YAML 檔
  • 例:建置 Task → 獲取原始碼並進行建置

檔名範例: 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 本身僅會被註冊,尚未執行。

3-4-2. 創建 Pipeline

  • 將多個 Task 依序排列的 YAML 檔
    例:建置 Task → 測試 Task → 部署 Task
    檔名範例: hello-pipeline.yaml
apiVersion: tekton.dev/v1
kind: Pipeline
metadata:
  name: hello-pipeline
spec:
  tasks:
    - name: build
      taskRef:
        name: hello-build-task

若要定義多個 Task,則在 tasks 中添加即可。
這個 YAML 註冊後將創建 Pipeline,並能夠依序執行 Task。

3-4-3. 使用 PipelineRun 執行

  • 實際執行 Pipeline 的 YAML 檔

檔名範例: hello-pipeline-run.yaml

apiVersion: tekton.dev/v1
kind: PipelineRun
metadata:
  name: hello-pipeline-run
spec:
  pipelineRef:
    name: hello-pipeline

註冊這個 YAML 後,Pipeline 將依序執行各個 Task。

4. 當時的學習與心得

在第一次創建 Tekton 的 Pipeline 時,由於對 Task 和 Pipeline 的關係並不熟悉,讓我在瞭解全貌上頗有困難。
我記得當時無法將官方文檔或書籍中的範例(模板)直接套用到實際系統上,感到相當困惑,不知該如何進行。

特別困難的是權限的相關處理,幾乎都是反覆嘗試的過程。
我整天都在跟錯誤對抗,循環著不斷變更 YAML 的描述進行測試。

同時也需要學習 Docker 和 Kubernetes 的基本知識,許多內容一次性學習讓我感到十分辛苦。

在這個過程中,我意識到以下幾點很重要:

  • 概念的整理與理解是必要的
  • 逐步實作並確認進度是理解的捷徑

這樣雖然需要花一些時間,但能幫助我理解,更加鞏固所學知識。

5. 總結

在這篇文章中,我回顧了過去接觸 Tekton 的經驗,並試著整理出自己的理解。
通過再度動手學習並將所得轉化為文字,讓我對這個主題的理解得以加深。
作為 Advent Calendar 的文章發表使我有機會整理資料並分享經驗。
順便一提,這是我第一次在 Qiita 發表文章。


原文出處:https://qiita.com/ta1ch1-sa1to/items/958cf3943266d7deca21


精選技術文章翻譯,幫助開發者持續吸收新知。

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。
🏆 本月排行榜
🥇
站長阿川
📝11   💬9   ❤️5
331
🥈
我愛JS
📝1   💬8   ❤️2
62
評分標準:發文×10 + 留言×3 + 獲讚×5 + 點讚×1 + 瀏覽數÷10
本數據每小時更新一次
🔧 阿川の電商水電行
Shopify 顧問、維護與客製化
💡
小任務 / 單次支援方案
單次處理 Shopify 修正/微調
⭐️
維護方案
每月 Shopify 技術支援 + 小修改 + 諮詢
🚀
專案建置
Shopify 功能導入、培訓 + 分階段交付