第240403期 – argo

第240403期 - argo
15.9k star,gitlab+argo-cd+k3s,gitops初体验实践指南

今天介绍的主角是argo-cd,下面是一个直观的使用效果:

argo-cd简介

Argo CD是一款声明式的GitOps持续交付工具,专为Kubernetes设计。它的主要特点包括:

与Argo CD类似的软件包括GitLab、Harness Platform、CircleCI、Octopus Deploy和Azure DevOps Server等。这些工具也提供持续交付功能,但各有特点和优势。

gitops简介

GitOps是一种基于Git的操作框架,将应用程序开发中的DevOps最佳实践(如版本控制、协作、合规性和CI/CD)应用于基础设施自动化。GitOps的核心组件包括:

  • 基础设施即代码(IaC):使用Git仓库作为基础设施定义的单一真理来源。
  • 合并请求(MRs)或拉取请求(PRs):作为所有基础设施更新的变更机制。
  • CI/CD自动化:通过Git工作流自动化基础设施更新。

argo-cd特点

  • 声明式配置管理:Argo CD使用Git仓库作为定义应用程序所需状态的“真理来源”,确保应用程序的部署与配置文件保持一致。
  • 自动化部署:当Git仓库中的定义发生变化时,Argo CD能够自动同步变更到Kubernetes集群中,实现自动化部署。
  • 多集群管理:支持跨多个Kubernetes集群部署和管理应用程序。
  • UI和CLI:提供了丰富的用户界面和命令行工具,方便用户管理和同步应用程序。
  • 健康状态分析:能够分析并展示应用程序资源的健康状态。
  • 回滚功能:支持回滚到Git仓库中任何提交的应用程序配置。

argo-cd部署实践

/usr/local/bin/k3s kubectl apply --namespace argocd -f install.yaml
/usr/local/bin/k3s kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "NodePort"}}'
/usr/local/bin/k3s kubectl --namespace argocd get all

第240403期 - argo

通过如下方式获取密码

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

gitlab中配置项目myapp-deployment.yaml和myapp-service.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - image: registry.cn-hangzhou.aliyuncs.com/argo_study/study_mirror:v1
        name: myapp
        ports:
        - containerPort: 80

myapp-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: myapp
spec:
  ports:
  - port: 80
    targetPort: 80
    nodePort: 32060
  type: NodePort
  selector:
    app: myapp

第240403期 - argo

第240403期 - argo

第240403期 - argo

第240403期 - argo

第240403期 - argo

第240403期 - argo

第240403期 - argo

开启自动同步

第240403期 - argo

然后在gitlab中修改

第240403期 - argo

提交后,argo会自动更新

第240403期 - argo

第240403期 - argo

回滚机制

第240403期 - argo

操作之前需要线关闭自动更新

第240403期 - argo

其它gitops工具

以下是一些流行的GitOps工具:

  1. Flux – 用于Kubernetes的GitOps工具,可以自动化部署和管理。
  2. Jenkins X – 提供云原生应用程序的CI/CD解决方案,支持GitOps工作流程。
  3. Flagger – 用于Kubernetes的渐进式交付解决方案,与GitOps流程相结合。

这些工具可以帮助您实现自动化部署、持续交付、运行时管道以及持续监控,提高开发效率和基础设施的可靠性。


© 版权声明

相关文章