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
通过如下方式获取密码
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
开启自动同步
然后在gitlab中修改
提交后,argo会自动更新
回滚机制
操作之前需要线关闭自动更新
其它gitops工具
以下是一些流行的GitOps工具:
- Flux – 用于Kubernetes的GitOps工具,可以自动化部署和管理。
- Jenkins X – 提供云原生应用程序的CI/CD解决方案,支持GitOps工作流程。
- Flagger – 用于Kubernetes的渐进式交付解决方案,与GitOps流程相结合。
这些工具可以帮助您实现自动化部署、持续交付、运行时管道以及持续监控,提高开发效率和基础设施的可靠性。
© 版权声明
文章版权归作者所有,未经允许请勿转载。