Kubernetes Nginx Ingress 可以连接 https pod 吗?

Man*_*uiz 0 nginx kubernetes nginx-ingress

我有三个 pod,里面有 HTTPS 服务器。我曾经通过 NodePort 服务访问它们。现在我部署了一个 Nginx Ingress 将它们全部集中在一个 IP 中。我注意到 Nginx Ingress 无法与 pod 中的 HTTPS 服务器连接,但如果我将其更改为 HTTP,则可以完美连接。

如何让 Ingress 与 Pod 中的 HTTPS 服务器连接?

我尝试配置一个 tls 秘密,并将其添加到 Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-ssl-secret: cert 

spec:
  rules:
  - http:
      paths:
        - path: /api-rest
          backend:
            serviceName: api-rest
            servicePort: 8080
        - path: /auth
          backend:
            serviceName: auth-entry
            servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

它不起作用。我仍然遇到 503 服务暂时不可用

我已经阅读过有关 SSL Passthrough 的内容,但我也无法使其工作。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"

spec:
  rules:
  - http:
      paths:
        - path: /api-rest
          backend:
            serviceName: api-rest
            servicePort: 8080
        - path: /auth
          backend:
            serviceName: auth-entry
            servicePort: 8080
Run Code Online (Sandbox Code Playgroud)

还是一样的503。

Arg*_*dhu 5

从此处的文档中,您需要添加此注释

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
Run Code Online (Sandbox Code Playgroud)

使用后端协议注释可以指示 NGINX 应如何与后端服务通信。(替换旧版本中的安全后端)有效值:HTTP、HTTPS、GRPC、GRPCS 和 AJP

默认情况下 NGINX 使用 HTTP