使用 ConfigMap 为 nginx-ingress 禁用 HSTS

Disable HSTS for nginx-ingress using ConfigMap

我已经尝试过其他相关解决方案,但似乎无法正常工作,我确定这只是命名空间问题或其他问题,因为这是我第一次使用 ConfigMaps,但有人可以帮忙吗我来解决为什么这不起作用?

这是我的入口:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: brushfire-ingress
  labels:
    helm.sh/chart: brushfire-0.1.0
    app.kubernetes.io/name: brushfire
    app.kubernetes.io/instance: brushfire
    app.kubernetes.io/version: "1.16.0"
    app.kubernetes.io/managed-by: Helm
  annotations:
    cert-manager.io/cluster-issuer: brushfire-issuer
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  tls:
    - hosts:
        - "brushfire.online"
        - "*.brushfire.online"
      secretName: tls-secret
  rules:
    - host: "brushfire.online"
      http:
        paths:
          - path: /(.*)
            backend:
              serviceName: brushfire
              servicePort: 80
    - host: "*.brushfire.online"
      http:
        paths:
          - path: /(.*)
            backend:
              serviceName: brushfire
              servicePort: 80

这是作为与 --namespace jorin-ssl

一起安装的 helm chart 的一部分安装的

我试过的ConfigMap是:

kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    app: brushfire-ingress
  name: nginx-configuration
  namespace: ingress-nginx # I've also tried `jorin-ssl`
data:
  hsts: "false"

但最终,HSTS 似乎总是存在:

$ curl -s -D- https://brushfire.online/ | grep -i Strict

returns

strict-transport-security: max-age=15724800; includeSubDomains

为简单起见,我很乐意在完全不使用 ConfigMap 的情况下执行此操作。有没有办法像我们使用 force-ssl-redirect 等那样使用注释来做到这一点?

ConfigMap 的名称必须与 nginx-ingress 控制器进程正在查找的名称相匹配。

nginx-ingress 进程将使用命令行上的 --configmap 参数来设置名称。此选项将在您的部署 yaml 中包含的容器规范中提供。

例如helm部署使用full name of the controller作为--configmap选项。