跳到主要内容

Method for New TLS Configuration and Renewal for Gateway URL

本指南解释了如何为您的 API 网关 URL 配置 TLS,包括证书准备、Kubernetes 秘密创建,以及通过 Kong Ingress Controller 或 APIM 控制台应用 TLS。

初始 TLS 设置(新)

第一步是准备 TLS 证书和密钥。为此,您需要两个文件:

  • tls.crt: 公共证书文件
  • tls.key: 私钥文件

这些可以由 Let’s Encrypt 或私有证书颁发机构(CA)颁发。

将 TLS 证书注册为 Kubernetes 秘密

要在 Kubernetes 中使用您的 TLS 证书,您必须将其注册为在 Kong 安装的命名空间中的秘密(通常是 kong)。

命令行示例

kubectl create namespace kong   # 如果已经创建则跳过
kubectl create secret tls kong-gateway-cert \
--namespace kong \
--cert=certificate.crt \
--key=private.key

参数说明

ParameterDescription
--cert公共证书文件的路径
--key私钥文件的路径
--namespaceKong 安装的命名空间(默认是 kong)

示例秘密(原始 YAML 格式)

apiVersion: v1
kind: Secret
metadata:
name: kong-gateway-cert
namespace: kong
type: [kubernetes.io/tls](http://kubernetes.io/tls)
data:
tls.crt: <base64 编码的证书>
tls.key: <base64 编码的私钥>

将 TLS 应用到 Kong 网关

Kong 支持使用以下方式进行 TLS 配置:

  • Ingress
  • Gateway API
  • KongIngress

本节解释了基于 CLI 和 APIM 控制台的方法。

使用 Kong Ingress 控制器(默认)

使用之前创建的密钥定义一个启用 TLS 的 Ingress 资源。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kong-ingress
namespace: kong
annotations:
kubernetes.io/ingress.class: kong
spec:
tls:
- hosts:
- api.example.com
secretName: kong-gateway-cert
rules:
- host: api.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kong-proxy
port:
number: 80

重要说明:

Point Explanation
spec.tls.hosts定义要使用的 DNS(例如,api.example.com)
spec.tls.secretName必须与您创建的密钥名称匹配(kong-gateway-cert)
ingress.class必须是 kong(使用 Kong Ingress 控制器时的默认值)
backend.service.name如果通过 Helm 安装,通常为 kong-proxy

使用 APIM 控制台

您还可以通过 APIM 控制台直接应用证书。导航到 APIM 控制台 > 网关管理 > 网关详细信息屏幕 > 网关 URL 设置

输入字段:

  • 网关 URL:例如,pms.api.skapim.com
  • 全局基本路径:例如,/
  • 仅 HTTPS:切换为开启
  • TLS 证书:
    • tls.crt:粘贴完整证书内容
    • tls.key:粘贴完整私钥
  • Ingress 类:选择适当的类(例如,nginx,kong)

摘要

步骤任务
1获取并准备 TLS 证书(tls.crt,tls.key)
2创建 Kubernetes TLS 密钥
3通过 Kong Ingress 控制器或 APIM 控制台应用 TLS
4确认通过 HTTPS 和匹配的 DNS 访问网关
本指南确保通过 TLS 为您的 API 网关提供安全的 HTTPS 路由,无论是通过 CLI 由 DevOps 管理,还是通过 APIM 控制台的 UI 管理。