前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用ArgoCD和Tekton在OpenShift上创建端到端GitOps管道

使用ArgoCD和Tekton在OpenShift上创建端到端GitOps管道

作者头像
DevOps云学堂
发布2023-08-22 08:42:53
4340
发布2023-08-22 08:42:53
举报
文章被收录于专栏:DevOps持续集成

点击上方蓝字⭐️关注“DevOps云学堂”,接收最新技术实践

今天是「DevOps云学堂」与你共同进步的第 44

实践环境升级基于K8s和ArgoCD

使用 ArgoCD 和 Tekton 在 OpenShift 上创建端到端 DevOps 管道的分步指南

Tekton是什么?

在云原生开发领域,持续集成和持续交付(CI/CD)已成为无缝构建、测试和部署应用程序的关键组件。随着 Kubernetes和容器化的兴起,开发人员需要高效的工具来有效管理他们的 CI/CD 管道Tekton 是一个强大的开源框架,专为云原生 CI/CD 工作流程而设计。 Tekton 是一个 Kubernetes 原生框架,专注于提供一种声明性可扩展的方法来构建 CI/CD 系统。Tekton 作为持续交付基金会 (CDF) 旗下的开源项目而诞生,它利用 Kubernetes API 并利用自定义资源定义 (CRD) 来定义管道资源、任务和工作区。它为您的 CI/CD 工作流程带来了可扩展性、可移植性和可重复性的优势,使其成为云原生环境的绝佳选择。

Tekton主要特点

主要特点和概念

  1. Task任务:Tekton 管道的基本构建块是任务。每个任务代表一个特定的工作单元,例如构建代码、运行测试或部署应用程序。任务可以跨管道组合和重用,从而促进模块化和代码共享
  2. Pipeline管道:管道提供了一种按特定顺序编排任务以创建端到端 CI/CD 工作流程的方法。使用 Tekton,您可以定义包括多个阶段、并行执行和条件分支的复杂管道
  3. Resources资源:资源代表管道中任务的输入和输出。它们可以包括源代码存储库、容器映像或管道执行所需的任何其他工件。Tekton 使您能够将资源定义和管理为 Kubernetes CRD。
  4. Workspace工作区:工作区允许您在管道内的任务之间共享文件。它们提供了一种在 CI/CD 工作流程的不同阶段之间传递数据和工件的机制。工作空间可确保隔离性和可重复性,从而更轻松地管理复杂的管道。

5. 一个任务可以由多个步骤组成,管道也可以由多个任务组成。任务可以并行或顺序运行

什么是 ArgoCD

ArgoCD 在 OpenShift 中有一个本地支持,称为 OpenShift GitOps,它基于 ArgoCDArgo CD 是 Kubernetes 的声明式持续交付工具,使开发人员能够跨多个集群自动化应用程序部署。它遵循 GitOps 理念,其中应用程序的所需状态在 Git 存储库中定义,Argo CD 确保实际状态持续与所需状态匹配。通过利用 Kubernetes 自定义资源,Argo CD 提供了一种声明式的应用程序部署方法,使管理复杂的配置和回滚变得更加容易。 ArgoCD 的主要特点

  1. GitOps 方法:使用 Argo CD,应用程序的所需状态在 Git 存储库中定义,允许您使用熟悉的 Git 工作流程管理部署。这种方法为部署过程带来了版本控制、可审核性和协作,从而更容易跟踪更改并维护可靠的应用程序状态。
  2. 声明性应用程序定义:Argo CD 使用 Kubernetes 清单(例如 YAML 文件)来定义应用程序的所需状态。这种声明式方法消除了部署过程中手动干预的需要,确保了不同环境之间的一致性和可重复性
  3. 持续交付:Argo CD 持续监控应用程序的状态,并自动协调期望状态和实际状态之间的任何差异。它检测 Git 存储库中的更改并相应地触发部署、回滚或更新,确保您的应用程序始终保持最新状态。
  4. 多集群支持:Argo CD 简化了多个 Kubernetes 集群的管理。它提供所有集群的统一视图,允许您从单个控制平面将应用程序部署到多个环境。这种集中式方法提高了运营效率并简化了复杂基础设施的管理
  5. 回滚:Argo CD 可以轻松回滚到特定应用程序版本。通过利用 Git 存储库中存储的版本历史记录,您可以轻松恢复到以前的状态或进展到新版本,从而在管理部署方面提供灵活性和敏捷性。

使用 ArgoCD 和 Tekton 编写完整的 DevOps 管道

让我们动手吧!

让我们解释一下架构

  1. 这是基于.Netcore应用程序的示例管道
  2. 我们有 2 个存储库。第一个存储库包含应用程序代码和 tekton 资源第二个存储库定义了 ArgoCD 资源
  3. 每当第一个存储库有触发器时,当应用程序代码有变化时,通过webhook的触发器tekton就会开始克隆,构建源代码,构建docker镜像,并push到registry
  4. 然后 Tekton 还会将更改提交到其他存储库,以便推送镜像标签
  5. 包括部署应用程序所需的所有 yaml 的资源(例如部署、服务、报价、副本集)存储在用于 GitOps 的第二个存储库中
  6. tekton 完成任务后,ArgoCD 将与您的应用程序的最新更改同步,这可能是副本计数、最新映像、回滚等方面的更改。

