点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践
今天是「DevOps云学堂」与你共同进步的第 44天
实践环境升级基于K8s和ArgoCD
使用 ArgoCD 和 Tekton 在 OpenShift 上创建端到端 DevOps 管道的分步指南
在云原生开发领域,持续集成和持续交付(CI/CD)已成为无缝构建、测试和部署应用程序的关键组件
。随着 Kubernetes和容器化的兴起,开发人员需要高效的工具来有效管理他们的 CI/CD 管道
。Tekton
是一个强大的开源框架,专为云原生 CI/CD 工作流程而设计
。
Tekton 是一个 Kubernetes 原生框架
,专注于提供一种声明性
且可扩展
的方法来构建 CI/CD 系统。Tekton 作为持续交付基金会 (CDF) 旗下的开源项目而诞生,它利用 Kubernetes API 并利用自定义资源定义 (CRD) 来定义管道资源、任务和工作区
。它为您的 CI/CD 工作流程带来了可扩展性、可移植性和可重复性的优势
,使其成为云原生环境的绝佳选择。
主要特点和概念
构建代码、运行测试或部署应用程序
。任务可以跨管道组合和重用
,从而促进模块化和代码共享
。编排任务以创建端到端 CI/CD 工作流程的方法
。使用 Tekton,您可以定义包括多个阶段、并行执行和条件分支的复杂管道
。任务的输入和输出
。它们可以包括源代码存储库、容器映像或管道执行所需的任何其他工件
。Tekton 使您能够将资源定义和管理为 Kubernetes CRD。任务之间共享文件
。它们提供了一种在 CI/CD 工作流程的不同阶段之间传递数据和工件的机制
。工作空间可确保隔离性和可重复性,从而更轻松地管理复杂的管道。
5. 一个任务可以由多个步骤组成
,管道也可以由多个任务组成
。任务可以并行或顺序运行
。
ArgoCD 在 OpenShift 中有一个本地支持,称为 OpenShift GitOps,它基于 ArgoCD
。
Argo CD
是 Kubernetes 的声明式持续交付工具
,使开发人员能够跨多个集群自动化应用程序部署
。它遵循 GitOps 理念,其中应用程序的所需状态在 Git 存储库
中定义,Argo CD 确保实际状态持续与所需状态匹配
。通过利用 Kubernetes 自定义资源,Argo CD 提供了一种声明式的应用程序部署方法
,使管理复杂的配置和回滚变得更加容易。
ArgoCD 的主要特点
Argo CD
,应用程序的所需状态在 Git 存储库
中定义,允许您使用熟悉的 Git 工作流程管理部署。这种方法为部署过程带来了版本控制、可审核性和协作
,从而更容易跟踪更改并维护可靠的应用程序状态。Kubernetes 清单
(例如 YAML 文件)来定义应用程序的所需状态。这种声明式方法消除了部署过程中手动干预
的需要,确保了不同环境之间的一致性和可重复性
。自动协调期望状态和实际状态之间的任何差异
。它检测 Git 存储库中的更改并相应地触发部署、回滚或更新
,确保您的应用程序始终保持最新状态。多个 Kubernetes 集群的管理
。它提供所有集群的统一视图,允许您从单个控制平面将应用程序部署到多个环境。这种集中式方法提高了运营效率并简化了复杂基础设施的管理
。轻松回滚到特定应用程序版本
。通过利用 Git 存储库中存储的版本历史记录,您可以轻松恢复到以前的状态或进展到新版本,从而在管理部署方面提供灵活性和敏捷性。让我们动手吧!
让我们解释一下架构
.Netcore
应用程序的示例管道第一个存储库包含应用程序代码和 tekton 资源
。第二个存储库定义了 ArgoCD 资源
webhook的触发器
,tekton
就会开始克隆,构建源代码,构建docker镜像,并push到registry
。将更改提交到其他存储库
,以便推送镜像标签ArgoCD 将与您的应用程序的最新更改同步
,这可能是副本计数、最新映像、回滚等方面的更改。OpenShift Gitops
OpenShift Pipelines
OperatorHub
并在 OpenShift 中安装 OpenShift Gitops
和 OpenShift 中的 OpenShift Pipelines
Quay.io
中创建您的帐户,然后创建一个如下所示的存储库并将其命名为 dotnetcore
。
2. 进入账户设置,点击生成新的加密密码,更改quay
的密码。
3.记下密码
git clone git@github.com:SaifRehman/dotnetcore-ci-ocp-pipeline.git
dotnetcore
的项目。oc new-project dotnetcore
Secret
将 quay
链接到 openshift
。oc create secret docker-registry quay-secret --docker-server=quay.io --docker-username=<QUAY_USERNAME> --docker-password=<ENCRYPTED_PASSWORD>
github
令牌密钥,允许 tekton
将更改提交/推送到您的 github。apiVersion: v1
kind: Secret
metadata:
name: git-user-pass
annotations:
tekton.dev/git-0: https://github.com
type: kubernetes.io/basic-auth
stringData:
username: <github user>
password: <github personal access token>
oc apply -f secret.yaml
5. 将 Secrets 链接到管道服务帐户
$ oc secret link pipeline quay-secret
$ oc secret link pipeline git-user-pass
k8s/pipeline.yaml
,并替换为您的 github 存储库,替换第 10 行和 22 行
7. 应用 Tekton 资源
。导航到 k8s 文件夹并运行以下命令。
$ oc apply -f dotnetcore-api-pvc.yaml
$ oc apply -f el-route.yaml
$ oc apply -f eventlistener.yaml
$ oc apply -f git-update-deployment-task.yaml
$ oc apply -f pipeline.yaml
$ oc apply -f triggerbinding.yaml
$ oc apply -f triggertemplate.yaml
8.这将创建所有 tekton 资源并创建一个 web hook URL
,通过查看其路由
来复制 webhook url
$ oc get route
就我而言,它是el-dotnetcore-api-dotnetcore.apps.cluster-l8wqt.l8wqt.sandbox952.opentlc.com
。复制此路线并导航到您的 github 存储库,导航到设置,然后导航到 webhook
9. 单击添加 webhook 创建 webhook
你的管道已经设置好了!!! 要检查导航到管道并转到您各自的项目,以查看您的管道
$ oc adm policy add-cluster-role-to-user cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops
2.克隆存储库,并将其推送到您自己的存储库
$ git clone git@github.com:SaifRehman/dotnetcore-gitops.git
3.创建一个ArgoCD应用程序,指向您创建的存储库。
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: vote-app-dev
namespace: openshift-gitops
spec:
destination:
namespace: vote-app-dev
server: https://kubernetes.default.svc
project: default
source:
path: environments/dev
repoURL: <your-gitops-cloned-repo>
targetRevision: main
syncPolicy:
automated:
prune: true
selfHeal: false
syncOptions:
- CreateNamespace=true
4.应用yaml配置
$ oc apply -f argo.yaml
路由和密码登录 ArgoCD
,如下所示。用户名是admin。$ oc get route -n openshift-gitops
$ oc extract secret/openshift-gitops-cluster -n openshift-gitops --to=-
登录后,您可以看到 ArgoCD 部署的应用程序。
$ git commit -am "new changes"
$ git push
2. 这将使用 Tekton 自动启动 CI。
3.等待一定时间CI完成
4. 导航到您的GitHub
,您会注意到 tekton
已将最新更改推送到您的 GitOps 存储库
。
5. 您可以等待 3 分钟
让 ArgoCD 自动同步
您的存储库的最新更改,也可以手动单击 Argo 上的同步。
原文链接:https://medium.com/@s4saif.121/creating-end-to-end-gitops-pipeline-on-openshift-using-argocd-and-tekton-aa14166281e2
往期推荐