【翻译】如何获得强大的GitOps?美国国防部使用Flux和Helm

项目帖子由Weaveworks博客交叉发布,作者是Tamao Nakahara,Weaveworks的开发者体验主管和Flux社区经理。

挑战

国防部知道它需要GitOps。美国空军的首席软件官Nicolas M. Chaillan说:"美国国防部是地球上最大的组织,拥有超过10万名开发人员。在这种规模下,你必须针对节点漂移进行管理。我们知道,GitOps是管理漂移和实现自动化的解决方案。CNCF Flux项目是我们Platform One的明确选择,因为它为Helm提供了全面的支持,为我们的终端用户提供了一个强大的工具生态系统。请阅读以下内容,了解他们将Flux用于美国空军U-2喷气机等的情况

解决方案

Chaillan和团队创建了Platform One,这是一个DevSecOps平台,供他们的许多团队安全地构建软件。他们希望在国防部使用 "符合CNCF标准的Kubernetes集群和其他开源技术"。从Platform One的开始,国防部的团队将其设计为声明式的可重复性、自动化、集中配置管理,以及Kubernetes集群管理、工作负载和使用服务网格的零信任架构。

对于美国空军的首席软件官Nicolas M. Chaillan来说,"作为代码的配置是一颗闪亮的星星。CNCF Flux项目是我们Platform One的明确选择,因为它为Helm提供了全面的支持,为我们的终端用户提供了一个强大的工具生态系统。"

对Chaillan来说,"作为代码的配置是一颗闪亮的星星"。一旦他们建立了GitOps工具,他们就可以建立更好的自动化。

国防部是许多CNCF技术的早期采用者,Chaillan努力使国防部成为第一个成为CNCF成员的政府组织。除了由Flux和Helm驱动,Project One还利用了其他CNCF项目,包括Jaeger、Open Policy Agent(OPA)Gatekeeper、Fluentd/Fluentbit、Kubernetes、Prometheus、Argo和Envoy(Istio)。

影响

Flux和Helm是CNCF Tech Radar中仅有的两个被CD采用的项目!因此不难发现,在这两个项目中,Flux和Helm是最受欢迎的。因此,这两个项目的结合将提供一个奇妙的解决方案,这一点并不奇怪。

对于项目中的国防部承包商Tom Runyon(Defense Unicorns)和Josh Wolf(Rancher Federal)来说,Helm提供了对整个社区和企业支持的工具生态系统的访问。因为Flux使用本地Helm SDK(使用Flux的Source Controller和Helm Controller),团队可以利用庞大的Helm生态系统和经验来满足他们的GitOps需求。其结果是为国防部各部门(如空军、海军等)的终端用户提供了更丰富的体验。正如Wolf所说,"对于终端用户来说,使用Flux时,你所有的Helm知识和工具都会直接转移,因为发布仍然是作为使用所有Helm钩的Helm发布来部署的"。

承包商Tom Runyon和Josh Wolf相信Flux可以在空军U-2喷气机上部署和管理他们的软件。Wolf热情地说:"Flux的API非常稳定!"

Runyon和Wolf相信Flux在他们与Platform One、空军和海军的合作中部署和管理他们的软件。Runyon正在利用Flux和Platform One生态系统为美国海军创建简化的开发者工作流程,并在海军的船上部署应用程序。此外,Wolf在CNCF认证和沙盒分布k3s的基础上使用Flux,在军事系统(如空军的U-2 DragonLady)上进行轻量级、自动化和声明式的战术边缘部署。对他们来说,一个巨大的好处是,Flux提供了企业级的可靠性。正如Wolf热情地说:"Flux的API非常稳定!"Runyon补充说:"有了Flux,我们可以使升级无缝和定期。我们可以每周向Party Bus(Platform One的SaaS版本)推出更新。Flux强大的向后兼容性也意味着我们不需要Flux版本与其他软件版本之间的紧密耦合。与其他需要更紧密耦合的解决方案不同(对我们来说也是更多的工作),Flux给了我们自由,不需要把额外的周期放在这个挑战上。"该团队使用Flux来推出几乎所有的东西:Helm发布、Argo、Jaeger,以及几乎所有的工具。

