【问题标题】:Using self-signed certificates in nginx Ingress在 nginx Ingress 中使用自签名证书
【发布时间】:2021-04-07 21:47:14
【问题描述】:

我正在将服务迁移到 minikube 上的 kubernetes 集群中,这些服务在加载时需要自签名证书,通过 NodePort 访问服务可以完美运行并需要浏览器中的证书(下图),但通过入口访问host(该域在 /etc/hosts 中本地修改)为我提供了 Acme 的 Kubernetes Ingress Controller 假证书,并在没有任何消息的情况下跳过我的自签名证书。

SSL 应该在应用程序内部而不是 Ingress 中解密,并且 tls-acme: "false" 标志不起作用,仍然给我假证书

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    # decryption of tls occurs in the backend service
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
    nginx.ingress.kubernetes.io/tls-acme: "false"
spec:
  rules:
    - host: admin.domain.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: admin-service
                port:
                  number: 443

登录时应在加载前显示以下内容:

minikube 版本:v1.15.1

kubectl 版本:1.19

使用ingress-nginx 3.18.0

【问题讨论】:

  • 你可能需要enable ssl-passthrough,默认是禁用的。这是在 Ingress 对象中启用直通后端所必需的。尝试启用它并让我知道它是否有效
  • nginx.ingress.kubernetes.io/ssl-passthrough:入口中存在“true”,但它不起作用我还添加了 nginx.ingress.kubernetes.io/auth-tls-pass-证书到上游:“真”但仍然没有..
  • 你真的检查了我给你的链接吗?
  • 是的,我做到了,但是入口中的注释是否不足以更改 nginx 控制器中的值?我会尝试手动添加它
  • 我看到你创建了一个 github 问题:github.com/kubernetes/ingress-nginx/issues/6722 我将把这个链接留在这里。也许有一天它会帮助某人。无论如何,我尝试复制您的问题,并且可以确认这对我也不起作用。

标签: nginx ssl kubernetes nginx-ingress client-certificates


【解决方案1】:

问题原来是 Minikube 上的一个错误,并且还必须在 nginx 控制器中使用 enable ssl passthrough 标记 --enable-ssl-passthrough=true

我在 Minikube 集群版本 v1.15.1 和 kubernetes v1.19.4 上进行所有集群测试,其中 ssl 直通失败,在遵循 ingress-nginx GitHub issue 中的指导后,我发现问题没有以实物形式复制,所以我尝试将我的应用程序部署在一个新的 AWS 集群(k8 版本 1.18)上,一切都很好。

【讨论】:

    猜你喜欢
    • 2021-12-13
    • 2020-11-11
    • 1970-01-01
    • 2019-10-04
    • 2011-04-26
    • 1970-01-01
    • 2023-03-28
    • 2020-07-19
    相关资源
    最近更新 更多