【GitOps】Argo CD app of apps
Argo CD App of Apps 模式实践 本文介绍了如何使用Argo CD的App of Apps模式实现多应用声明式管理。通过创建根应用(root-application)来管理三个子应用(application1-3),每个子应用分别部署nginx、httpd和tomcat服务。关键步骤包括:1) 定义项目结构,包含根应用配置和子应用清单;2) 配置自动创建Namespace;3) 通
·
Argo CD app of apps
文章目录
一、什么是App Of Apps
- 你可以创建一个应用程序来创建其他应用程序,而其他应用程序又可以创建其他应用程序。这允许你以声明方式管理一组可以协同部署和配置的应用程序。这就是
App Of Apps - 官方文档:
https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/#app-of-apps
1.1、创建App Of Apps
# 项目结构
[root@master gitops-appofapps]# tree
.
├── application1
│ ├── deploy_nginx.yaml
│ └── service_nginx.yaml
├── application2
│ ├── deploy_httpd.yaml
│ └── service_httpd.yaml
├── application3
│ ├── deploy_tomcat.yaml
│ └── service_tomcat.yaml
├── apps
│ ├── application1.yaml
│ ├── application2.yaml
│ └── application3.yaml
└── root-app
└── root-application.yaml
5 directories, 10 files
-
项目仓库:
https://gitee.com/wzhcjt/argo-cd-apps.git -
新建
root-application.yaml
[root@master root-app]# cat root-application.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-application
namespace: argocd
spec:
project: default
source:
repoURL: http://192.168.93.102/root/gitops-appofapps.git
targetRevision: main
path: apps
# directory
directory:
recurse: false
destination:
server: https://192.168.93.145:6443
namespace: default
1.2、创建子项目app
- application1
[root@master apps]# cat application1.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: application1
namespace: argocd
spec:
destination:
namespace: application1
server: https://192.168.93.145:6443
project: default
source:
path: application1
repoURL: http://192.168.93.102/root/gitops-appofapps.git
targetRevision: main
directory:
recurse: true
syncPolicy:
syncOptions:
- CreateNamespace=true
- application2
[root@master apps]# cat application2.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: application2
namespace: argocd
spec:
destination:
namespace: application2
server: https://192.168.93.145:6443
project: default
source:
path: application2
repoURL: http://192.168.93.102/root/gitops-appofapps.git
targetRevision: main
directory:
recurse: true
syncPolicy:
syncOptions:
- CreateNamespace=true
- application3
[root@master apps]# cat application3.yaml
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: application3
namespace: argocd
spec:
destination:
namespace: application3
server: https://192.168.93.145:6443
project: default
source:
path: application3
repoURL: http://192.168.93.102/root/gitops-appofapps.git
targetRevision: main
directory:
recurse: true
syncPolicy:
syncOptions:
- CreateNamespace=true
1.3、创建部署资源清单
- application1
[root@master gitops-appofapps]# ls application1
deploy_nginx.yaml service_nginx.yaml
- application2
[root@master gitops-appofapps]# ls application2
deploy_httpd.yaml service_httpd.yaml
- application3
[root@master gitops-appofapps]# ls application3
deploy_tomcat.yaml service_tomcat.yaml
1.4、创建Application
[root@master gitops-appofapps]# cd root-app/
[root@master root-app]# kubectl apply -f root-application.yaml
application.argoproj.io/root-application created
1.5、Web UI界面查看
-
点击
SYNC
-
点击
SYNC按钮同步后,自动新建了3个Application服务
-
3个Application服务分别点击SYNC按钮进行同步
-
使用
kubectl查看集群详细信息
# 查看 Namespace
[root@master root-app]# kubectl get ns
NAME STATUS AGE
application1 Active 12m
application2 Active 12m
application3 Active 12m
argocd Active 43m
default Active 28d
ingress-nginx Active 41m
kube-node-lease Active 28d
kube-public Active 28d
kube-system Active 28d
# 查看 3 个 Application服务状态
[root@master root-app]# kubectl get pod,svc -n application1
NAME READY STATUS RESTARTS AGE
pod/nginx-deployment-54b6f7ddf9-kfzqd 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx ClusterIP 10.107.128.102 <none> 801/TCP 13m
[root@master root-app]# kubectl get pod,svc -n application2
NAME READY STATUS RESTARTS AGE
pod/httpd-deployment-5fcbcd9667-g8dct 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/httpd ClusterIP 10.111.121.145 <none> 802/TCP 13m
[root@master root-app]# kubectl get pod,svc -n application3
NAME READY STATUS RESTARTS AGE
pod/tomcat-deployment-865c47d857-26tbn 1/1 Running 0 13m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/tomcat ClusterIP 10.105.167.20 <none> 803/TCP 13m
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)