该团队使用Flux来部署Helm图表,图表被用于所有的应用生命周期管理。此外,正如Wolf指出的,"Big Bang(Platform One的CD工具,使用Flux)同时使用Helm和运营商。我们也用Helm来安装这些"。

最后,监控是整个过程的关键部分,Flux与Prometheus和Grafana的集成对其至关重要。

对于Runyon和Wolf来说,改变游戏规则的Flux功能包括。

  • Flux的通知控制器。对于Runyon来说,"这对于管理系统、确保更新被推出,以及在事情失败时获得警报是非常好的。它提供了一个很好的用户体验"。
  • dependsOn。Wolf说:"这是我最喜欢的Flux功能!"因为 "它提供了完全声明式的定向异步依赖关系。你告诉它你想依赖什么,它就会为你算出依赖链。对于其他解决方案,你必须手动选择和管理依赖关系"。
  • 内置SOPS支持。很明显,对于政府来说,安全和机密是至关重要的。由于Flux对SOP有意见(不像其他解决方案要求你 "带来你自己的解决方案"),Wolf分享说,对SOP的支持帮助他们轻松地集中在一个解决方案上。
  • 价值观From。对于优先考虑敏感信息安全的政府来说,Flux使得所有的值都可以从秘密中加载,而不是提交给git。
  • postRenderers。这简化了团队在其他相当复杂的工作流程中面向客户的错误修复支持,包括维护定制工作和上游贡献。它是通过提供一个简单的补丁机制来实现的。正如Wolf所指出的,"Helm的postRenderer可能有点棘手,所以Flux的API让它更容易。PostRenderer的CRD非常干净"。

你如何开始使用Flux和Helm!

  • 按照我们的指南使用Flux与Helm:https://fluxcd.io/docs/use-cases/helm/
  • 用Prometheus和Grafana设置监控:https://fluxcd.io/docs/guides/monitoring/#install-flux-grafana-dashboards
  • Wolf和Runyon还推荐大家关注k8s@home社区,以获得更多的技巧(例如,在Flux支持下部署k3s的模板)。

关于Flux需要了解的主要内容。

  • Flux是一个让Kubernetes集群与配置源(如Git仓库)保持同步的工具,并在有新代码需要部署时自动更新配置。
  • Flux从一开始就使用Kubernetes的API扩展系统,并与Prometheus和Kubernetes生态系统的其他核心组件集成。在第二版中,Flux支持多租户,并支持同步任意数量的Git存储库,以及其他长期以来要求的功能。
  • Flux为微软、AWS、VMware、D2iQ、Weaveworks和其他公司的GitOps产品提供支持。10月20日,了解更多。
  • Flux为应用程序和基础设施提供GitOps。Flux和Flagger用金丝雀、功能标志和A/B推广来部署应用。Flux还可以管理任何Kubernetes资源。基础设施和工作负载的依赖性管理是内置的。
  • 只需推送到Git,Flux就能完成其他工作。Flux通过自动调节实现应用部署(CD)和(在Flagger的帮助下)逐步交付(PD)。Flux甚至可以为你推回Git,自动更新容器镜像到Git(镜像扫描和补丁)。
  • Flux与你现有的工具一起工作。Flux可以与你的Git提供商(GitHub、GitLab、Bitbucket,甚至可以使用与s3兼容的桶作为源)、所有主要的容器注册中心和所有CI工作流程提供商一起工作。
  • Flux与任何Kubernetes和所有常见的Kubernetes工具一起工作。Kustomize、Helm、RBAC和策略驱动的验证(OPA、Kyverno、接纳控制器),所以它只是简单地落到实处。
  • Flux实现了多租户(和 "多事物")。Flux通过冒充使用真正的Kubernetes RBAC,并支持多个Git存储库。多集群基础设施和应用程序通过集群API开箱即用。Flux可以使用一个Kubernetes集群来管理同一集群或其他集群中的应用,自行启动其他集群,并管理集群,包括生命周期和车队。
  • Flux的警报和通知。Flux提供健康评估、对外部系统的警报和外部事件处理。只要 "git push",就可以在Slack和其他聊天系统上得到通知。
  • Flux有一个可爱的社区,非常容易合作!

作者。Tamao Nakahara,Weaveworks的开发者体验主管和Flux社区经理。下一次Flux生态系统活动见www.gitopsdays.com。

你可能感兴趣的:(翻译)