步骤1:通过OpenShift中的operatorhub安装ArgoCD和Tekton。

  • ArgoCD 在 OpenShift 中称为 OpenShift Gitops
  • Tekton 在 OpenShift 中称为 OpenShift Pipelines
  • 导航到 OpenShift 中的 OperatorHub 并在 OpenShift 中安装 OpenShift Gitops 和 OpenShift 中的 OpenShift Pipelines

步骤2:在quay.io创建您的帐户

  1. Quay.io中创建您的帐户,然后创建一个如下所示的存储库并将其命名为 dotnetcore

2. 进入账户设置,点击生成新的加密密码,更改quay 的密码。

3.记下密码

步骤3:设置Tekton

  1. 克隆存储库,确保为此演示构建自己的存储库。
代码语言:javascript
复制
git clone git@github.com:SaifRehman/dotnetcore-ci-ocp-pipeline.git
  1. 创建一个名为dotnetcore的项目。
代码语言:javascript
复制
oc new-project dotnetcore
  1. 创建一个 Secretquay 链接到 openshift
代码语言:javascript
复制
oc create secret docker-registry quay-secret --docker-server=quay.io --docker-username=<QUAY_USERNAME> --docker-password=<ENCRYPTED_PASSWORD>
  1. 创建一个 github 令牌密钥,允许 tekton 将更改提交/推送到您的 github。
代码语言:javascript
复制
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 链接到管道服务帐户

代码语言:javascript
复制
$ oc secret link pipeline quay-secret
$ oc secret link pipeline git-user-pass
  1. 导航到 k8s/pipeline.yaml,并替换为您的 github 存储库,替换第 10 行和 22 行

7. 应用 Tekton 资源。导航到 k8s 文件夹并运行以下命令。

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
$ oc get route 

就我而言,它是el-dotnetcore-api-dotnetcore.apps.cluster-l8wqt.l8wqt.sandbox952.opentlc.com。复制此路线并导航到您的 github 存储库,导航到设置,然后导航到 webhook 9. 单击添加 webhook 创建 webhook

你的管道已经设置好了!!! 要检查导航到管道并转到您各自的项目,以查看您的管道

步骤4:设置 ArgoCD

  1. 向 ArgoCD 申请权限
代码语言:javascript
复制
$ oc adm policy add-cluster-role-to-user cluster-admin -z openshift-gitops-argocd-application-controller -n openshift-gitops

2.克隆存储库,并将其推送到您自己的存储库

代码语言:javascript
复制
$ git clone git@github.com:SaifRehman/dotnetcore-gitops.git

3.创建一个ArgoCD应用程序,指向您创建的存储库。

代码语言:javascript
复制
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配置

代码语言:javascript
复制
$ oc apply -f argo.yaml
  1. 通过获取其路由和密码登录 ArgoCD,如下所示。用户名是admin。
代码语言:javascript
复制
$ oc get route -n openshift-gitops
$ oc extract secret/openshift-gitops-cluster -n openshift-gitops --to=-

登录后,您可以看到 ArgoCD 部署的应用程序。

步骤5:通过提交应用程序代码中的新更改来创建触发器

  1. 更改应用程序代码中的某些内容并提交/推送新更改。
代码语言:javascript
复制
$ git commit -am "new changes"
$ git push 

2. 这将使用 Tekton 自动启动 CI。

3.等待一定时间CI完成 4. 导航到您的GitHub,您会注意到 tekton 已将最新更改推送到您的 GitOps 存储库

5. 您可以等待 3 分钟让 ArgoCD 自动同步您的存储库的最新更改,也可以手动单击 Argo 上的同步。

恭喜您使用 Tekton 和 ArgoCD 的端到端 GitOps 已准备就绪!

原文链接:https://medium.com/@s4saif.121/creating-end-to-end-gitops-pipeline-on-openshift-using-argocd-and-tekton-aa14166281e2

参考

  1. https://cloud.redhat.com/blog/introducing-openshift-pipelines
  2. https://docs.openshift.com/container-platform/4.13/cicd/gitops/understanding-openshift-gitops.html
  3. https://github.com/SaifRehman/dotnetcore-ci-ocp-pipeline
  4. https://github.com/SaifRehman/dotnetcore-gitops

往期推荐

KubeLinter:如何检查K8s清单文件和Helm图表

A/B测试: 如何使用Argo Rollouts 进行渐进式交付

综合指南·构建 Kubernetes 应用程序

第⑦期DevOps训练营·倒计时

Argo CD和Rollouts 2023年用户调查结果

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps云学堂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Tekton是什么?
    • Tekton主要特点
    • 什么是 ArgoCD
    • 使用 ArgoCD 和 Tekton 编写完整的 DevOps 管道
      • 步骤1:通过OpenShift中的operatorhub安装ArgoCD和Tekton。
        • 步骤2:在quay.io创建您的帐户
          • 步骤3:设置Tekton
            • 步骤4:设置 ArgoCD
              • 步骤5:通过提交应用程序代码中的新更改来创建触发器
                • 恭喜您使用 Tekton 和 ArgoCD 的端到端 GitOps 已准备就绪!
                • 参考
                相关产品与服务
                对象存储
                对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档