(譯) Tekton 官方使用手冊-入門篇

Tekton是Kubernetes原生的持續集成和交付(CI/CD)解決方案之一。它允許開發人員在混合雲或私有云中進行構建、測試和部署

Tekton官方提供了較多的交互式教程,便於開發者直接實踐應用此工具。想快速上手可以點擊: https://tekton.dev/try

(譯) Tekton 官方使用手冊-入門篇

前提條件:

  • Kubernetes群集版本1.15或更高版本建議使用Tekton Pipeline v0.11.0或更高版本
  • 對於Kubernetes群集版本低於1.15,建議進行升級,否則Tekton存在兼容性問題且官方也不太容易進行維護處理
  • 在群集中啟用基於角色的訪問控制(RBAC)
  • 授予當前用戶群集管理員權限。 注: 如果您使用的是Google Kubernetes Engine(GKE),請參閱Kubernetes Engine QuickStart獲取設置Kubernetes集群的說明默認情況下,GKE群集啟用了RBAC,並且默認支持持久卷(PV),需要授予當前用戶所需的權限,請運行以下命令,其他K8S環境則參考其安裝手冊: ``` kubectl create clusterrolebinding cluster-admin-binding \
  • -clusterrole=cluster-admin \
  • -user=$(gcloud config get-value core/account)

安裝:

  • Tekton Pipelines是Tekton的核心組件,僅需在k8s集群中執行以下命令,即可完成安裝
<code>kubectl apply --filename https:/<code>
  • 安裝需要一些時間,為保障服務正常使用,請確保tekton-pipelines相關組件均處於running狀態,可使用如下命令查詢組件狀態
<code>kubectl 

get

pods --

namespace

tekton-pipelines/<code>

持久卷(Persistent volumes)

  • 運行CI/CD pinelines,需要為Tekton提供永久卷存儲。默認情況下,Tekton需要5G的存儲空間。需要注意的是, Tekton的性能會受的存儲類影響

注: 可使用如下命令檢查存儲狀態是否可用

<code>kubectl 

get

pv kubectl

get

storageclasses/<code>
  • 可以通過修改Tekton使用的 ConfigMap 來定義其存儲設置.如果需要修改PV大小或者PV使用的存儲卷類型,則需要修改config-artifact-pvc 中的以下兩個選項 size: 數據卷大小: 比如10Gi storageClassName: 存儲卷的類型 假設需要10Gi的存儲空間、指定使用 manal的存儲類,則ConfigMap需要做如下修改kubectl create configmap config-artifact-pvc \ --from-literal=size=10Gi \ --from-literal=storageClassName=manual \ -o yaml -n tekton-pipelines | kubectl replace -f -
  • 此外,除非另有配置,否則Tekton將使用Kubernetes集群中的默認服務帳戶;如果您希望覆蓋此選項,請更新ConfigMap config-default的default-service-account屬性:kubectl create configmap config-defaults \ --from-literal=default-service-account=YOUR-SERVICE-ACCOUNT \ -o yaml -n tekton-pipelines | kubectl replace -f -

安裝CLI (tkn)

  • 為了方便,建議將Tkn CLI 與 Pinelines核心組件一起安裝,下載地址: https://github.com/tektoncd/cli/releases (包含mac、linux、win等主流操作系統)

使用Tekton創建第一個CI/CD工作流

  • 使用Tekton,CI/CD 工作流中的每個操作都會變成一個 Step,使用設定好的容器鏡像執行該 Step。然後將 Step 聚合到 Task 中,Task 則以 pod 的形式運行。也可以進一步將 Task 聚合到 Pinelines 中,Pinelines可以設定多個 Task 的執行順序。
  • 創建Tekton Task,需要使用 apiVersion: tekton.dev/v1beta1 , Kind: Task來創建K8S中的對象。下面的YAML文件用一個簡單的 Step 來執行打印Hello 雲原生建築師的 Task。 apiVersion: tekton.dev/v1beta1 kind: Task metadata: name: echo spec: steps: - name: echo image: ubuntu command: - echo args: - "Hello 雲原生建築師!" kubectl apply -f task.yaml
  • 運行此 Tekton 的 Task,還需要創建一個 TaskRun 對象。TaskRun 是用來設置 Task 執行任務
  • 可以只用tkn命令或者yaml 來執行 TaskRun對象 tkn task start echo --dry-run apiVersion: tekton.dev/v1beta1 kind: TaskRun metadata: name: getting-started spec: taskRef: name: echo
  • Tekton 現在已經在執行 Task,可以使用如下命令查看 TaskRun的運行日誌 tkn taskrun logs getting-started -f
  • 執行完成後,會顯示執行結果 Hello 雲原生建築師! 本文由博客一文多發平臺 OpenWrite 發佈!


分享到:


相關文章: