Helm Repository最佳实践
如果有一种方法可以在Kubernetes上部署应用程序,就像使用apt和dnf这样的包管理器在传统操作系统上部署应用程序一样快速和轻松,那不是很好吗?幸运的是,有:它叫做舵它提供了一种有效的方式来打包Kubernetes应用程序,将它们存储在Helm存储库中,并将它们部署到集群中。
下面是Helm工作原理的入门教程,以及在Helm存储库中使用Helm图表时应该考虑哪些最佳实践。
Helm是什么?
简单地说,Helm是一个开源平台在Kubernetes上打包和部署应用程序。
Helm允许开发人员将应用程序打包成一种称为图表的格式。Helm图包含将应用程序(或一组应用程序)部署到Kubernetes所需的所有文件和配置数据。
你不需要使用Helm来部署Kubernetes应用程序。您也可以使用kubectl手动完成。但是,如果您有许多应用程序要部署,并且需要在它们更新时频繁地重新部署它们,那么手动执行这些操作将是乏味且低效的。Helm解决了这个问题,它允许快速部署复杂的应用程序,如果需要,还可以自动部署。
什么是Helm存储库?
一个执掌库是舵手海图的集合。开发人员可以将图表上传到Helm存储库,用户可以从那里下载它们。
使用存储库共享图表的能力是Helm的另一个优势。Helm存储库使开发人员可以轻松地与用户共享他们的应用程序,并使用户可以在一个集中的位置找到他们需要的应用程序。如果没有Helm存储库,用户在寻找在Kubernetes上部署应用程序所需的图表时,将不得不手动搜索GitHub。
工件中心(以前称为Helm Hub)可能是使用最广泛的Helm存储库。它是一个开放源码存储库,由云原生计算基础是一个主要的开源社区组织。
然而,Artifact Hub绝不是唯一一个分享和下载Helm图表的地方。您还可以使用类似的平台创建自己的Helm存储库JFrog Artifactory,它提供了访问控制特性、集成和其他所有Helm存储库都无法提供的增强功能。
使用Helm存储库的最佳实践
无论您使用哪种平台,在创建和管理Helm存储库并管理其中的图表时,都需要考虑几个关键因素。
粒度访问控制。除非您的应用程序是为公众使用而设计的,否则您应该配置细粒度访问控制,以便可以限制谁能够下载和运行它。单个Helm存储库可以包含需要不同访问级别的图表。例如,有些可能用于您业务的一个单位,而另一些则应该仅对另一个单位的人员可用,或者有些可能用于外部用户,而另一些则用于您的内部工程团队。
粒度访问控制允许您准确定义谁可以使用哪些图表,并避免与不应该具有访问权限的各方共享图表。
本地和远程存储库聚合。在某些情况下,您可能希望使用来自第三方存储库的Helm图表,同时维护您自己的本地图表存储库。要做到这一点,最安全和有效的方法是将两种类型的存储库(远程和本地存储库)聚合到一个“虚拟”存储库中。
这样,您的开发人员和用户就可以从虚拟存储库上传和下载他们需要的任何包,而不必在不同的Helm存储库之间导航。虚拟存储库还允许您对存储在远程存储库中的图表应用额外的安全保护,如果您的用户直接从这些存储库下载图表,这是不可能的。
舵机版本支持。Helm框架正在积极开发中。从历史上看,每个新版本都对Helm图表的打包和部署方式带来了重大变化。
目前,Helm v3是唯一受到积极支持的版本。但是Helm v2图表仍然存在,并且可能仍然需要使用遗留环境。更重要的是,在未来,更新的Helm版本可能会要求组织同时使用Helm v3和Helm v4(或更高版本)图表。
在创建Helm存储库时,请考虑Helm版本支持,并确保存储库能够灵活地管理为您现在和将来需要的任何版本的Helm创建的图表。
支持多个站点。如果您的开发人员和用户分散在多个地理站点,那么您可以通过构建提供高级复制选项和集成灾难恢复的Helm存储库来最好地支持他们的需求,这样即使存储库的一个实例失败,图表仍然可用。
充分利用Helm存储库
如果您是第一次使用Helm图表,那么像Artifact Hub这样的公共存储库是最好的起点。
但是,如果您需要一个企业级的、功能丰富的Helm存储库,它可以让您完全控制安全性和灾难恢复,请考虑Artifactory,它支持可以部署在任何数据中心或云中的Helm存储库,并使用Artifactory REST API或JFrog CLI实现自动化。