在前几节我们已经介绍来使用Kustomize文件结构,如果我们把刚刚的文件夹Push到Git后,我们就可以用其部署服务。
Argo CD与其他服务一样,都是Kubernetes Operation服务,有自己定制的2套CRD,分别为:
其中Application
用于定义服务,AppProject
用于定义项目。
我们首先定义一个项目:
apiVersion: argoproj.io/v1alpha1
kind: AppProject
metadata:
# 项目名
name: ops
namespace: argocd
spec:
# 目标
destinations:
# 此项目的服务允许部署的namespace,这里为全部
- namespace: '*'
# 此项目允许部署的集群,这里为默认集群,即为Argo CD部署的当前集群
server: <https://kubernetes.default.svc>
# 孤立资源警告
orphanedResources:
warn: true
# 允许的数据源
sourceRepos:
- [email protected]:gitops/argocd.git
AppProject支持很多配置,这里我们简单定义了一些需求,对于资源限制类则没有涉及,有兴趣可查看Argo CD文档:https://argoproj.github.io/argo-cd/operator-manual/
部署Argo CD服务的CRD是Application
,如果我们部署example这个服务,需要提交以下文件:
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
# 服务名
name: example
namespace: argocd
spec:
# 部署目标
destination:
# 部署到的namespace
namespace: future
# 部署到的集群
server: <https://kubernetes.default.svc>
# 使用ops项目配置
project: ops
# 数据源
source:
# 在Git中的path目录
path: filebrowser/overlays/dev
repoURL: [email protected]:gitops/argocd.git
targetRevision: HEAD
# 同步策略
syncPolicy:
automated:
# 允许删除低版本资源,如configMap更新后,清除上一个版本
prune: true
# 服务自愈
selfHeal: true
提交后,Argo CD就会按照我们的需求进行同步了。