共计 1694 个字符,预计需要花费 5 分钟才能阅读完成。
在实际的工作中,Tekton可以完成CICD的所有工作,并没有强制的将它划分为CI工具或者CD工具。在今天的文章中,我们就会将CI和CD进行分开,让Tekton专注于CI,CD则交给 Argocd。
什么是 ArgoCD
Argo CD 是以 Kubernetes 作为基础设施,遵循声明式 GitOps 理念的持续交付(continuous delivery, CD)工具,支持多种配置管理工具,包括 ksonnet/jsonnet、kustomize 和 Helm 等。它的配置和使用非常简单,并且自带一个简单易用的可视化界面。
按照官方定义,Argo CD 被实现为一个 Kubernetes 控制器,它会持续监控正在运行的应用,并将当前的实际状态与 Git 仓库中声明的期望状态进行比较,如果实际状态不符合期望状态,就会更新应用的实际状态以匹配期望状态。
安装
ArgoCD
$ kubectl create ns argocd
$ kubectl apply -f https://raw.githubusercontent.com/honest1y/kubernetes_yaml/master/devops/argo/install.yaml -n argocd
Ingress
$ kubectl apply -f https://raw.githubusercontent.com/honest1y/kubernetes_yaml/master/devops/argo/ingress.yaml -n argocd
$ k get po -n argocd
NAME READY STATUS RESTARTS AGE
argocd-application-controller-0 1/1 Running 0 3d14h
argocd-applicationset-controller-759cdcbb4d-vmc6q 1/1 Running 0 3d14h
argocd-dex-server-7b6b54c4df-2fhh9 1/1 Running 0 3d14h
argocd-notifications-controller-65b6fcf97f-gj65z 1/1 Running 0 3d14h
argocd-redis-7f7fbb5748-qrhb5 1/1 Running 0 3d14h
argocd-repo-server-f8797cbd-z42n5 1/1 Running 0 3d14h
argocd-server-6fd554954-tfh5l 1/1 Running 0 3d14h
登录密码获取:
$ kubectl get secret argocd-initial-admin-secret -o yaml -n argocd
创建Secret
apiVersion: v1
kind: Secret
metadata:
name: argocd-auth
type: Opaque
stringData:
username: "admin"
password: "7v7lL3iYuOS1sz6m"
Tekton + ArgoCD
要使用 Tekton + Argocd 模式,只需要把我们之前 deploy的task变成由Argocd完成即可。而原先的 deploy 的 task 改成更改镜像信息的 helm Charts 并推送到Gitlab。
所以整体步骤变成如下:
- 拉代码
- 编译构建,构建镜像并推送
- 更改helm chart的value.yaml中的镜像信息,推送到仓库
- argocd监控到chart仓库变化,更新应用
将 Helm Chart 保存到 Gitlab
$ git:(master) ls -l
total 16
-rw-r--r-- 1 mervinwang staff 1.1K 2 3 10:58 Chart.yaml
drwxr-xr-x 2 mervinwang staff 64B 2 3 10:58 charts
drwxr-xr-x 10 mervinwang staff 320B 2 3 10:58 templates
-rw-r--r-- 1 mervinwang staff 717B 2 6 12:05 values.yaml
在Argocd上部署应用
新建项目
添加仓库
部署应用
触发流水线部署
然后在Tekton Dashboard上看到运行完成,如下:
正文完