使用Kubernetes 1.12.6-gke.7或更高版本,可以创建ManagedCertificate,然后从Ingress资源中引用将服务暴露给Internet。
运行kubectl describe managedcertificate certificate-name首先表示证书处于Provisioning状态,但最终转到FailedNotVisible。
尽管使用静态IP和DNS可以很好地解析所述服务的http版本,但所有ManagedCertificate最终都处于“Status:FailedNotVisible”状态。
我在做什么的概述:
过了一会儿
kubectl描述了managedcertificate子域名域证书
导致“状态:FailedNotVisible”。
Name: subdomain-domain-certificate
Namespace: default
Labels: <none>
Annotations: <none>
API Version: networking.gke.io/v1beta1
Kind: ManagedCertificate
Metadata:
Creation Timestamp: 2019-04-15T17:35:22Z
Generation: 1
Resource Version: 52637
Self Link: /apis/networking.gke.io/v1beta1/namespaces/default/managedcertificates/subdomain-domain-certificate
UID: d8e5a0a4-5fa4-11e9-984e-42010a84001c
Spec:
Domains:
subdomain.domain.com
Status:
Certificate Name: mcrt-ac63730e-c271-4826-9154-c198d654f9f8
Certificate Status: Provisioning
Domain Status:
Domain: subdomain.domain.com
Status: FailedNotVisible
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Create 56m managed-certificate-controller Create SslCertificate mcrt-ac63730e-c271-4826-9154-c198d654f9f8
根据我的理解,如果Load Balancer配置正确(在ManagedCertificate资源的引擎下完成)和DNS(可以解析为非https端点)检查证书是否应该进入Status:Active状态?
我的问题背后的问题最终成为DNSSEC配置错误。通过https://dnssec-analyzer.verisignlabs.com/运行DNS后,我能够识别并解决问题。
您需要确保域名解析为GKE Ingress的IP地址,完全按照“creating an Ingress with a managed certificate”的说明进行操作。
有关更多详细信息,请参阅Google Cloud Load Balancing文档。来自https://cloud.google.com/load-balancing/docs/ssl-certificates#domain-status:
“状态FAILED_NOT_VISIBLE表示由于DNS或负载平衡配置问题导致域的证书配置失败。请确保配置DNS以使证书的域解析为负载平衡器的IP地址。”