跳到主要内容

Using Static PV When Deploying Kong API Gateway

概述

默认情况下,当使用 APIM UI 创建 Kong Gateway 时,持久卷声明 (PVC) 和持久卷 (PV) 是通过 StorageClass 动态提供的。然而,在某些环境中,您可能希望使用预先配置的静态 PV。本指南解释了如何使用静态 PV 配置和部署 Kong Gateway。

部署前准备

提前定义网关名称

决定并列出您计划部署的网关名称。

示例:

  • test-gw
  • dev-gw

手动创建绑定到静态 PV 的 PVC

PVC 命名约定:

data-<GATEWAY_NAME>-postgresql-0

示例:

data-test-gw-postgresql-0

确保 PVC 已预先绑定到适当的静态 PV。

部署网关并处理初始化迁移

通过 APIM UI 创建网关

在 APIM UI 中创建网关时,使用之前定义的相同名称(例如,test-gw)。

处理迁移 Pod 启动失败

  • 在初始化迁移步骤中,如果数据库尚未准备好,Pod 可能会失败。
  • 这通常是由于时序问题,Kong 在数据库完全初始化之前启动。

手动迁移执行

检查 Kong Pod 日志

通过以下日志之一确认 Pod 正在等待迁移:

kong migrations bootstrap

kong migrations up

向 Kong 容器添加睡眠命令

修改部署规范,添加自定义命令以保持 Kong 容器运行:

command: ["/bin/bash", "-c", "sleep 300000"]

这确保了Kong容器在init-container完成后进入睡眠状态。

执行手动迁移(在Pod内)

运行以下命令以手动执行迁移:

k exec -it -n <namespace> <kong-pod-name> -- kong migrations bootstrap
k exec -it -n <namespace> <kong-pod-name> -- kong migrations up

完成正常操作

移除睡眠并重启Kong:

  • 恢复或删除Deployment规格中的自定义命令。
  • 重启Kong Pod以允许其正常启动。

其他注意事项

  • 仅在初始网关设置期间使用静态PV时,此过程是必要的。
  • 在生产环境中,确保数据库在Kong启动之前完全准备好。使用适当的设置,例如:
    • initContainer
    • readinessProbe