Helm chart指南-系列(4)- Chart Repository 存储库指南

简介: 本节介绍如何创建和使用Helm chart repo。在高层次上,chart库是可以存储和共享打包chart的位置。 官方chart库由Kubernetes Charts维护 ,我们欢迎参与贡献。Helm还可以轻松创建和运行自己的chart库。

本节介绍如何创建和使用Helm chart repo。在高层次上,chart库是可以存储和共享打包chart的位置。


官方chart库由Kubernetes Charts维护 ,我们欢迎参与贡献。Helm还可以轻松创建和运行自己的chart库。本指南讲解了如何做到这一点。

我在网址 https://whmzsu.github.io/helm-doc-zh-cn/ 不断更新,同时也会搬运到这里,大家有兴趣加入https://github.com/whmzsu/helm-doc-zh-cn/的可以给我提交意见和建议。

前提条件

  • 阅读快速入门指南Quickstart
  • 通读chart文件Charts

创建chart库

chart库是带有一个index.yaml文件和任意个打包cahrt的HTTP服务器。当准备好分享chart时,首选方法是将其上传到chart库。

注意: 对于Helm 2.0.0,chart库没有任何内部认证。 在GitHub中有一个跟踪进度的问题issue tracking progress

由于chart库可以是任何可以提供YAML和tar文件并可以回答GET请求的HTTP服务器,因此当托管自己的chart库时,很多选择。例如,可以使用Google云端存储(GCS)存储桶,Amazon S3存储桶,Github Pages,甚至可以创建自己的Web服务器。

chart库结构

chart库由打包的chart和一个名为的特殊文件组成, index.yaml其中包含chart库中所有chart的索引。通常,index.yaml描述的chart也是托管在同一台服务器上,源代码文件也是如此。

例如,chart库的布局https://example.com/charts 可能如下所示:

charts/ | |- index.yaml
 | |- alpine-0.1.2.tgz | |- alpine-0.1.2.tgz.prov

这种情况下,索引文件包含有关一个chart(Alpine chart)的信息,并提供该chart的下载URL https://example.com/charts/alpine-0.1.2.tgz

不要求chart包与index.yaml文件位于同一台服务器上 。但是,发在一起这样做通常是最简单的。

索引文件

索引文件是一个叫做yaml文件index.yaml。它包含一些关于包的元数据,包括chart的Chart.yaml文件的内容。一个有效的chart库必须有一个索引文件。索引文件包含有关chart库中每个chart的信息。helm repo index命令将根据包含打包的chart的给定本地目录生成索引文件。

下面一个索引文件的例子:

apiVersion: v1
entries:
 alpine: - created: 2016-10-06T16:23:20.499814565-06:00
 description: Deploy a basic Alpine Linux pod
 digest: 99c76e403d752c84ead610644d4b1c2f2b453a74b921f422b9dcb8a7c8b559cd
 home: https://k8s.io/helm
 name: alpine
 sources: - https://github.com/kubernetes/helm
 urls: - https://technosophos.github.io/tscharts/alpine-0.2.0.tgz
 version: 0.2.0 - created: 2016-10-06T16:23:20.499543808-06:00
 description: Deploy a basic Alpine Linux pod
 digest: 515c58e5f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cd78727
 home: https://k8s.io/helm
 name: alpine
 sources: - https://github.com/kubernetes/helm
 urls: - https://technosophos.github.io/tscharts/alpine-0.1.0.tgz
 version: 0.1.0
 nginx: - created: 2016-10-06T16:23:20.499543808-06:00
 description: Create a basic nginx HTTP server
 digest: aaff4545f79d8b2913a10cb400ebb6fa9c77fe813287afbacf1a0b897cdffffff
 home: https://k8s.io/helm
 name: nginx
 sources: - https://github.com/kubernetes/charts
 urls: - https://technosophos.github.io/tscharts/nginx-1.1.0.tgz
 version: 1.1.0
generated: 2016-10-06T16:23:20.499029981-06:00

生成的索引和包可以从基本的网络服务器提供。可以使用helm serve启动本地服务器,在本地测试所有内容。

$ helm serve --repo-path ./charts
Regenerating index. This may take a moment. Now serving you on 127.0.0.1:8879

