将 Kubernetes Ingress 与 HTTPS 服务结合使用

将 Kubernetes Ingress 与 HTTPS 服务结合使用

我正在学习 Kubernetes,并希望在我的集群上部署 Kubernetes 仪表板。默认情况下,仪表板位于端口上30941并需要 HTTPS 连接。然后可以通过我的集群 IP 访问。我想为此设置一个域,我正在为此使用下面的配置,利用--enable-ssl-passthrough

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "0"
    nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"
  name: dashboard-ingress
  namespace: kubernetes-dashboard
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - dashboard.mydomain.nl
    secretName: kubernetes-dashboard-certs
  rules:
  - host: dashboard.mydomain.nl
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: kubernetes-dashboard
            port:
              number: 30941

这是可行的,但正如所述,速度真的很慢文档

此功能通过拦截配置的 HTTPS 端口(默认值:443)上的所有流量并将其移交给本地 TCP 代理来实现。这会完全绕过 NGINX,并带来不可忽略的性能损失。

我知道在这种情况下您可以使用 HTTP 服务,但如果您别无选择怎么办?我无法想象 Kubernetes 没有针对此问题的原生解决方案。您通常如何做到这一点,或者是否有解决方法使其像正常方式一样快?

相关内容