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
参数说明
Parameter | Description |
---|---|
--cert | 公共证书文件的路径 |
--key | 私钥文件的路径 |
--namespace | Kong 安装的命名空间(默认是 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 管理。 |