日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

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

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
Tekton實(shí)踐篇-Tekton和Argocd的夢(mèng)幻聯(lián)動(dòng)

前面的一系列文章基本已經(jīng)把Tekton相關(guān)的知識(shí)介紹完了,如果你認(rèn)真的看完并且實(shí)踐過(guò),相信你對(duì)Tekton已經(jīng)有一定的掌握了。

成都創(chuàng)新互聯(lián)公司擁有10余年的建站服務(wù)經(jīng)驗(yàn),在此期間,我們發(fā)現(xiàn)較多的客戶在挑選建站服務(wù)商前都非常的猶豫。主要問(wèn)題集中:在無(wú)法預(yù)知自己的網(wǎng)站呈現(xiàn)的效果是什么樣的?也無(wú)法判斷選擇的服務(wù)商設(shè)計(jì)出來(lái)的網(wǎng)頁(yè)效果自己是否會(huì)滿意?成都創(chuàng)新互聯(lián)公司業(yè)務(wù)涵蓋了互聯(lián)網(wǎng)平臺(tái)網(wǎng)站建設(shè)、移動(dòng)平臺(tái)網(wǎng)站制作、網(wǎng)絡(luò)推廣、按需網(wǎng)站策劃等服務(wù)。成都創(chuàng)新互聯(lián)公司網(wǎng)站開發(fā)公司本著不拘一格的網(wǎng)站視覺設(shè)計(jì)和網(wǎng)站開發(fā)技術(shù)相結(jié)合,為企業(yè)做網(wǎng)站提供成熟的網(wǎng)站設(shè)計(jì)方案。

在實(shí)際的工作中,Tekton可以完成CICD的所有工作,并沒有強(qiáng)制的將它劃分為CI工具或者CD工具。在今天的文章中,我們就會(huì)將CI和CD進(jìn)行分開,讓Tekton專注于CI,CD則交給Argocd。

要使用Tekton+Argocd模式,只需要把我們之前deploy的task變成由Argocd完成即可。而原先的deploy的task改成更改鏡像信息并推送到Gitlab。

所以整體步驟變成如下:

  • 拉代碼
  • 編譯構(gòu)建,構(gòu)建鏡像并推送
  • 更改helm chart的value.yaml中的鏡像信息,推送到倉(cāng)庫(kù)
  • argocd監(jiān)控到chart倉(cāng)庫(kù)變化,更新應(yīng)用

前提:自己部署好Argocd,如果對(duì)Argocd不熟悉可以到官網(wǎng)(https://argo-cd.readthedocs.io/en/stable/)進(jìn)行學(xué)習(xí),也可以在《運(yùn)維開發(fā)故事》公眾號(hào)搜索Argocd相關(guān)文章進(jìn)行學(xué)習(xí)。

將Helm Chart保存到Gitlab

因?yàn)锳rgocd是基于GitOps的實(shí)現(xiàn),所以用它來(lái)部署應(yīng)用也是基于Git。

創(chuàng)建一個(gè)devops-helm-chart的倉(cāng)庫(kù),如下:

讓后將具體的Helm Chart推送到倉(cāng)庫(kù)。

在Argocd上部署應(yīng)用

(1)添加倉(cāng)庫(kù)

(2)部署應(yīng)用

改造Tekton Pipeline上面已經(jīng)把基本需要的東西準(zhǔn)備好了,下面就開始真正的改造了。

創(chuàng)建更改Helm Chart的Task

顧名思義,Argocd是基于Git來(lái)進(jìn)行應(yīng)用的生命周期管理,所以我們的應(yīng)用變更最好也是基于Git,這樣整個(gè)流程是可追溯的。

apiVersion: tekton.dev/v1alpha1
kind: Task
metadata:
name: deploy-to-gitlab
spec:
workspaces:
- name: source
- name: kubernetesconfig
mountPath: /root/.kube
params:
- name: IMAGE
- name: TAG
- name: GIT_USERNAME
- name: GIT_PASSWORD
- name: CHART_GITLAB_URL
- name: GIT_NAME
default: joker
- name: GIT_EMAIL
default: coolops@163.com
- name: CHART_DIR
steps:
- name: run-change-helm-chart
image: registry.cn-hangzhou.aliyuncs.com/coolops/helm-kubectl-curl-git-jq-yq:latest
workingDir: $(workspaces.source.path)
script: |
git remote set-url origin http://$(params.GIT_USERNAME):$(params.GIT_PASSWORD)@$(params.CHART_GITLAB_URL)
git config --global user.name "$(params.GIT_NAME)"
git config --global user.email "$(params.GIT_EMAIL)"
git clone http://$(params.GIT_USERNAME):$(params.GIT_PASSWORD)@$(params.CHART_GITLAB_URL) /opt/devops-cd
cd /opt/devops-cd/$(params.CHART_DIR)
git pull
yq w --inplace values.yaml 'image.repository' "$(params.IMAGE)"
yq w --inplace values.yaml 'image.tag' "$(params.TAG)"
git commit -am 'image update'
git push

修改Tekton Pipeline

上面已經(jīng)準(zhǔn)備好了Task,下面就是對(duì)Pipeline進(jìn)行改造,改造后如下:

