首页 > 解决方案 > 带有 tls 主机的 k8s 入口多个

问题描述

我正在尝试在 gke 上配置一个入口,以便在两个不同的主机上提供两个不同的 ssl 证书。

我的 Ssl 证书存储为机密,我的 k8s 版本是 1.10.9-gke.0(我目前正在尝试升级到 1.11 以查看是否有任何改变)。

这是我的入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/backends: '{"k8s-be-30086--b1574396a1d7162f":"HEALTHY","k8s-be-31114--b1574396a1d7162f":"HEALTHY"}'
    ingress.kubernetes.io/forwarding-rule: k8s-fw-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/https-forwarding-rule: k8s-fws-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/https-target-proxy: k8s-tps-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/ssl-cert: k8s-ssl-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/static-ip: k8s-fw-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/target-proxy: k8s-tp-default-si-preproduction-ingress--b1574396a1d7162f
    ingress.kubernetes.io/url-map: k8s-um-default-si-preproduction-ingress--b1574396a1d7162f
  creationTimestamp: 2018-10-26T09:45:46Z
  generation: 9
  name: si-preproduction-ingress
  namespace: default
  resourceVersion: "1846219"
  selfLink: /apis/extensions/v1beta1/namespaces/default/ingresses/si-preproduction-ingress
  uid: e9bba9ad-d903-11e8-872e-42010a840feb
spec:
  tls:
  - hosts:
    - domain_1
    secretName: cert_1
  - hosts:
    - domain_2
    secretName: cert_2
  rules:
  - host: domain_1
    http:
      paths:
      - backend:
          serviceName: si-preproduction-service
          servicePort: 80
        path: /*
  - host: domain_2
    http:
      paths:
      - backend:
          serviceName: si-preproduction-service
          servicePort: 80
        path: /*
status:
  loadBalancer:
    ingress:
    - ip: our_ip

我的 cert_1 在 domain_1 上正确提供,但它也在 domain_2 上提供(而不是 cert_2),因此不应该保护我的连接。

我也在 github 上打开了一个问题

标签: sslkuberneteskubernetes-ingressgoogle-kubernetes-engine

解决方案


升级到 k8s 1.11+ 解决了这个问题。


推荐阅读