首页 > 其他分享 >Argocd入门

Argocd入门

时间:2024-09-19 10:14:41浏览次数:9  
标签:CI Git 入门 Kubernetes 仓库 Argocd ArgoCD CD

概念

ArgoCD 是一个基于 GitOps 的持续交付(CD)工具,专门用于 Kubernetes 环境。它通过使用 Git 仓库作为应用程序的 "源代码真相",自动化应用的部署和管理。

以下是 ArgoCD 的一些关键特性:

GitOps 模型:ArgoCD 遵循 GitOps 原则,将基础设施和应用程序的期望状态存储在 Git 仓库中。任何对 Git 仓库的变更都会自动触发部署。

声明式配置:ArgoCD 支持通过 Helm Charts、Kustomize 文件或直接的 YAML 清单定义 Kubernetes 应用程序。它会持续监控 Git 仓库和 Kubernetes 集群中的运行应用,确保两者状态一致。

同步与回滚:ArgoCD 会同步 Kubernetes 集群中的应用状态与 Git 仓库中的期望状态。如果发生不一致,它可以自动或手动进行修复,并支持快速回滚到以前的版本。

多集群管理:可以同时管理多个 Kubernetes 集群的应用部署,使得跨集群的应用管理更加简便。

自定义健康检查与自动部署:根据定义的健康检查标准自动检测应用是否正常运行,并进行自动部署和更新。

ArgoCD 是 GitOps 和 Kubernetes 环境中常用的自动化工具,适合用于 DevOps 团队来提高交付效率。

简单示例

下面是一个使用 ArgoCD 的简单示例,展示如何通过 ArgoCD 实现 GitOps 流程来自动化 Kubernetes 应用的部署。

步骤 1: 安装 ArgoCD

首先需要在 Kubernetes 集群中安装 ArgoCD。你可以使用以下命令安装:

kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml

安装完成后,你可以使用 kubectl 来暴露 ArgoCD 的 API 服务,方便你访问 ArgoCD 的 Web UI:

kubectl port-forward svc/argocd-server -n argocd 8080:443

然后你可以通过浏览器访问 https://localhost:8080 来登录 ArgoCD。

步骤 2: 登录 ArgoCD

获取 ArgoCD 的初始密码(默认是 argocd-server 服务的 admin 用户):

kubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath="{.data.password}" | base64 -d

使用该密码和 admin 用户登录 ArgoCD Web UI。

步骤 3: 创建一个 Git 仓库用于存储 Kubernetes 配置

在 GitHub(或其他 Git 托管平台)上创建一个 Git 仓库,存储你的 Kubernetes 资源配置文件,比如 deployment.yamlservice.yaml 等。

例如,创建一个简单的 Nginx Deployment 和 Service:

# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.19.0
        ports:
        - containerPort: 80
---
# service.yaml
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
spec:
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
  type: LoadBalancer

将这些文件推送到 Git 仓库中。

步骤 4: 配置 ArgoCD 应用

在 ArgoCD 中创建一个应用程序,将它与 Git 仓库关联。可以通过命令行或 ArgoCD Web UI 完成。

通过命令行创建应用:

argocd app create nginx-app \
    --repo https://github.com/your-user/your-repo.git \
    --path . \
    --dest-server https://kubernetes.default.svc \
    --dest-namespace default

通过 Web UI 创建应用:

  1. 登录到 ArgoCD Web UI。
  2. 点击“新建应用”(New App)。
  3. 填写应用的名称,如 nginx-app
  4. 配置 Git 仓库 URL,选择存放 Kubernetes 配置的路径。
  5. 设置目标集群和命名空间。

步骤 5: 同步应用

创建应用后,ArgoCD 将监控 Git 仓库中的变化。你可以手动同步,也可以启用自动同步。

通过命令行手动同步:

argocd app sync nginx-app

或者在 Web UI 上点击 "Sync" 按钮进行同步。

步骤 6: 检查部署状态

你可以通过 ArgoCD Web UI 查看应用的健康状态、资源详情以及同步情况。如果 Git 仓库中的配置发生更改,ArgoCD 会自动识别,并同步集群中的资源以匹配 Git 中的状态。

argocd app get nginx-app

通过以上步骤,ArgoCD 将自动从 Git 仓库中拉取 Kubernetes 配置文件,并在集群中进行部署和管理。这展示了 GitOps 的核心思想:将所有操作通过 Git 进行版本控制和管理,确保集群的实际状态与声明的状态保持一致。

CD配合哪些CI来完成

在 ArgoCD 中,确实只负责 持续交付 (CD) 的部分,而不包含 持续集成 (CI) 的功能。对于 CI 部分,通常会结合其他工具来完成。常见的组合方式如下:

1. Jenkins + ArgoCD

  • Jenkins 用于 持续集成 (CI),负责从代码库中拉取代码,执行代码编译、构建、单元测试等任务,生成容器镜像,并将镜像推送到容器镜像仓库。
  • ArgoCD 从 Git 仓库中拉取 Kubernetes 配置文件,然后将这些文件应用到 Kubernetes 集群,实现 持续交付 (CD)
  • 这种组合方式较为常见,因为 Jenkins 强大的 CI 流水线功能和 ArgoCD 的 GitOps CD 模式互补。

