STRRL / cloudflare-tunnel-ingress-controller

🚀 Expose the website directly into the internet! The Kuberntes Ingress Controller based on Cloudflare Tunnel.
MIT License
644 stars 37 forks source link

关于 cloudflare-tunnel-ingress-controller 使用问题 #64

Closed besscroft closed 10 months ago

besscroft commented 10 months ago

问题描述

您好,打扰一下,有一些使用上的问题想请教一下。 目前程序是运行正常的,且 tunnel 所有的 pod 都在控制平面上:

image

image

Ingress 也运行正常,目前 kubesphere 面板能够通过域名正常访问:

image

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: dashboard-via-cf-tunnel
  namespace: kubesphere-system
  finalizers:
    - strrl.dev/cloudflare-tunnel-ingress-controller-controlled
spec:
  ingressClassName: cloudflare-tunnel
  rules:
    - host: kube.besscroft.com
      http:
        paths:
          - path: /*
            pathType: Prefix
            backend:
              service:
                name: ks-console
                port:
                  number: 80

但是现在,我想给部署的应用服务也配置域名访问。通过查阅文档得知,是允许一条隧道配置多个域名,并分配给不同的 Service 的。 https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/routing-to-tunnel/ 所以我尝试编写了如下 yaml:

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: api-via-cf-tunnel
  namespace: opensource
  annotations:
    kubesphere.io/creator: admin
spec:
  rules:
    - host: api.besscroft.com
      http:
        paths:
          - path: /@api
            pathType: Prefix
            backend:
              service:
                name: diyfile
                port:
                  number: 8080
    - host: api.besscroft.com
      http:
        paths:
          - path: /@fast-api
            pathType: Prefix
            backend:
              service:
                name: heming-fast
                port:
                  number: 8080

执行后 cloudflare-tunnel-ingress-controller 和 controlled-cloudflared-connector 均没有新增任何日志,同时 cloudflare 控制台的 Public hostnames 也没有任何新增的内容,正常情况下应该会出现一条数据的:

image

集群信息

应用服务被调度至 node 节点上,每个节点间通过 Kilo(基于 WireGuard),集群间网络是正常通信的。

image

操作系统版本: Debian GNU/Linux 11 (bullseye)
操作系统类型: Linux
内核版本: 5.10.0-26-arm64
容器运行时: containerd://1.7.7-k3s1.27
kubelet 版本: v1.27.8+k3s2
kube-proxy 版本: v1.27.8+k3s2
系统架构: ARM64

集群网络:

image

应用服务调度信息:

image

以及 Service 信息:

image

感谢您能看到这里,我不确定是不能这样用,还是我配置错误。 谢谢!

STRRL commented 10 months ago

hi @besscroft , 请尝试为 ingress 的 spec 字段增加 ingressClassName: cloudflare-tunnel

besscroft commented 10 months ago

@STRRL 感谢您的回复,问题已解决😊