Ingress发布https时,指定证书无效

环境信息:
K3s 版本:
k3s version v1.26.7+k3s1 (e47cfc09)
go version go1.20.6

集群配置:
3 servers

问题描述:
通过ruancher安K3S集群dev后,在dev集群中通过ingress,发布官方的demo应用:rancher/hello-world。参考文档 部署带有 Ingress 的工作负载 | Rancher

通过创建自定义secret,如图:

创建ingress(这里用的K3S中的kubernetes的service代替,在ingress配置中,证书配置项,使用的是上一步中的secret),如图:


ingress状态如图:

此时浏览器访问结果为:

请问这是怎么回事?

从你上面的操作来看,没发现任何问题,我也试着使用 rancher 2.7.5 创建 v1.26.7+k3s1 集群,并且按照你的步骤去重现,是可以显示我上传的证书的,如下:

要不你试试用无痕模式访问你的测试应用看看


:sweat_smile:

那你通过 yaml 形式来看看 ingress ,看看 secret 挂载上没,目测没看见啥问题。:smile:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    field.cattle.io/publicEndpoints: >-
      [{"addresses":["10.36.191.123","10.36.191.124","10.36.191.125"],"port":443,"protocol":"HTTPS","serviceName":"default:dep","ingressName":"default:test","hostname":"test.com","path":"/hello","allNodes":false}]
  creationTimestamp: '2023-08-23T10:39:25Z'
  generation: 3
  managedFields:
    - apiVersion: networking.k8s.io/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:status:
          f:loadBalancer:
            f:ingress: {}
      manager: traefik
      operation: Update
      subresource: status
      time: '2023-08-23T10:39:26Z'
    - apiVersion: networking.k8s.io/v1
      fieldsType: FieldsV1
      fieldsV1:
        f:metadata:
          f:annotations:
            .: {}
            f:field.cattle.io/publicEndpoints: {}
        f:spec:
          f:rules: {}
          f:tls: {}
      manager: agent
      operation: Update
      time: '2023-08-24T02:51:18Z'
  name: test
  namespace: default
  resourceVersion: '941131'
  uid: a55ba15a-8b35-4802-9e56-3875e3cdebdf
spec:
  ingressClassName: traefik
  rules:
    - host: test.com
      http:
        paths:
          - backend:
              service:
                name: dep
                port:
                  number: 80
            path: /hello
            pathType: Prefix
  tls:
    - hosts:
        - test.com
      secretName: seres-inner-certificate
status:
  loadBalancer:
    ingress:
      - ip: 10.36.191.123
      - ip: 10.36.191.124
      - ip: 10.36.191.125

image
看起是挂载了

发现个问题,你这个证书中配置的域名是 rc-cluster.seres.cn,并不是你创建 ingress 使用的 test.com

首先,感谢指正。

我是用了rancher的前置nginx代理中,相同的证书来做的 hello应用 测试。rancher访问截图如下:

估计和这个有关。

已解决问题。

使用内网的一个通配域名: *.xxx.cn ,替换 secret后,在ingress里面自定义了一个 tp-test.seres.cn,如图:

然后浏览器访问显示如下:

有点瑕疵,在于页面中的图片为啥没加载出来呢? 用nodeport方式就可以加载的。