Helm资源库最佳实践

JFrog支持
2021-09-14 15:09

如果有一种方法可以在Kubernetes上部署应用程序,就像在传统操作系统上使用apt和dnf这样的包管理器那样快速、简单,那不是很棒吗?幸运的是,有:它被称为它提供了一种高效的方式来打包Kubernetes应用程序,将它们存储在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 v3是唯一被积极支持的版本.但是Helm v2图表仍然存在,并且可能仍然需要在遗留环境中工作。更重要的是,在未来,新的Helm版本可能会要求组织同时使用Helm v3和Helm v4(或更高版本)图表。

在创建Helm存储库时,要考虑Helm版本支持,并确保存储库能够灵活地管理为您现在和将来需要的任何Helm版本创建的图表。

支持多个站点。如果您的开发人员和用户分散在多个地理位置上,那么您可以通过构建一个Helm存储库来最好地支持他们的需求,该存储库提供高级复制选项和集成灾难恢复,以便在存储库的一个实例失败时,图表仍然可用。

从Helm存储库中获得最大收益

如果您是第一次尝试使用Helm图表,那么像Artifact Hub这样的公共存储库是最好的起点。

但是,如果您需要一个面向企业的、功能丰富的Helm存储库,让您完全控制安全和灾难恢复,那么可以考虑Artifactory,它支持可以部署在任何数据中心或云中的Helm存储库,并使用Artifactory REST API或JFrog CLI实现自动化。