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. # Default values for test.
  2. # This is a YAML-formatted file.
  3. # Declare variables to be passed into your templates.
  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. # We usually recommend not to specify default resources and to leave this as a conscious
  28. # choice for the user. This also increases chances charts run on environments with little
  29. # resources, such as Minikube. If you do want to specify resources, uncomment the following
  30. # lines, adjust them as necessary, and remove the curly braces after '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 仓库