在 Qualys SSL Labs SSL 测试中获得 A+ 评级的秘技 2020版 - Kubernetes NGINX Ingress Controller

作者:gc(at)sysin.org,主页:www.sysin.org

4. Kubernetes NGINX Ingress Controller

本例部署的 ingress-nginx 版本为 0.30.0,经过测试只要使用受信任证书,即可获得 A+ 得分。

默认支持 HSTS,仅使用 TLS v1.2,Cipher 使用如下:

Cipher Suites
# TLS 1.2 (suites in server-preferred order)
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)   ECDH x25519 (eq. 3072 bits RSA)   FS 	128
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)   ECDH x25519 (eq. 3072 bits RSA)   FS 	256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)   ECDH x25519 (eq. 3072 bits RSA)   FS 	256

以下发布 Dashboard 为例,配置受信任 SSL 证书

查看 Dashboard 已经正常部署

kubectl get po,svc -n kubernetes-dashboard -o wide

部署受信任的 SSL 证书

# 创建 secret,在 ingress 不能直接使用证书需要转换为 secret 才能使用
kubectl create secret tls dashboard-ingress-tls --key dashboard-ingress.key --cert dashboard-ingress.crt -n kubernetes-dashboard
# 如果是用受信任的 ssl 证书,直接下载 .key 和 .crt 文件替换执行上述命令即可。
# 因为自签名证书访问存在浏览器兼容性问题,本例使用阿里云受信任 SSL 证书。
# 经过测试 pem 和 crt 格式相同,都是 PEM 格式,下载 pem 格式的改名 crt 即可。
# 查看 secret 内容
kubectl get secret dashboard-ingress-tls -n kubernetes-dashboard -o yaml
# 删除命令:
kubectl delete secret dashboard-ingress-tls -n kubernetes-dashboard

配置 ingress 转发文件

# vi dashboard-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
  name: kubernetes-dashboard-ingress
  namespace: kubernetes-dashboard #注意修改
spec:
  tls:
  - hosts:
    - k8s.sysin.cn
    secretName: dashboard-ingress-tls #上述创建的secret
  rules:
    - host: k8s.sysin.cn
      http:
 paths:
 - path: /
   backend:
     serviceName: kubernetes-dashboard
     servicePort: 443

host: 对应的域名
path: url上下文
backend: 后向转发到对应的 serviceName: 和 servicePort:

注意,dashboard 默认使用 https 提供服务,这里发布成功的关键是要添加 annotations 参数

  annotations:
    nginx.ingress.kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

部署:

kubectl apply -f dashboard-ingress.yaml

部署成功后可以通过域名访问:https://k8s.sysin.cn

猜你喜欢

转载自blog.csdn.net/netgc/article/details/108279189