Citadel是Istio的证书分发中心。证书即某个实体的身份证明,可以直接代表实体本身参与信息交流活动。Citadel作为证书分发中心,负责服务网格中每个服务身份证书的创建任务,以保障服务之间安全交流。
在处理问题之始,我们观察到的第一个现象是,Citadel再也无法启动了。这直接导致集群无法创建新的虚拟服务和Pod实例。观察Citadel,发现其连续重启,并输出以下报错信息。

通过代码分析以及最后一行的报错,可以推出问题背后的逻辑:Citadel不能启动,是因为其无法创建自签名的证书(Failed to create a self-signed Citadel)。
而Citadel无法创建自签名证书的原因,是它不能创建密钥和证书(failed to create CA KeyCertBundle)。
以上两点的根本原因,是在验证创建的自签名证书的时候验证失败(cannot verify the cert with the provided root chain and cert pool)。