apiVersion: tekton.dev/v1beta1
kind: Pipeline
metadata:
name: rd-argocd-pipeline
spec:
workspaces: # 聲明 workspaces
- name: rd-repo-pvc
- name: docker-config
params:
# 定義代碼倉(cāng)庫(kù)
- name: git_url
- name: revision
type: string
default: "master"
- name: gitInitImage
type: string
default: "registry.cn-hangzhou.aliyuncs.com/coolops/tekton-git-init:v0.29"
# 定義鏡像參數(shù)
- name: pathToDockerfile
description: The path to the build context, used by Kaniko - within the workspace
default: .
- name: imageUrl
description: Url of image repository
- name: imageTag
description: Tag to apply to the built image
default: latest
- name: git_username
type: string
default: root
- name: git_password
type: string
- name: chart_gitlab_url
type: string
default: 192.168.205.130/root/devops-helm-chart.git
- name: git_name
type: string
default: joker
- name: git_email
type: string
default: coolops@163.com
- name: chart_dir
type: string
default: coolops-rd
- name: app_name
type: string
# 定義代碼掃描
- name: sonar_username
type: string
default: admin
- name: sonar_password
type: string
default: admin
- name: sonar_url
type: string
tasks: # 添加task到流水線中
- name: clone
taskRef:
name: git-clone
workspaces:
- name: output
workspace: rd-repo-pvc
params:
- name: url
value: $(params.git_url)
- name: revision
value: $(params.revision)
- name: gitInitImage
value: $(params.gitInitImage)
- name: unit-test
workspaces: # 傳遞 workspaces
- name: source
workspace: rd-repo-pvc
taskRef:
name: unit-test
runAfter:
- clone
- name: build-push-image
params:
- name: pathToDockerfile
value: $(params.pathToDockerfile)
- name: imageUrl
value: $(params.imageUrl)
- name: imageTag
value: $(tasks.clone.results.commit)
taskRef:
name: build-push-image
runAfter:
- unit-test
workspaces: # 傳遞 workspaces
- name: source
workspace: rd-repo-pvc
- name: dockerconfig
workspace: docker-config
- name: deploy-to-gitlab
taskRef:
name: deploy-to-gitlab
params:
- name: IMAGE
value: $(params.imageUrl)
- name: TAG
value: $(tasks.clone.results.commit)
- name: GIT_USERNAME
value: $(params.git_username)
- name: GIT_PASSWORD
value: $(params.git_password)
- name: CHART_GITLAB_URL
value: $(params.chart_gitlab_url)
- name: GIT_NAME
value: $(params.git_name)
- name: GIT_EMAIL
value: $(params.git_email)
- name: CHART_DIR
value: $(params.chart_dir)
workspaces:
- name: source
workspace: rd-repo-pvc
runAfter:
- build-push-image
- name: sonar-scanner
when:
- input: $(params.revision)
operator: in
values:
- test
taskRef:
name: sonar-scanner
params:
- name: SONAR_USERNAME
value: $(params.sonar_username)
- name: SONAR_PASSWORD
value: $(params.sonar_password)
- name: SONAR_URL
value: $(params.sonar_url)
- name: APP_NAME
value: $(params.app_name)
workspaces:
- name: source
workspace: rd-repo-pvc

修改PipelineRun

上面已經(jīng)把Pipeline準(zhǔn)備好了,下面就i創(chuàng)建一個(gè)PipelineRun進(jìn)行測(cè)試。

apiVersion: tekton.dev/v1beta1
kind: PipelineRun
metadata:
name: devops-hello-world-pipeline-run
spec:
pipelineRef:
name: rd-argocd-pipeline
params:
- name: revision
value: test
- name: git_url
value: http://192.168.205.130/root/devops-hello-world.git
- name: imageUrl
value: registry.cn-hangzhou.aliyuncs.com/coolops/devops-hello-world
- name: imageTag
value: latest
- name: pathToDockerfile
value: Dockerfile
- name: git_password
value: Joker@123456
- name: app_name
value: devops-hello-world
- name: sonar_username
value: admin
- name: sonar_password
value: Joker@123456
- name: sonar_url
value: http://sonarqube.coolops.cn
workspaces:
- name: rd-repo-pvc
volumeClaimTemplate:
spec:
accessModes:
- ReadWriteOnce
storageClassName: local
resources:
requests:
storage: 1Gi
- name: docker-config
secret:
secretName: docker-config
serviceAccountName: tekton-build-sa

然后在Tekton Dashboard上看到運(yùn)行完成,如下:

Chart倉(cāng)庫(kù)中的value.yaml也進(jìn)行了對(duì)應(yīng)的更改,如下:

Argocd也對(duì)應(yīng)用進(jìn)行了對(duì)應(yīng)的更新,如下:

到此整個(gè)流水線的拆分以及使用就完成了。

最后

到這里,Tekton系列文章基本告一段落了,整個(gè)系列耗時(shí)將近2個(gè)月,從最基礎(chǔ)的安裝,再慢慢到理論知識(shí),以及最后的不同實(shí)踐,不知道你掌握了多少?

分享是另一種學(xué)習(xí),也是我比較推崇的一種學(xué)習(xí)方式,畢竟自己學(xué)和寫出來(lái)還是有不少的距離,從學(xué)習(xí)到分享,可以不斷的加深對(duì)知識(shí)的印象,也能很好的整理自己的知識(shí)體系,當(dāng)然也希望對(duì)大家有所幫助。


網(wǎng)站名稱:Tekton實(shí)踐篇-Tekton和Argocd的夢(mèng)幻聯(lián)動(dòng)
新聞來(lái)源:http://www.5511xx.com/article/ccochgo.html