GKE Ingress 上的 SSL 验证失败并显示“FailedNotVisible”

问题描述 投票:0回答:1

我的 GKE 入口遇到 SSL 验证问题,我想托管扩展的反向代理应用程序。 SSL 验证失败并出现错误

FailedNotVisible

基本上应该是api。域首先通过侦听端口 4000 的反向代理应用程序路由所有流量。

以下是我的配置详细信息:

  1. 托管证书配置(
    managed-cert.yaml
    ):
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: reverse-proxy-cert
spec:
  domains:
    - api.example.com
  1. 反向代理服务(
    reverse-proxy-service.yaml
    ):
apiVersion: v1
kind: Service
metadata:
  name: reverse-proxy
spec:
  selector:
    app: reverse-proxy
  ports:
  - name: http
    protocol: TCP
    port: 80
    targetPort: 4000
  - name: other-app
    protocol: TCP
    port: 4001
    targetPort: 4001
  type: LoadBalancer
  1. 反向代理部署(
    reverse-proxy-deployment.yaml
    ):
apiVersion: apps/v1
kind: Deployment
metadata:
  name: reverse-proxy
spec:
  replicas: 3
  selector:
    matchLabels:
      app: reverse-proxy
  template:
    metadata:
      labels:
        app: reverse-proxy
    spec:
      imagePullSecrets:
      - name: dockerhub-secret
      containers:
      - name: reverse-proxy
        image: mydockerhubuser/reverse-proxy-test:latest
        ports:
        - containerPort: 4000
        - containerPort: 4001
  1. 入口配置(
    ingress.yaml
    ):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: reverse-proxy-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "reverse-proxy-ip"
    networking.gke.io/managed-certificates: "reverse-proxy-cert"
spec:
  rules:
  - host: api.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: reverse-proxy
            port:
              number: 80
  tls:
  - hosts:
    - api.example.com

采取的步骤:

  • 确保 DNS 设置正确并指向正确的 IP 地址(入口)。
  • 已验证托管证书配置是否正确。

观察:

  • GCP Console 中的 SSL 证书状态显示
    FailedNotVisible
  • api.example.com 域指向入口。

如果您能了解 SSL 验证为何失败以及如何解决

FailedNotVisible
错误,我将不胜感激。

也许我错过了什么,或者我做错了什么,这是我第一次使用 GKE。

谢谢!

kubernetes ssl ssl-certificate google-kubernetes-engine kubernetes-ingress
1个回答
0
投票

错误 FailedNotVisible 表示该域的证书配置尚未完成。

您需要确认在入口规范中正确配置了 ManagedCertificate 对象名称。因此,证书应映射到 Ingress 控制器创建的 HTTPS 目标代理。检查如果 Ingress 注释中未引用 ManagedCertificate 对象,请通过添加它来修复此问题。为此,请运行以下命令并查看详细信息:

kubectl 描述入口 [ingress_name] -n [命名空间]

请注意,根据文档,要配置 Google 托管 SSL 证书,该证书需要由证书颁发机构进行验证。为了通过验证,域的 DNS 记录应指向负载均衡器 IP。

可能的原因之一可能是 SSL 证书未附加到负载均衡器的目标代理,如上述文档中所述。新更新的 DNS A 和 AAAA 记录可能需要大量时间(大约 72 小时)才能完全传播。

另请注意,如果一个负载均衡器处理某个域的 IPv4 流量,而另一个负载均衡器处理 IPv6 流量,则这两个负载均衡器将使用相同的证书,这将是一种异常情况。GKE Ingress 并不真正支持此设置。有关更多信息,请参阅此GCP 官方文档

您还可以尝试删除现有证书并使用此文档创建新证书。

限制:内部 HTTP(S) 负载均衡器支持全局访问,但 GKE 内部 Ingress 不支持此功能。您可以参考这个PIT追踪该功能何时支持。

© www.soinside.com 2019 - 2024. All rights reserved.