跳到主要内容

Helm Chart

APISIX 和 API7 Ingress Controller 都可以通过 Helm Chart 部署。二者使用不同的 Chart,并具有不同的配置项和部署方式。

已发布版本

产品兼容的控制器 Chart说明
APISIX Ingress Controller1.3.0包含 Gateway API 1.6 CRD、当前 APISIX CRD、RBAC,以及 v1 TCPRoute 和 UDPRoute Webhook 路径。
API7 Ingress Controller尚未发布Chart 0.1.25 安装的是上一版控制器,且不包含当前 CRD、RBAC 或 Webhook 配置。

APISIX Helm Chart

APISIX Helm Chart 提供基于 Helm 的 APISIX 组件安装和管理方式,可用于 Kubernetes 环境。

APISIX Ingress Controller 可以通过两种方式部署到 Kubernetes:

  • 嵌入 apisix/apisix Chart 中,通过设置 ingress-controller.enabled=true,将控制器作为 APISIX Helm release 的一部分启用。
  • 使用 apisix/apisix-ingress-controller Chart,将控制器作为单独的 Helm release 部署。

快速开始教程中的安装命令会先确认当前 APISIX umbrella Chart 包含 Ingress Controller Chart 1.3.0 或更高的兼容版本,再将 Controller 与 APISIX 部署到同一个 Helm release 中。Ingress Controller Pod 会与 APISIX 网关 Pod 一起运行,但 helm ls 中只会显示一个 Helm release(apisix)。

你也可以将 APISIX Ingress Controller 独立于 APISIX 部署为单独的 Helm release。以下示例展示如何将 APISIX Ingress Controller 作为独立 Helm release 安装:

# 替换为你的配置细节
helm install apisix-ingress-controller \
--create-namespace \
-n aic \
--set gatewayProxy.createDefault=true \
--set gatewayProxy.provider.controlPlane.auth.adminKey.value=edd1c9f034335f136f87ad84b625c8f1 \
--set apisix.adminService.namespace=aic \
--set apisix.adminService.name=apisix-admin \
--set apisix.adminService.port=9180 \
apisix/apisix-ingress-controller

API7 Helm Chart

API7 Helm Chart 提供基于 Helm 的 API7 组件安装和管理方式,可用于 Kubernetes 环境。

API7 Ingress Controller 拥有专用 Helm Chart,只用于部署 Ingress Controller 组件,并连接到已有 API7 控制面。与 APISIX Helm Chart 不同,API7 网关 Helm Chart 不提供在同一个 Helm release 中同时部署 Ingress Controller 的选项。

安装时,API7 控制台会引导你在 Kubernetes 上部署 Ingress Controller 和 API7 网关,并在过程中生成所需部署脚本和命令。

Helm Chart values

Helm Chart values 用于定义 Chart 配置。它们可以来自 Chart 默认的 values.yaml 文件,也可以在安装或升级时被覆盖,用于自定义部署。

查看默认 values

如需查看 Helm Chart 提供的默认 values,运行:

helm show values <repo>/<chart-name>

# 例如:
# helm show values apisix/apisix
# helm show values apisix/apisix-ingress-controller
# helm show values api7/api7-ingress-controller

该命令会显示 Chart 打包时包含的 values.yaml,不会读取已安装 Helm release 的 values。如需检查当前 Helm release 实际关联的 values,请使用 helm get values

权威 Chart 参考请查看 values 参考表(提供可读字段说明)和 values.yaml(提供原始默认值和嵌套结构):

查看已安装的 values

如需查看已安装 Helm release 关联的 Chart values(包括默认值和覆盖值),运行:

helm get values <release-name> -n <namespace> --all

该命令显示 Chart 输入值,但不显示 Chart 模板渲染后的 config.yaml

查看渲染后的控制器配置

如需检查已安装 release 渲染出的所有 Kubernetes 资源,运行:

helm get manifest <release-name> -n <namespace>

在渲染的清单中,找到 data 包含 config.yaml 的 ConfigMap,并记录其 metadata.name。运行以下命令可从实时 ConfigMap 输出 config.yaml

kubectl get configmap <configmap-name> -n <namespace> \
-o jsonpath='{.data.config\.yaml}{"\n"}'

Helm 清单显示该 release 渲染的内容;实时 ConfigMap 显示集群中当前存储的配置,包括在 Helm 之外所作的更改。

更新 values

如需更新 Helm release,可以编辑其有效 values 并应用变更。

首先,将 Helm release 的完整 values 导出到文件中,包括 Chart 默认值和所有覆盖值:

helm get values <release-name> -n <namespace> --all -o yaml > my-values.yaml

然后,打开导出的 values 文件并更新参数值。

最后,将更新后的 values 应用到 Helm release:

helm upgrade <release-name> <chart-name> -n <namespace> -f my-values.yaml

如果由 Argo CD 管理渲染出的 Chart 资源,或由 Flux 管理 Helm Release,请在 Git 中更新固定的 Chart 版本或 values,不要运行 helm upgrade。有关 CRD 所有权、Secret 处理、协调和回滚指南,请参阅为 GitOps 做准备