上面启动了一个本地web服务器,为它在./charts目录找到的chart提供服务。serve命令将在启动过程中自动生成一个index.yaml文件。

托管chart库

本部分介绍了提供chart库的几种方法。

Google云端存储

第一步是创建GCS存储桶。我们会给我们称之为fantastic-charts

创建一个GCS桶

Create a GCS Bucket图片 – Create a GCS Bucket

接下来,通过编辑存储桶权限使存储桶公开。

编辑权限

Edit Permissions图片 – Edit Permissions

插入此行item来公开存储bucket

开放Bucket

Make Bucket Public图片 – Make Bucket Public

恭喜,现在你有一个空的GCS bucket准备好给chart提供服务!

可以使用Google Cloud Storage命令行工具或使用GCS Web UI上传chart库。这是官方Kubernetes Charts存储库托管其chart的技术,因此如果遇到困难,可能需要查看该项目peek at that project

注意:可以通过此处的HTTPS地址方便的访问公开的GCS存储桶https://bucket-name.storage.googleapis.com/

JFrog Artifactory

还可以使用JFrog Artifactory来设置chart库。在此处阅读更多关于JFrog Artifactory和chart库的信息

Github Pages示例

以类似的方式,可以使用GitHub Pages创建chart库。

GitHub允许两种不同的方式提供静态网页:

  • 通过配置一个项目来提供其`docs/“目录的内容
  • 通过配置一个项目来为特定分支提供服务

我们会采取第二种方法,尽管第一种方法很简单。

第一步是创建你的gh-pages分支。可以在本地做到这一点。

$ git checkout -b gh-pages

或者通过使用网络浏览器在Github存储库上的分支按钮:

Create Github Pages branch图片 – Create Github Pages branch

接下来,需要确保gh-pages分支设置为Github Pages,点击repo Settings并向下滚动到Github Pages部分并按照以下设置:

Create Github Pages branch图片 – Create Github Pages branch

默认情况下,源通常设置为gh-pages分支。如果这不是默认设置,那么请选择gh-pages。

也可以在那里使用自定义域名。

并检查是否勾选了强制使用HTTPS,以便在提供chart时使用HTTPS。

这样的设置中,可以使用master分支来存储chart代码,并将 gh-pages分支作为chart库,例如: https://USERNAME.github.io/REPONAME。演示TS Charts库可以通过https://technosophos.github.io/tscharts/访问。

普通的web服务器

要配置普通Web服务器来服务Helm chart,只需执行以下操作:

  • 将索引和chart置于服务器目录中
  • 确保index.yaml可以在没有认证要求的情况下访问
  • 确保yaml文件的正确内容类型(text/yamltext/x-yaml

例如,如果想在$WEBROOT/charts以外的目录为chart提供服务,请确保Web根目录中有一个charts/ 目录,并将索引文件和chart放入该文件夹内。

管理chart库

现在已有一个chart存储库,本指南的最后一部分将介绍如何维护该库中的chart。

将chart存储在chart库中

现在已有一个chart存储库,让我们上传一个chart和一个索引文件到存储库。chart库中的chart必须正确打包(helm package chart-name/)和版本(遵循SemVer 2标准)。

接下来的这些步骤是一个示例工作流程,也可以用你喜欢的任何工作流程来存储和更新chart库中的chart。

准备好打包chart后,创建一个新目录,并将打包chart移动到该目录。

$ helm package docs/examples/alpine/
$ mkdir fantastic-charts
$ mv alpine-0.1.0.tgz fantastic-charts/
$ helm repo index fantastic-charts --url https://fantastic-charts.storage.googleapis.com

最后一条命令采用刚创建的本地目录的路径和远程chart库的URL,并在给定的目录路径中生成index.yaml

现在可以使用同步工具或手动将chart和索引文件上传到chart库。如果使用Google云端存储,请使用gsutil客户端查看此示例工作流程。对于GitHub,可以简单地将chart放入适当的目标分支中。

新添加chart添加到现有存储库

每次将新chart添加到存储库时,都必须重新生成索引。helm repo index命令将index.yaml从头开始完全重建该文件,但仅包括它在本地找到的chart。

可以使用--merge标志向现有index.yaml文件增量添加新chart(在使用远程存储库(如GCS)时,这是一个很好的选择)。运行helm repo index --help以了解更多信息,

确保上传修改后的index.yaml文件和chart。如果生成了出处provenance文件,也要上传。

与他人分享chart

准备好分享chart时,只需让别人知道存储库的URL是什么就可以了。

他们将通过helm repo add [NAME] [URL]命令将仓库添加到他们的helm客户端,并可以起一个带有任何想用来引用仓库的名字。

$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com

如果chart由HTTP基本认证支持,也可以在此处提供用户名和密码:

$ helm repo add fantastic-charts https://fantastic-charts.storage.googleapis.com --username my-username --password my-password
$ helm repo list
fantastic-charts https://fantastic-charts.storage.googleapis.com

注意: 如果存储库不包含有效信息库index.yaml文件,则添加不会成功。

之后,用户将能够搜索chart。更新存储库后,他们可以使用该helm repo update命令获取最新的chart信息。

原理是helm repo addhelm repo update命令获取index.yaml文件并将它们存储在 $HELM_HOME/repository/cache/目录中。这是helm search 找到有关chart的信息的地方。

本文转自kubernetes中文社区-Helm chart指南-系列(4)- Chart Repository 存储库指南

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
Kubernetes 关系型数据库 MySQL
容器 & 服务:Helm Charts配置文件分析
chart 是 Helm 的应用打包格式。chart 由一系列文件组成,这些文件描述了 K8s 部署应用时所需要的资源,比如 Service、Deployment、PersistentVolumeClaim、Secret、ConfigMap 等。 chart可繁可简,即可以只用于部署一个单独的服务,例如mysql、nginx等等,也可以用于部署整个应用,例如由HTTP服务、数据库、缓存、中间件等共同构成的复杂应用。
325 0
|
Kubernetes 搜索推荐 应用服务中间件
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
chart:代表helm包,包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。 Repository(仓库):用来存放和共享 charts 的地方。 Release :运行在 Kubernetes 集群中的 chart 的实例,一个 chart 通常可以在同一个集群中安装多次,每一次安装都会创建一个新的 release。
426 1
【kubernetes】新版helm3的三大概念+快速指南+自定义charts模板
|
8月前
|
Kubernetes 安全 Shell
Helm安装部署/添加chart公共仓库/本地仓库搭建
Helm 是 Kubernetes 的包管理器,用于管理charts(即预先配置的Kubernetes资源包)。Helm主要具有以下功能: 1. 软件打包格式:将相关Kubernetes资源打包生成标准的chart软件包格式。 2. 仓库管理:支持将chart上传到仓库进行存储、版本管理、下载等。 3. 发布管理:管理chart的不同版本,控制chart发布更新。 4. 部署安装:在Kubernetes集群中安装、升级和回滚软件。 5. 模板语法:使用模板语法进行参数化安装和配置。 6. 值管理:管理chart中参数值的区分设置。 7. 安全签名:使用数字签名确保chart来源的安全可信。
865 0
|
域名解析 Kubernetes JavaScript
如何开发一个完整的Helm charts应用实例(1)
如何开发一个完整的Helm charts应用实例(1)
如何开发一个完整的Helm charts应用实例(1)
|
9月前
|
存储 Kubernetes 监控
Helm Dashboard GUI 工具解析
Hello folks,今天我们介绍一下由 Komodor 推出的开源项目 Helm-Dashboard。也是继 ValidKube 之后的第二个开源项目。
113 0
|
数据安全/隐私保护 对象存储 容器
helm 3.7推送和拉取Chart
helm 3.7推送和拉取Chart
helm 3.7推送和拉取Chart
|
存储 Kubernetes Go
helm chart编写入门
helm chart编写入门
1863 0
|
存储 Kubernetes Linux
如何开发一个完整的Helm charts应用实例(2)
如何开发一个完整的Helm charts应用实例(2)
如何开发一个完整的Helm charts应用实例(2)
|
JSON 数据格式
helm 将yaml文件转换json的插件helm-schema-gen
helm 将yaml文件转换json的插件helm-schema-gen
|
存储 Kubernetes 关系型数据库
helm charts 入门指南(2)
helm charts 入门指南(2)

热门文章

最新文章