Amazon EKS集群无Ingress服务如何获取CA签名证书?
在Amazon EKS集群中为服务获取CA签名证书的方案
问题原因
你通过certificates.k8s.io API生成自签名证书,是因为默认Kubernetes集群使用的是内置自签CA(由kube-controller-manager维护),这类CA未被公共信任机构背书,所以生成的证书自然是自签类型。
可用的CA选项及实现方式
1. AWS Certificate Manager (ACM) 公共/私有证书
这是最适合第三方调用的方案,ACM提供由公共可信CA签名的证书:
- 公网场景:部署ALB Ingress Controller,将ACM证书关联到Ingress资源,第三方访问服务时会自动验证可信证书,无需额外配置。
- 私有场景:创建ACM私有证书,将证书导出(仅私有证书支持导出)后,挂载到服务Pod中作为服务的TLS证书使用,同时将ACM私有CA的根证书分发给第三方,让其添加到信任列表。
2. 集群内自定义私有CA(基于cert-manager)
如果需要完全在集群内管理CA生命周期,可使用cert-manager:
- 先部署cert-manager到EKS集群;
- 创建
ClusterIssuer或Issuer资源,配置为自定义私有根CA(可以是自签根CA,也可以导入外部CA); - 提交
Certificate资源并指定该Issuer,生成的证书将由自定义私有CA签名,最后把私有CA的根证书分发给第三方即可。
3. Kubernetes集群内置CA(仅适合信任场景)
集群本身的内置CA也可以使用,但需要第三方主动信任:
- 导出集群根CA证书:执行
kubectl get secret kube-root-ca.crt -o jsonpath='{.data.ca\.crt}' | base64 -d; - 将导出的根证书提供给第三方,让其添加到本地信任存储,这样用
certificates.k8s.io生成的证书就能被验证通过。但该CA是自签的,仅适合内部协作或已建立信任关系的第三方场景。
内容的提问来源于stack exchange,提问作者ILoveCode
相关产品推荐
相关产品推荐

