【问题标题】:GKE Ingress - Managed Cert multiple servicesGKE Ingress - 托管证书多项服务
【发布时间】:2022-01-14 17:37:05
【问题描述】:

我需要为一些服务提供一些到 GKE 实例的 https 路由。显然有很多方法可以做到这一点,我宁愿尽可能保持 GCP 原生。

使用 GKE 原生资源我可以实现这样的目标:

apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: tools-managed-cert-toola
  namespace: toola
spec:
  domains:
    - tools.acme-uat.com
---
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: tools-managed-cert-toolb
  namespace: toolb
spec:
  domains:
    - tools.acme-uat.com

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: toola-ingress
  namespace: toola
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "acme-tools-ip"
    networking.gke.io/managed-certificates: plumbing-managed-cert-toola
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: "tools.acme-uat.com"
    http:
      paths:
      - pathType: Prefix
        path: "/toola"
        backend:
          service:
            name: toola-server
            port:
              number: 80
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: toolb-ingress
  namespace: toolb
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "acme-tools-ip"
    networking.gke.io/managed-certificates: plumbing-managed-cert-toolb
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
  - host: "tools.acme-uat.com"
    http:
      paths:
      - pathType: Prefix
        path: "/toolb"
        backend:
          service:
            name: toolb-server
            port:
              number: 80

这感觉像是错误的方向。将 GKE 实例上的服务切换到 NodePort 并提供上游 HTTPS LoadBalancer 来管理路由和 TLS 终止是否更传统?这显然需要编写脚本,所以如果有办法,首选 GKE 原生方法?

任何建议将不胜感激。

干杯

【问题讨论】:

  • 我不确定我是否理解您在这里想要实现的目标。您想在 GKE 上部署两个应用程序(toola 和 toolb)并将它们暴露在 tools.acme-uat.com/toola 和 tools.acme-uat.com/toolb 之后?您是否关心 tools.acme-uat.com 是否指向相同的 IP 和证书?
  • 是的。我宁愿使用 1 个 ip 证书。这种方式感觉很笨拙,因为我在不同的命名空间中有相同 IP 的两个证书。我的直觉方法是使用边缘代理来管理基于路径的路由,但我更喜欢保持 GKE 原生。那么,问题是,以上是标准方法吗?
  • 啊哈,我明白了,您的应用程序位于不同的命名空间中。所以 Kubernetes Ingress 是命名空间绑定的,你不能在与 Ingress 不同的命名空间中引用后端。不幸的是,您将遇到的问题是您不能将同一个域用于两个不同的 ManagedCertificates。域 (tools.acme-uat.com) 必须解析为 Ingress 的 IP 地址,ManagedCertificates 才能正常工作。您将不得不使用两个域,可能是 toola.tools.acme-uat.com 和 toolb.tools.acme-uat.com
  • 感谢您的 cmets。非常感谢。
  • 别担心,我建议你看看网关 API,GKE 中的下一代入口 API cloud.google.com/kubernetes-engine/docs/concepts/gateway-api

标签: google-cloud-platform google-kubernetes-engine


【解决方案1】:

正如@boredabdel 所提到的,你不能像那样跨命名空间。这也被讨论过here
您可以在此question 中找到一些解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2019-11-22
    • 1970-01-01
    • 2015-01-04
    相关资源
    最近更新 更多