我正在尝试在GKE上配置https负载均衡器。我正在关注:https://cloud.google.com/load-balancing/docs/ssl-certificates和https://cloud.google.com/kubernetes-engine/docs/concepts/ingress
我的配置已经使用Let's Encrypt的证书工作了一段时间。 但是,每次都需要续订证书太麻烦了,所以我想测试Google的托管服务。
到目前为止,这就是我设置的方式,但是卡在了 Ext.onReady(function () {
var bigPannel = Ext.create('Ext.Panel', {
title: 'Ext JS 4',
width: 300,
height: 200,
id: 'bigPannel',
renderTo: Ext.getBody()
});
bigPannel.add({
title: 'panel2',
width: 100,
height: 100
})
});
上。
关于如何进一步修复或调试它的任何想法?
k8s / staging / staging-ssl.yml
DATEDIFF('SECOND', DATE '1970-01-01', CURRENT_TIMESTAMP())
保留的IP
FAILED_NOT_VISIBLE
$ gcloud beta beta计算SSL证书描述了staging-google-managed-ssl
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
我在文章开头链接到的文档中找到了一个部分 将SSL证书资源与目标代理相关联:
使用以下gcloud命令将SSL证书资源与目标代理相关联,无论SSL证书是自我管理的还是Google管理的。
$ 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
当我在Ingress配置中添加此行时,这是否有必要?
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
答案 0 :(得分:3)
我最近遇到了这个问题。您需要检查您的 A Record 是否正确指向 Ingress 静态 IP。
如果您使用的是 Cloudflare 之类的服务,请禁用 Cloudflare 代理设置,以便 ping 域将提供 Ingress 的实际 IP。这将在 10 到 15 分钟内正确创建 Google Managed SSL 证书。
证书启动后,您可以再次启用 Cloudflare 代理设置。
答案 1 :(得分:2)
我把这个留给可能与我处于同样情况的任何人。我需要从自我管理的证书迁移到Google管理的证书。
我确实按照指南创建了由Google管理的证书,并希望在将证书应用于Kubernetes入口之前看到它已被激活(以避免停机的可能性)
如docs所述
目标代理必须引用Google管理的证书 资源
因此,使用kubectl apply -f ingress-conf.yaml
进行配置使负载均衡器使用新创建的证书,该证书不久(约15分钟)就变为活动状态
答案 2 :(得分:1)
事实证明,我错误地对生产环境进行了一些更改,并对阶段进行了其他更改。当我发现并遵循指南后,一切都按预期进行。 :-)
答案 3 :(得分:1)
除了其他答案外,从自我管理的证书迁移到Google管理的证书时,我还必须:
kubernetes.io/ingress.allow-http: true
启用http进入我的入口服务我也有一个过期的原始SSL证书,尽管我不确定这很重要。
答案 4 :(得分:1)
在这里检查答案后对我有用(我使用负载平衡器,但 IMO 这对所有情况都是正确的):
答案 5 :(得分:0)
根据您提供的以下documentation,这将为您提供帮助:
状态为FAILED_NOT_VISIBLE表示由于DNS或负载平衡配置出现问题,导致域的证书供应失败。确保已配置DNS,以便证书的域解析为负载均衡器的IP地址。
答案 6 :(得分:0)
staging.my-app.no
的A资源记录的TTL(生存时间)是多少?
使用例如
dig +nocmd +noall +answer staging.my-app.no
弄清楚。
在我的情况下,将TTL从60秒增加到7200,让domainStatus
最终到达ACTIVE
。
答案 7 :(得分:0)
在我的情况下,我需要更改运行状况检查并将其指向适当的端点(nginx-ingress上的/ healthz),并且在healtcheck返回true之后,我必须确保在与gce-入口。完成这两件事之后,它终于通过了,否则我遇到了同样的错误。 “ FAILED_NOT_VISIBLE”
答案 8 :(得分:0)
我遇到了同样的问题。 我通过重新查看文档来修复它。
FAILED_NOT_VISIBLE
Certificate provisioning failed for the domain. Either of the following might be the issue:
The domain's DNS record doesn't resolve to the IP address of the Google Cloud load balancer. To resolve this issue, update the DNS records to point to your load balancer's IP address.
The SSL certificate isn't attached to the load balancer's target proxy. To resolve this issue, update your load balancer configuration.
Google Cloud continues to try to provision the certificate while the managed status is PROVISIONING.
因为我的负载均衡器位于cloudflare之后。默认情况下,cloudflare已启用cdn代理,我需要在Google验证DNS后将证书状态更改为活动状态,然后首先将其禁用。
答案 9 :(得分:0)
就我而言,在工作中。我们正在大量利用托管证书,以便为开发人员和 QA 提供动态环境。因此,我们大量配置和删除托管证书。这意味着我们也在生成和删除托管证书时更新 Ingress 资源。
我们发现,即使您从此注释中删除托管证书的引用:
networking.gke.io/managed-certificates: <list>
似乎随机 Ingress 没有从 LoadBalancer 中删除关联的ssl-certificates。
ingress.gcp.kubernetes.io/pre-shared-cert: <list>
因此,当托管证书被删除时。入口将以某种方式“卡住”,无法提供新的托管证书。因此,新的托管证书将在一段时间后从 PROVISIONING 状态转换为 FAILED_NOT_VISIBLE 状态
到目前为止,我们发现的唯一解决方案是,如果新证书在 30 分钟后没有得到提供。我们将检查注解 ingress.gcp.kubernetes.io/pre-shared-cert 是否包含不再存在的 ssl-certificate。
您可以使用以下命令检查现有的 ssl 证书
gcloud compute ssl-certificates list
如果碰巧一个不再存在的 ssl 证书仍在注释中徘徊。然后,我们将手动从 ingress.gcp.kubernetes.io/pre-shared-cert 注释中删除不必要的 ssl-certificate。
应用更新的配置后,在大约 5 分钟内,处于 FAILED_NOT_VISIBLE 状态的新托管证书应该会被提供并且处于 ACTIVE 状态。