在前几节我们已经介绍来使用Kustomize文件结构,如果我们把刚刚的文件夹Push到Git后,我们就可以用其部署服务。

Argo CD与其他服务一样,都是Kubernetes Operation服务,有自己定制的2套CRD,分别为:

其中Application用于定义服务,AppProject用于定义项目。


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/


Application

部署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就会按照我们的需求进行同步了。