You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes中创建供Keycloak及Nginx Ingress使用的TLS证书?

为Keycloak适配Nginx Ingress的证书:最简单实现与你的疑问解答

你现在的做法其实已经是适配Nginx Ingress的最简单、标准方式了,针对你关于证书生成位置的疑问,我来详细拆解:

核心结论

证书的私钥和公钥文件不需要专门在K8s宿主机上创建——你可以在任何能访问K8s集群的机器(比如你的本地开发机、CI/CD服务器)上生成或准备证书文件,然后通过kubectl create secret tls命令将其导入到K8s集群中即可。

具体细节说明

  • 证书生成/存储的正确姿势
    K8s的TLS Secret是存储在集群的etcd中的,属于集群级别的资源,和单个宿主机无关。你完全不需要在宿主机上生成或留存证书文件:

    1. 在本地或任意有kubectl权限的机器上生成证书(比如测试环境用自签名证书,生产环境用CA签发的证书)
    2. 通过kubectl create secret tls命令将证书文件导入集群,就像你已经执行的操作一样
    3. Ingress配置中直接引用该Secret即可,这也是你YAML里的正确写法
  • 验证你当前配置的有效性
    只要你提供的localtest.me.crt和localtest.me.pem是有效的(比如自签名证书的CN/SAN包含keycloak.localtest.me),你的Ingress配置就能正常启用HTTPS访问Keycloak。如果是测试用,你可以用这条命令在本地快速生成符合要求的自签名证书:

    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout localtest.me.pem -out localtest.me.crt -subj "/CN=keycloak.localtest.me"
    

    生成后再执行你已经用过的kubectl create secret tls命令即可。

  • 为什么不推荐在宿主机创建证书
    宿主机只是K8s的运行节点,证书文件放在宿主机上会带来两个问题:一是如果集群有多个节点,你需要在所有节点同步证书,管理成本高;二是节点故障或重建时,证书文件会丢失,而存储在Secret中的证书是集群持久化管理的,更可靠。

内容的提问来源于stack exchange,提问作者xeLL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 22:57:40