在Nginx Ingress中为特定Ingress启用TLSv1和TLSv1.1

47次阅读
没有评论

问题描述

在AKS集群上尝试为特定的Ingress启用TLSv1和TLSv1.1。默认情况下,只启用了TLSv1.2。用户不想在整个集群上应用此配置,只想在特定的Web服务器服务上应用。根据文档,如果不想通过ConfigMap更改nginx配置,就需要添加以下注释:

nginx.ingress.kubernetes.io/proxy-ssl-protocols: TLSv1 TLSv1.1 TLSv1.2

但这没有效果。用户想知道是否可以通过注释实现这一点,是否做错了什么。

解决方案

请注意以下操作注意版本差异及修改前做好备份。
根据问答数据和你的知识库,提供两种解决方案,分别涉及使用Annotation和ConfigMap的方法。

使用Annotation配置TLS协议

  1. 请确保你正在使用的Nginx Ingress Controller镜像/标签为:gcr.io/jenkinsxio/nginx-ingress-controller:0.30.0

  2. 在你的Ingress资源中,添加以下Annotation配置,以启用所需的TLS协议版本:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: your_ingress_name
  annotations:
    nginx.ingress.kubernetes.io/proxy-ssl-protocols: "TLSv1 TLSv1.1 TLSv1.2"
spec:
  # Ingress规格的其他配置
  rules:
    - host: your.hostname.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: your_service_name
                port:
                  number: your_service_port

your_ingress_name替换为你的Ingress名称,your.hostname.com替换为你的域名,your_service_name替换为你的后端服务名称,your_service_port替换为你的后端服务端口。

  1. 保存并应用你的Ingress资源配置,例如:
kubectl apply -f your-ingress.yaml

使用ConfigMap配置TLS协议

  1. 请确保你正在使用的Nginx Ingress Controller镜像/标签为:gcr.io/jenkinsxio/nginx-ingress-controller:0.30.0

  2. 打开你的Nginx Ingress Controller的ConfigMap,可以通过以下命令找到和编辑:

kubectl edit configmap -n your-namespace nginx-configuration
  1. 在ConfigMap中找到ssl-protocols配置项,确保其值包含所需的TLS协议版本,如下所示:
data:
  ssl-protocols: "TLSv1 TLSv1.1 TLSv1.2"

your-namespace替换为你的命名空间。

  1. 保存并关闭ConfigMap编辑。

  2. 确保你的Ingress资源中不包含nginx.ingress.kubernetes.io/proxy-ssl-protocols的Annotation。

  3. 保存并应用你的ConfigMap配置,例如:

kubectl apply -f your-configmap.yaml

请根据你的实际情况选择使用Annotation配置TLS协议还是使用ConfigMap配置TLS协议。Annotation方法适用于在Ingress资源级别启用特定协议,而ConfigMap方法适用于全局设置。

注意:以上解决方案可能因版本差异或环境差异而有所不同,请在实施前做好备份,并根据你的实际情况进行适当调整。

参考文档:
nginx-configuration/configmap/#ssl-protocols
nginx-configuration/annotations/#backend-certificate-authentication

正文完