使用 Kubernetes 1.12.6-gke.7 或更高版本,可以创建一个 ManagedCertificate,并从 Ingress 资源引用它来将服务暴露在 Internet 上。
运行 kubectl describe managedcertificate certificate-name 命令会显示证书处于 Provisioning 状态,但最终会变成 FailedNotVisible 状态。
尽管使用了一个静态 IP 和 DNS 以正确解析到所述服务的 http 版本,但所有 ManagedCertificate 最终都处于 "Status: FailedNotVisible" 状态。
我所做的概述:
据我所知,如果负载均衡器配置正确(在ManagedCertificate资源的后台完成),并且DNS(可以正常解析非https端点)检查通过,则证书应处于“活动”状态?
运行 kubectl describe managedcertificate certificate-name 命令会显示证书处于 Provisioning 状态,但最终会变成 FailedNotVisible 状态。
尽管使用了一个静态 IP 和 DNS 以正确解析到所述服务的 http 版本,但所有 ManagedCertificate 最终都处于 "Status: FailedNotVisible" 状态。
我所做的概述:
- 生成保留(静态)外部 IP 地址
- 在 CloudDNS 中配置 DNS A 记录为 subdomain.domain.com 并指向步骤 1 生成的 IP 地址。
- 使用 kubectl apply -f 创建名为 "subdomain-domain-certificate" 的 ManagedCertificate,其中 spec:domains 包含与步骤 2 中的 subdomain.domain.com DNS 记录对应的单个域。
- 创建一个简单的 Deployment 和 Service 将其暴露出去。
- 创建 Ingress 资源,将其引用到步骤 4 中的 service 的默认后端,以及指定步骤 1 中创建的静态 IP 和步骤 3 中生成的证书的注释。
- 确认 Ingress 被创建并被分配静态 IP。
- 访问 http://subdomain.domain.com 会提供在步骤 4 中创建的 Deployment 的 Pod 的输出。
结果为 "Status: FailedNotVisible"。kubectl describe managedcertificate subdomain-domain-certificate
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
据我所知,如果负载均衡器配置正确(在ManagedCertificate资源的后台完成),并且DNS(可以正常解析非https端点)检查通过,则证书应处于“活动”状态?