1、kustomize
kustomize和helm一样是k8s的yaml包管理工具,相较于Helm不需要学习一套特定领域配置语言,且是k8s官方的并集成进了kubectl。 常见的术语: kustomization 指的是 kustomization.yaml 文件,或者指的是包含 kustomization.yaml 文件的目录以及它里面引用的所有相关文件路径; base 指的是一个 kustomization , 任何的 kustomization 包括 overlay,都可以作为另一个 kustomization 的 base (简单理解为基础目录)。base 中描述了共享的内容,如资源和常见的资源配置; overlay 是一个 kustomization, 它修改(并因此依赖于)另外一个 kustomization,没有 base, overlay 无法使用,并且一个 overlay 可以用作 另一个 overlay 的 base(基础)。简而言之,overlay 声明了与 base 之间的差异,通过 overlay 来维护基于 base 的不同 variants(变体),例如开发、QA 和生产环境的不同 variants; variant 是在集群中将 overlay 应用于 base 的结果。例如开发和生产环境都修改了一些共同 base 以创建不同的 variant。这些 variant 使用相同的总体资源,并与简单的方式变化,例如 deployment 的副本数、ConfigMap使用的数据源等。简而言之,variant 是含有同一组 base 的不同 kustomization; resource 是描述 k8s API 对象的 YAML 或 JSON 文件的相对路径,即指向一个声明了 kubernetes API 对象的 YAML 文件 patch是修改文件的一般说明,指向一个声明了 kubernetes API patch 的 YAML 文件
2、Argo CD
????????Argo CD是遵循声明式 GitOps 理念的持续部署CD工具,而持续集成CI一般是交给 Jenkins。 ????????ArgoCD与Flux CD的主要职责都是监听Git Repositories变化,对比当前应用运行状态与期望运行状态的差异,然后自动拉取变更并同步部署到集群环境中。 ????????Argo CD主要包括ArgoCD API server(提供API给Web UI,CLI以及其他CI/CD做系统调用或集成)、repossitory server(维护一个Git Repo中应用编排文件的本地缓存)、Application Controller(k8s Controller,主要是持续监听应用当前运行状态与期望状态(Git Repo中描述的状态)的不同,并自动检测应用OutOfSync状态并根据Sync测试执行下一步动作)。 ????????且Argo CD集成了CLI和Web UI,且支持管理多集群,以secret的方式存储外部集群的凭证。
3、Flux CD ????????主要包括Flux daemon, 主要职责是持续监听用户配置的Git Repo中Kubernetes资源编排文件的变化,然后同步部署到集群中; 它还可以检测容器镜像仓库中image更新,提交更新到用户Git Repo,然后同步部署到集群中。 以上同步部署动作均基于用户设置的策略。 ????????Flux CD目前不提供UI,且不支持多集群管理,需要在每个集群中部署Flux CD组件。
|