Helm 开发者指南

您可以上传应用的 Helm Chart 至 KubeSphere,以便具有必要权限的租户能够进行部署。本教程以 NGINX 为示例演示如何准备 Helm Chart。

安装 Helm

如果您已经安装 KubeSphere,那么您的环境中已部署 Helm。如果未安装,请先参考 Helm 文档安装 Helm。

创建本地仓库

执行以下命令在您的机器上创建仓库。

  1. mkdir helm-repo
  1. cd helm-repo

创建应用

使用 helm create 创建一个名为 nginx 的文件夹,它会自动为您的应用创建 YAML 模板和目录。一般情况下,不建议修改顶层目录中的文件名和目录名。

  1. $ helm create nginx
  2. $ tree nginx/
  3. nginx/
  4. ├── charts
  5. ├── Chart.yaml
  6. ├── templates
  7. ├── deployment.yaml
  8. ├── _helpers.tpl
  9. ├── ingress.yaml
  10. ├── NOTES.txt
  11. └── service.yaml
  12. └── values.yaml

Chart.yaml 用于定义 Chart 的基本信息,包括名称、API 和应用版本。有关更多信息,请参见 Chart.yaml 文件

Chart.yaml 文件的示例:

  1. apiVersion: v1
  2. appVersion: "1.0"
  3. description: A Helm chart for Kubernetes
  4. name: nginx
  5. version: 0.1.0

当您向 Kubernetes 部署基于 Helm 的应用时,可以直接在 KubeSphere 控制台上编辑 values.yaml 文件。

values.yaml 文件的示例:

  1. # 默认值仅供测试使用。
  2. # 此文件为 YAML 格式。
  3. # 对要传入您的模板的变量进行声明。
  4. replicaCount: 1
  5. image:
  6. repository: nginx
  7. tag: stable
  8. pullPolicy: IfNotPresent
  9. nameOverride: ""
  10. fullnameOverride: ""
  11. service:
  12. type: ClusterIP
  13. port: 80
  14. ingress:
  15. enabled: false
  16. annotations: {}
  17. # kubernetes.io/ingress.class: nginx
  18. # kubernetes.io/tls-acme: "true"
  19. path: /
  20. hosts:
  21. - chart-example.local
  22. tls: []
  23. # - secretName: chart-example-tls
  24. # hosts:
  25. # - chart-example.local
  26. resources: {}
  27. # 通常不建议对默认资源进行指定,用户可以去主动选择是否指定。
  28. # 这也有助于 Chart 在资源较少的环境上运行,例如 Minikube。
  29. # 如果您要指定资源,请将下面几行内容取消注释,
  30. # 按需调整,并删除 'resources:' 后面的大括号。
  31. # limits:
  32. # cpu: 100m
  33. # memory: 128Mi
  34. # requests:
  35. # cpu: 100m
  36. # memory: 128Mi
  37. nodeSelector: {}
  38. tolerations: []
  39. affinity: {}

请参考 Helm 规范nginx 文件夹中的文件进行编辑,完成编辑后进行保存。

创建索引文件(可选)

要在 KubeSphere 中使用 HTTP 或 HTTPS URL 添加仓库,您需要事先向对象存储上传一个 index.yaml 文件。在 nginx 的上一个目录中使用 Helm 执行以下命令,创建索引文件。

  1. helm repo index .
  1. $ ls
  2. index.yaml nginx

备注

  • 如果仓库 URL 是 S3 格式,您向仓库添加应用时会自动在对象存储中创建索引文件。

  • 有关何如向 KubeSphere 添加仓库的更多信息,请参见导入 Helm 仓库

打包 Chart

前往 nginx 的上一个目录,执行以下命令打包您的 Chart,这会创建一个 .tgz 包。

  1. helm package nginx
  1. $ ls
  2. nginx nginx-0.1.0.tgz

上传您的应用

现在您已经准备好了基于 Helm 的应用,您可以将它上传至 KubeSphere 并在平台上进行测试。

另请参见

Helm 规范

导入 Helm 仓库