Ingress 配置双算法证书

最近更新时间:2025-01-07 10:49:12

我的收藏

简介

TKE Ingress 支持为一个域名配置一个证书,详情请参见 Ingress 证书配置。同时,也支持为一个域名配置两个不同算法类型的证书,如 ECC 和 RSA。本文将介绍其具体使用方法。

支持版本

配置双证书的 ingress-controller 组件版本最低要求为 v2.5.0。
说明:
您可以通过 提交工单 确认组件版本是否满足要求,也可以通过查看 kube-system 命名空间下 tke-service-controller-configtke-ingress-controller-config 的 ConfigMap 中的 VERSION 字段值来确认 service-controller 和 ingress-controller 版本。

注意事项

Secret 最多支持两个不同算法类型的证书。
Secret 的类型必须为Opaque
使用双算法证书的 Secret,暂不支持在 SSL 控制台自动更新,用户需要手动在 Secret 中替换新的证书 ID,TKE 会将新的证书 ID 同步到 CLB。
使用双算法证书的 Secret 暂时只支持配置给 Ingress,不支持特殊协议监听器。
Secret 需与 Ingress 在同一个命名空间。

操作步骤

1. 创建 Opaque 类型 Secret

方式1:使用 stringData 区域的键值对,value 会自动 BASE64 加密

apiVersion: v1
stringData:
qcloud_cert_id: CertID1,CertID2 # 填写证书ID,用逗号(英文)作为分隔符
kind: Secret
metadata:
name: kateway-cert
type: Opaque

方式2:用户手动对证书 ID 进行 BASE64 加密

apiVersion: v1
data:
qcloud_cert_id: (base64) CertID1,CertID2 # 提前对 CertID1,CertID2 BASE64加密
kind: Secret
metadata:
name: kateway-cert
type: Opaque

方式3:在控制台创建 Secret(无需手动 BASE64 加密)

通过控制台创建 Secret,操作步骤请参见 创建 Secret




2. 部署工作负载

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx:latest
imagePullPolicy: Always
name: nginx

3. 创建 NodePort Service

apiVersion: v1
kind: Service
metadata:
name: nginx
labels:
app: nginx
service: nginx
spec:
ports:
- name: http
port: 80
targetPort: 80
selector:
app: nginx
type: NodePort

4. 创建 Ingress,域名关联 Secret

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx
spec:
rules:
- host: <domain>
http:
paths:
- backend:
service:
name: nginx
port:
number: 80
path: /
pathType: ImplementationSpecific
tls:
- hosts: # 有 hosts 会默认开启 sni, 这样证书会配置到 rule 级别
- <domain>
secretName: <secret>
说明:
<domain> 替换成您的域名。
<secret> 替换成您的 Secret。