app of apps 模式介绍
通过一个app来管理其他app,当有多个项目要发布创建多个app比较麻烦,此时可以创建一个管理app,管理app创建后会创建其他app。比较适合项目环境迁移的场景。
App of Apps模式优点:
- 统一管理:通过一个主要的应用程序,你可以统一管理多个应用程序的生命周期。这样可以简化管理和操作,减少重复劳动。
- 集中控制:"App of Apps"应用程序充当了一个控制中心,你可以通过它来管理整个应用程序集群的状态和配置。这样可以提高集中控制的能力,并确保所有应用程序的一致性。
- 版本控制:通过将应用程序定义文件存储在Git仓库中,你可以轻松地跟踪和管理应用程序的版本。这样可以实现版本控制和回滚,确保应用程序的可追溯性和可控性。
- 多环境支持:"App of Apps"模式可以支持多个环境(如开发、测试和生产环境)的部署。通过在主要应用程序中定义不同环境的应用程序配置,可以轻松地在不同环境中部署和管理应用程序。
app如何管理app
-
查看配置app对应的k8s资源内容
kubectl get applications --all-namespaces
-
查看应用程序资源的内容:
kubectl get application <application-name> -n <namespace> -o yaml
核心配置如下,下述配置其实就是在ArgoCD创建应用对应的配置
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: app1
namespace: argocd
spec:
destination:
namespace: directory-guestbook-1
server: https://kubernetes.default.svc
project: default
source:
path: guestbook
repoURL: https://gitee.com/gmkk/argocd-example-apps.git
targetRevision: main
directory:
recurse: true
syncPolicy:
syncOptions:
- CreateNamespace=true
管理app通过配置文件描述,有helm和kustomize方式,如下:
helm方式管理
官网案例参考:https://github.com/argoproj/argocd-example-apps
注意:在Argocd中创建应用需要选择Helm
kustomize方式管理
案例参考:https://gitee.com/gmkk/argocd-example-apps
rootapp:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: root-application
namespace: argocd
spec:
project: default
source:
repoURL: https://gitee.com/gmkk/argocd-example-apps.git
targetRevision: HEAD
# 其他Application路径
path: ./app-of-apps/apps
# directory
directory:
recurse: false
destination:
server: https://kubernetes.default.svc
namespace: default