模擬環境舉例:
# 生成帶 OU 的證書配置文件
cat > csr.conf <<EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn[ dn ]
C = CN
ST = Beijing
L = Beijing
O = YourCompany, Inc. # 組織名稱 (必填)
OU = DevOps Department # 組織單位 (新增)
CN = yourdomain.com # 域名
EOF# 生成證書
openssl req -x509 -nodes -days 365 \-newkey rsa:2048 \-keyout tls.key \-out tls.crt \-config csr.conf# 創建 Kubernetes Secret
kubectl create secret tls tls-secret \--cert=tls.crt \--key=tls.key
ingress yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ssl-ingressannotations:# 強制HTTP重定向到HTTPS (Nginx Controller)nginx.ingress.kubernetes.io/force-ssl-redirect: "true"# 通用HTTPS重定向注解 (適用于大多數Controller)ingress.kubernetes.io/ssl-redirect: "true"# 如需同時支持HTTP/HTTPS而不重定向,請注釋掉以上兩行# 并添加: nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:tls: # TLS配置部分- hosts:- yourdomain.com # 您的域名- api.yourdomain.com # 其他子域名secretName: tls-secret # 證書Secret名稱rules:- host: yourdomain.comhttp:paths:- path: /pathType: Prefixbackend:service:name: main-serviceport: number: 80# 其他路由規則...- host: api.yourdomain.comhttp:paths:- path: /pathType: Prefixbackend:service:name: api-serviceport: number: 8080
# 檢查Ingress狀態
kubectl get ingress ssl-ingress# 查看TLS配置詳情
kubectl describe ingress ssl-ingress# 測試訪問
curl -I http://yourdomain.com # 應返回301重定向
curl -k https://yourdomain.com # 跳過證書驗證
curl --resolve yourdomain.com:443:<ingress-ip> https://yourdomain.com
# 強制HTTPS
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
# 會話保持(基于Cookie)
nginx.ingress.kubernetes.io/affinity: "cookie"