【Istio】Virtualservice 因为 galley 证书过期无法部署

因为在部署virtualservice到线上Istio集群的时候,出现了一个问题

Internal error occurred: failed calling webhook "pilot.validation.istio.io": Post https://istio-galley.istio-system.svc:443/admitpilot?timeout=30s: x509: certificate has expired or is not yet valid

在这里插入图片描述
从"pilot.validation.istio.io": Post https://istio-galley.istio-system.svc:443/admitpilot?timeout=30s 这条报错上,大概率Istio-galley所谓的检查virtualservice等Istio自己的CRD也是通过Kubernetes Admission Webhook来实现的。

既然如此,那因为证书出错的问题,就集中在了两处:

  1. Validating Webhook Configuration里的CaBundle证书过期
  2. Validating Webhook Server里配置的证书过期了

依次检查

根据之前的经验,轻车熟路地找到对应的 validatingwebhookconfiguration配置项CaBundle
在这里插入图片描述
在这里插入图片描述
Base64解码之后,使用 工具 查看过期时间,发现果然过期了(当然这里是修改之后的),使用之前提到的命令重新获取,并修改

kubectl config view --raw --minify --flatten -o jsonpath='{.clusters[].cluster.certificate-authority-data}'

第二个是可能在Istio-Galley中挂载的证书过期了
在这里插入图片描述
从截图上判断,证书实际信息是在istio-system中对应的secret里,顺着名字摸过去
发现有三项信息cert-chain.pem、key.pem、root-cert.pem ,还是通过上面的操作方式base64解码时候,放到工具里查询过期时间,发现 cert-chain.pem 没过期,但是 root-cert.pem过期了。思考什么情况,一般来说 cert-chain.pem是通过向root-cert.pem签署的,也就是说root-cert.pem -> cert-chain.pem。根据istio 文档中有提到过 istio-citadel 会尝试自动更新证书,不过在Istio老版本需要手动重启istio-citadel ,所以尝试了一下重启。

果然,不行,截图忘记截了。。。大概的意思是说 istio-ca-secret 这里的证书过期了
那尝试修改一下里面的证书,按照文档里的做法
需要注意的是
在这里插入图片描述
文档当中要求使用在使用证书替代时要小心,所以我让istio集群暂时不对外服务
再利用openssl工具和private-key重新生成一份证书,填进去之后,重启istio-citadel 即可。

重新部署virtualservice ,成功
在这里插入图片描述

展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值