雲原生CICD:tekton簡單介紹及安裝

tekton簡單介紹及安裝

今天開始,我將逐步上新tekton的使用教程,每篇只需5分鐘的閱讀時間。如有寫的不好的地方,歡迎評論指正

1.1 背景介紹

Tekton是一個谷歌開源的kubernetes原生CI/CD系統,功能強大且靈活,開源社區也正在快速的迭代和發展壯大。其實Tekton的前身是Knative的build-pipeline項目,從名字可以看出這個項目是爲了給build模塊增加pipeline的功能,但是大家發現隨着不同的功能加入到Knative build模塊中,build模塊越來越變得像一個通用的CI/CD系統,這已經脫離了Knative build設計的初衷,於是,索性將build-pipeline剝離出Knative,搖身一變成爲Tekton,而Tekton也從此致力於提供全功能、標準化的原生kubernetesCI/CD解決方案。Tekton雖然還是一個挺新的項目,但是已經成爲 Continuous Delivery Foundation (CDF) 的四個初始項目之一,另外三個則是大名鼎鼎的Jenkins、Jenkins X、Spinnaker,實際上Tekton還可以作爲插件集成到JenkinsX中。所以,如果你覺得Jenkins太重,沒必要用Spinnaker這種專注於多雲平臺的CD,爲了避免和Gitlab耦合不想用gitlab-ci,那麼Tekton值得一試。Tekton的特點是kubernetes原生,什麼是kubernetes原生呢?簡單的理解,就是all in kubernetes,所以用容器化的方式構建容器鏡像是必然,另外,基於kubernetes CRD定義的pipeline流水線也是Tekton最重要的特徵。那Tekton都提供了哪些CRD呢?

  1. Task
  2. TaskRun
  3. Pipeline
  4. PipelineRun
  5. PipelineResource

Tekton Pipelines 是一個開源項目,可在 Kubernetes 集羣中配置和運行持續集成和持續交付(也稱爲 CI/CD)流水線。在本教程中,Tekton 以自定義資源的形式提供了一組 Kubernetes 擴展,用於定義流水線。
Tekton Pipelines項目提供了Kubernetes樣式的資源來聲明CI / CD樣式的管道。Tekton pipelines是雲原生的:

  • 運行在k8s上;
  • Have Kubernetes clusters as a first class type(不知道什麼意思)
  • Use containers as their building blocks(使用容器作爲什麼)

Tekton Pipelines是解耦的:

  • 一個Pipeline可以被部署進任何k8s集羣
  • 組成pipeline的task可以輕鬆的獨立運行
  • git repos之類的資源可以在運行之間輕鬆交換

1.2 安裝tekton/pipelines

先看下安裝環境:kubernetes版本要在1.15之上。
安裝tekton pipeline組件到已有的k8s集羣中:

kubectl apply --filename https://storage.googleapis.com/tekton-releases/pipeline/latest/release.yaml

這是官方教程的安裝,但是release.yaml中需要的鏡像是從谷歌雲拉取的,國內的環境可能拉不到鏡像,我安裝的tekton/pipeline是v0.12.0,所以這邊我拉好了谷歌鏡像並推送到我的dockerhub上,

大家去這裏下載我改過的yaml文件https://github.com/fishingfly/pictures_for_markdown/blob/master/tekton/tekton-pipeline-release.yaml
下載到本地後運行
kubectl applt -f tekton-pipeline-release.yaml

運行以下命令來查看部署pipeline是否成功,要是pod都是running,說明部署成功了

kubectl get pods --namespace tekton-pipelines

然後運行個例子:taskrun.yaml

apiVersion: tekton.dev/v1beta1
kind: TaskRun
metadata:
  name: steps-run-in-order
spec:
  taskSpec:
    steps:
    - image: busybox
      # NB: command is not set, so it must be looked up from the registry.
      args: ['-c', 'sleep 3 && touch foo']
    - image: busybox
      args: ['-c', 'ls', 'foo']

然後查看pod是否運行完,是comepleted:

steps-run-in-order-pod-4dgnn            0/2     Completed           0          13s

查看下日誌:

[root@master1 tekton-example]# kubectl logs steps-run-in-order-pod-4dgnn --all-containers
foo

看到foo。就是ok的。

歡迎關注公衆號 “南君手記”
南君手記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章