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

如何让Ingress-Nginx使用Cert-Manager生成的Let's Encrypt证书(K3S集群+Ansible部署Home Assistant场景)

如何让Ingress-Nginx使用Cert-Manager生成的Let's Encrypt证书(K3S集群+Ansible部署Home Assistant场景)

看起来你已经走完大半部署流程啦——用Ansible创建了Home Assistant的专属命名空间,也通过Cert-Manager发起了Let's Encrypt证书申请,现在就差最后一步:把Ingress配置和生成的证书关联起来,让Ingress-Nginx自动启用HTTPS。我来帮你补全这个环节:

一、先确认证书申请状态(必做检查!)

在配置Ingress之前,先确保Cert-Manager已经成功生成了证书。可以在集群节点上执行这条命令,或者在Ansible里新增一个检查任务:

kubectl get certificates -n home-system

如果输出里homeassistant-tls的状态显示为Ready,说明证书已经顺利拿到手了,接下来可以放心配置Ingress。

二、添加Ingress配置的Ansible任务

你需要在现有playbook里新增一个任务,创建Ingress资源并关联你的Let's Encrypt证书。直接把下面这段代码加到你的playbook里就行:

- name: Create Home Assistant Ingress with TLS
  kubernetes.core.k8s:
    state: present
    definition:
      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: homeassistant-ingress
        namespace: home-system
        annotations:
          # 指定Ingress控制器为K3S自带的Ingress-Nginx
          kubernetes.io/ingress.class: "nginx"
          # 强制HTTP请求跳转到HTTPS
          nginx.ingress.kubernetes.io/ssl-redirect: "true"
      spec:
        tls:
        - hosts:
          - "homeassistant.example.com"
          # 这里要和你Certificate资源里指定的secretName完全一致
          secretName: homeassistant-tls-secret
        rules:
        - host: "homeassistant.example.com"
          http:
            paths:
            - path: /
              pathType: Prefix
              backend:
                service:
                  # 替换成你实际部署的Home Assistant服务名称,默认通常是homeassistant
                  name: homeassistant
                  port:
                    # Home Assistant默认端口是8123,根据你的部署情况调整
                    number: 8123

三、几个关键注意点

  • 服务名称与端口:确保spec.rules[0].http.paths[0].backend.service.name是你实际部署的Home Assistant服务名称,端口号也要对应正确。如果是用官方Helm Chart部署的Home Assistant,服务名默认就是homeassistant,端口8123。
  • 测试/生产环境切换:你之前的Certificate用了letsencrypt-staging(Let's Encrypt测试环境),生成的证书不会被浏览器信任。如果是生产环境使用,记得把它换成你的生产环境ClusterIssuer(比如letsencrypt-prod),同时更新Certificate里的issuerRef字段。
  • Ingress Class匹配:K3S默认的Ingress控制器是Ingress-Nginx,所以注解里的kubernetes.io/ingress.class: "nginx"必须保留,确保Ingress被正确识别和处理。

四、验证配置是否生效

执行完playbook后,用这条命令检查Ingress状态:

kubectl get ingress -n home-system

然后访问https://homeassistant.example.com,如果能正常打开Home Assistant,且浏览器显示安全的HTTPS连接,说明整个配置就成功啦!

备注:内容来源于stack exchange,提问作者Lasse Michael Mølgaard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.17 08:54:30