我的 GKE 入口遇到 SSL 验证问题,我想托管扩展的反向代理应用程序。 SSL 验证失败并出现错误
FailedNotVisible
。
基本上应该是api。域首先通过侦听端口 4000 的反向代理应用程序路由所有流量。
以下是我的配置详细信息:
managed-cert.yaml
):apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
name: reverse-proxy-cert
spec:
domains:
- api.example.com
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
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
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
FailedNotVisible
。如果您能了解 SSL 验证为何失败以及如何解决
FailedNotVisible
错误,我将不胜感激。
也许我错过了什么,或者我做错了什么,这是我第一次使用 GKE。
谢谢!
错误 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追踪该功能何时支持。