由Google管理的SSL证书停留在FAILED_NOT_VISIBLE

mar*_*ins 6 ssl google-cloud-platform google-kubernetes-engine gke-networking

我正在尝试在GKE上配置https负载均衡器。我正在追踪:https : //cloud.google.com/load-balancing/docs/ssl-certificateshttps://cloud.google.com/kubernetes-engine/docs/concepts/ingress

我的配置已经使用Let's Encrypt的证书工作了一段时间。但是,每次都需要续订证书太麻烦了,所以我想测试Google的托管服务。

到目前为止,这就是我设置的方式,但是仍然存在FAILED_NOT_VISIBLE。关于如何进一步修复或调试的任何想法?

k8s / staging / staging-ssl.yml

  7 apiVersion: extensions/v1beta1
  8 kind: Ingress
  9 metadata:
 10   name: my-staging-lb-ingress
 11   annotations:
 12     kubernetes.io/ingress.global-static-ip-name: "my-staging-global"
 13     ingress.gcp.kubernetes.io/pre-shared-cert: "staging-google-managed-ssl"
 14     kubernetes.io/ingress.allow-http: "false"
 15 spec:
 16   rules:
 17   - host: staging.my-app.no
 18     http:
 19       paths:
 20       - path: /*
 21         backend:
 22           serviceName: my-svc
 23           servicePort: 3001
Run Code Online (Sandbox Code Playgroud)

预留IP

$ gcloud compute addresses list
NAME                   REGION  ADDRESS         STATUS
my-staging-global              35.244.160.NNN  RESERVED


$ host staging.my-app.no 
35.244.160.NNN
Run Code Online (Sandbox Code Playgroud)

$ gcloud beta计算SSL证书描述了staging-google-managed-ssl

creationTimestamp: '2018-12-20T04:59:39.450-08:00'
id: 'NNNN'
kind: compute#sslCertificate
managed:
  domainStatus:
    staging.my-app.no: FAILED_NOT_VISIBLE
  domains:
  - staging.my-app.no
  status: PROVISIONING
name: staging-google-managed-ssl
selfLink: https://www.googleapis.com/compute/beta/projects/my-project/global/sslCertificates/staging-google-managed-ssl
type: MANAGED
Run Code Online (Sandbox Code Playgroud)

我在将SSL证书资源与目标代理相关联的文章开头找到了我链接到的文档中的一部分

使用以下gcloud命令将SSL证书资源与目标代理相关联,无论SSL证书是自我管理的还是Google管理的。

gcloud compute target-https-proxies create [NAME] \
    --url-map=[URL_MAP] \
    --ssl-certificates=[SSL_CERTIFICATE1][,[SSL_CERTIFICATE2],[SSL_CERTIFICATE3],...]
Run Code Online (Sandbox Code Playgroud)

当我在Ingress配置中添加此行时,这是否必要?

13 ingress.gcp.kubernetes.io/pre-shared-cert: "staging-google-managed-ssl"

Nic*_*ini 12

我要把这个留给那些可能和我有同样情况的人。我需要从自我管理的证书迁移到谷歌管理的证书。

我确实按照指南创建了谷歌管理的证书,并希望在将证书应用于我的 Kubernetes 入口之前看到它被激活(以避免停机的可能性)

事实证明,正如文档所述

目标代理必须引用 Google 管理的证书资源

因此应用配置kubectl apply -f ingress-conf.yaml使负载均衡器使用新创建的证书,该证书在不久后(15 分钟左右)变为活动状态

  • 使用 google 管理的 SSL 证书 15 分钟的中断是相当蹩脚的。难道就没有办法解决这个问题吗?我还需要 20 分钟等待 SSL 证书的创建。 (3认同)

Nik*_*hil 6

我最近遇到了这个问题。您需要检查您的 A Record 是否正确指向 Ingress 静态 IP。

如果您使用的是 Cloudflare 之类的服务,请禁用 Cloudflare 代理设置,以便 ping 域将提供 Ingress 的实际 IP。这将在 10 到 15 分钟内正确创建 Google Managed SSL 证书。

证书启动后,您可以再次启用 Cloudflare 代理设置。

  • 这正是我遇到的问题。感谢你的回答。然而,想知道当前的问题是如何解决的 - 如果我禁用云耀斑代理,它会将负载均衡器的 IP 地址暴露给公众。这可能是潜在的 ip 攻击风险。我目前计划对 CF 使用速率限制。如何解决这个问题? (2认同)

Mit*_*tzi 5

在检查了这里的答案后,对我有用的是什么(我使用了负载均衡器,但在我看来,这对于所有情况都是正确的):

  1. 如果过了一段时间,该证书将不再适合您(它可能会永久消失,并且需要时间来证明这一点)-我创建了一个新证书并在负载均衡器中替换了它(只需编辑它)
  2. 确保证书在创建后几分钟内正在使用
  3. 确保 DNS 指向您的服务。并且您的配置在使用 http 时有效!- 这是最好、最安全的方法(如果您刚刚移动了域名,请确保在检查时您到达了正确的 IP)
  4. 创建新证书或问题得到解决后 -您的域名将变为绿色,但您仍然需要等待(可能需要一个小时或更长时间)


mar*_*ins -1

事实证明,我错误地对生产环境进行了一些更改,并对暂存环境进行了其他更改。当我弄清楚并遵循指南时,一切都按预期进行。:-)