Compartir a través de

使用 Helm 将自承载网关部署到 Kubernetes

可用性

重要

此功能在 API 管理的“高级”和“开发人员”层中可用。

Helm 是一种开放源打包工具,有助于安装和管理 Kubernetes 应用程序的生命周期。 它使你可以管理 Kubernetes 图表,这些图表是预配置的 Kubernetes 资源包。

本文提供使用 Helm 将 Azure API 管理的自承载网关组件部署到 Kubernetes 群集的步骤。

重要

对 Azure API 管理自承载网关版本 0 和版本 1 容器映像的支持及其相应配置 API v1 将于 2023 年 10 月 1 日结束。 使用迁移指南,将自承载网关 v2.0.0 或更高版本与配置 API v2 结合使用。 在弃用文档中了解详细信息

先决条件

  • 创建 Kubernetes 群集,或访问现有群集。

    提示

    单节点群集非常适用于开发和评估目的。 将本地或云中的 Kubernetes 认证多节点群集用于生产工作负载。

添加 Helm 存储库

  1. 添加 Azure API 管理作为新的 Helm 存储库。

    helm repo add azure-apim-gateway https://azure.github.io/api-management-self-hosted-gateway/helm-charts/
    
  2. 更新存储库以提取最新的 Helm 图表。

    helm repo update
    
  3. 通过列出所有可用的图表来验证 Helm 配置。

    $ helm search repo azure-apim-gateway
    NAME                                            CHART VERSION   APP VERSION     DESCRIPTION
    azure-apim-gateway/azure-api-management-gateway 1.0.0           2.0.0           A Helm chart to deploy an Azure API Management ...
    

将自托管网关部署到 Kubernetes

  1. 选择“部署和基础结构”下的“网关” 。

  2. 选择要部署的自承载网关资源。

  3. 选择“部署”。

  4. “令牌”文本框中的新令牌是使用默认“Expiry”和“Secret Key”值自动生成的。 根据需要调整其中的一个或两个值,然后选择“生成”以创建新令牌。

  5. 记下“令牌”和“配置 URL”

  6. 使用 Helm 图表安装自承载网关

    helm install azure-api-management-gateway \
                 --set gateway.configuration.uri='<your configuration url>' \
                 --set gateway.auth.key='<your token>' \
                 azure-apim-gateway/azure-api-management-gateway
    
  7. 执行命令。 此命令指示 Kubernetes 群集:

    • 从 Microsoft Container Registry 下载自承载网关的映像并将其作为容器运行。
    • 配置容器以公开 HTTP (8080) 和 HTTPS (8081) 端口。

    重要

    默认情况下,网关使用 ClusterIP 服务,并且仅在群集内公开。 通过在安装过程中指定 Kubernetes 服务的类型,可以更改此内容。

    例如,通过添加 --set service.type=LoadBalancer,可以通过负载均衡器公开它

  8. 运行以下命令来检查网关 pod 是否正在运行。 Pod 名称将有所不同。

    kubectl get pods
    NAME                                           READY     STATUS    RESTARTS   AGE
    azure-api-management-gateway-59f5fb94c-s9stz   1/1       Running   0          1m
    
  9. 运行以下命令来检查网关服务是否正在运行。 你的服务名称和 IP 地址与此不同。

    kubectl get services
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)               AGE
    azure-api-management-gateway   ClusterIP   10.0.229.55     <none>        8080/TCP,8081/TCP     1m
    
  10. 返回 Azure 门户,确认刚刚部署的网关节点是否报告正常状态。

提示

使用 kubectl logs <gateway-pod-name> 命令查看自承载网关日志的快照。

后续步骤