2. GitLab CI + ArgoCD

  • GitLab CI 提供内置的 CI/CD 功能。你可以使用 GitLab CI 执行代码编译、测试和构建容器镜像,然后推送到 Docker Registry(如 Docker Hub 或 GitLab Container Registry)。
  • 接着,ArgoCD 负责持续监控 Git 仓库中的 Kubernetes 部署配置文件(如 Helm chart 或 Kustomize),并将其同步到 Kubernetes 集群,完成 CD 部分。

3. CircleCI + ArgoCD

  • CircleCI 是一个流行的持续集成服务,主要用于自动化代码测试和构建流程。它可以用于执行 CI 阶段,生成 Docker 镜像,并推送到容器仓库。
  • ArgoCD 可以接管 CD 部分,自动监控和更新 Kubernetes 集群。

4. Tekton + ArgoCD

  • Tekton 是一个 Kubernetes 原生的 CI 工具,它可以在 Kubernetes 上运行 CI 流水线任务。你可以用 Tekton 来处理代码编译、测试和容器镜像的构建任务。
  • 然后使用 ArgoCD 来处理镜像更新和部署,保持 GitOps 模型的 CD 流程。

5. Drone CI + ArgoCD

  • Drone CI 是一个基于容器的 CI 工具,轻量且易于集成。它同样可以用于代码构建、测试和生成 Docker 镜像。
  • ArgoCD 可以与 Drone 配合,完成镜像部署到 Kubernetes 集群的持续交付。

CI 和 CD 的分工

在现代 CI/CD 流程中,通常是通过专门的 CI 工具来完成代码的构建、测试、镜像创建等任务,而 CD 工具负责将构建结果(如容器镜像)自动部署到目标环境中。

  1. CI 工具:负责代码的集成,包括编译、单元测试、集成测试、生成 Docker 镜像并推送到镜像仓库。

    • 常用工具:Jenkins、GitLab CI、CircleCI、Drone、Tekton 等。
  2. ArgoCD:持续监控 Git 仓库中的 Kubernetes 配置,并将更新部署到 Kubernetes 集群中。

这种工具组合的方式让 CI/CD 流程更加模块化和灵活,ArgoCD 可以与不同的 CI 工具配合,从而实现高效的自动化交付流程。

标签:CI,Git,入门,Kubernetes,仓库,Argocd,ArgoCD,CD
From: https://www.cnblogs.com/jasmine456/p/18420003

相关文章

  • SQL Server全方位指南:从入门到高级详解
    本文将分为三大部分,逐步深入SQLServer的基础知识、进阶技巧和高级特性,旨在帮助从初学者到经验丰富的开发人员深入理解和使用SQLServer。一、入门篇1.1什么是SQLServer?SQLServer是由微软开发的关系型数据库管理系统(RDBMS),广泛应用于企业应用程序和数据分析领域。它提......
  • TypeScript入门 (二)控制语句
    引言大家好,我是GISerLiu......
  • 信息学入门自学资料
    视频教程:NOIOnline培训Dev-C++软件的安装使用教程练习平台:洛谷如何注册洛谷、加入团队以及提交作业C++语言基础1C++语言基础2&算法入门数据结构与算法入门......
  • CMake入门
    CMake应用:基础篇什么是CMake?CMake是一个开源、跨平台的编译、测试和打包工具,它使用比较简单的语言描述编译、安装的过程,输出Makefile或者project文件,再去执行构建。在使用IDE开发软件的过程中,代码的编译和构建一般是使用IDE自带的编译工具和环境进行编译,开发者参与的并不算......
  • JavaScript语法入门七 数据类型
     BigInt类型在JavaScript中,“number”类型无法代表大于 253(或小于 -253)的整数。此时可以使用BigInt类型。使用方法:在数字的尾部附加一个n。constbigInttest=12345678901234567890123456789012345678901121345526789n; String类型js中只有String类型没有char类型。定义时......
  • C++入门基础知识75(高级)——【关于C++ Web 编程】
    成长路上不孤单......
  • 入门sentinel
    Sentinel是阿里巴巴开源的一款面向分布式服务架构的轻量级流量控制组件,主要用于保护微服务和分布式系统,防止因流量过大或服务故障导致系统崩溃。以下是对Sentinel入门的详细介绍:一、Sentinel的主要功能Sentinel是阿里巴巴开源的一款面向分布式服务架构的高可用流量防护......
  • 面向对象入门——学生信息管理系统01
    目录1.设计过程1.1类的划分1.2功能的实现1.3基本语法2.代码功能展示2.1StudentManagementSystemTest2.2main运行结果1.设计过程1.1类的划分类名属性方法说明Student.java学生姓名privateStringnamepublicStringgetName()获取Student类的name属性publicv......
  • 菜鸟笔记之PWN入门(1.1.1)汇编语言基础与堆栈入门
    啥是汇编语言?有啥用?深入了解计算机底层,我们会发现,计算机实际上只能执行一些非常基础的操作,但其速度却非常快。计算机的CPU只能执行机器码,即由一系列0和1组成的指令。不同的0和1组合会触发计算机中的不同电路,从而进行各种操作。由于这些0和1的组合很长,阅读起来不方便,因此通常以1......
  • 菜鸟笔记之PWN入门(1.1.3)Linux基础操作和ELF文件保护
    这里不讨论Linux的历史及其与Windows的比较。直接介绍一些简单基础的操作。首先我们需要安装一个Linux操作系统(首先推荐Ubuntu),我们需要安装一个VM虚拟机,然后在里面搭建一个Ubuntu的虚拟机可以直接百度搜索,这里推荐一个文章安装虚拟机(VMware)保姆级教程(附安装包)_vmware虚拟机-......