• 网关路由
  • 装了Apisix之后,自带的网关是不是就没有用了

创建部署问题时,请参考下面模板,你提供的信息越多,越容易及时获得解答。如果未按模板创建问题,管理员有权关闭问题。
确保帖子格式清晰易读,用 markdown code block 语法格式化代码块。
你只花一分钟创建的问题,不能指望别人花上半个小时给你解答。

操作系统信息
centos7.9

Kubernetes版本信息
kubectl version

Client Version: version.Info{Major:“1”, Minor:“26”, GitVersion:“v1.26.12+k3s1”, GitCommit:“3ee8969fac6e962bee76d283747225678bafe0b8”, GitTreeState:“clean”, BuildDate:“2023-12-27T14:08:32Z”, GoVersion:“go1.20.12”, Compiler:“gc”, Platform:“linux/amd64”}

容器运行时
Version: 0.1.0

RuntimeName: containerd

RuntimeVersion: v1.7.11-k3s2.26

RuntimeApiVersion: v1

KubeSphere版本信息
V3.4。

问题是什么
按照教程部署了apisix之后,新建路由点击访问服务发现404,只有访问apisix的端口才行,监控信息啥的也没有,那是不是意味着kubesupher的网关功能可以删了,他此时已经没有用处了,而且有没有办法让点击访问服务直接跳转到apisix的端口而不是默认网关的端口

    ikiler 这儿应用路由里点击访问服务跳转的地址是关联 KS 里网关对应的地址,流量如果走自行部署的网关(如apisix)只有访问关联到 apisix 的地址才行。不用 KS 网关也可以把他关闭了,只是关闭后应用路由处会提示“网关未启用”,不影响 Ingress 在其他网关(如apisix)中生效。

    • 网关通过 NodePort 暴露时,跳转地址实际是 ingress host 的地址+NodePort 的端口
    • 网关通过LB暴露,跳转地址是 ingress host 的地址
      你这儿可以尝试通过 LB 的方式暴露网关,让 LB 把流量转到 apisix 上试试看。
      6 天 后

      hongzhouzi 您好,我还有个问题,如果我想要修改默认网关配置怎么做,我看默认是基于nginx-ingres改的,例如添加- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services来实现mysql等tcp服务转发,修改CRD和deploymen都不行,会被还原

        ikiler ks 3.4 里可以在 gateway CR 里添加 TCP/UPD 配置,格式如下:

        apiVersion: gateway.kubesphere.io/v1alpha1
        kind: Gateway
        metadata: {}
        spec:
          controller:
            tcp:
              '8080': 'default/example-tcp-svc1:9000'
              '8081': 'default/example-tcp-svc2:9001'
            udp:
              '53': 'kube-system/coredns:53'

        只是目前前端页面上没有直接添加修改这配置的页面,需要通过编辑 gateway CR yaml 加上。具体说明可以看这个 PR kubesphere/kubesphere#5445
        另外 ks 3.4.0 里需要手动 apply 下这个 gateway CRD yaml,ks 3.4.1 里就不用手动 apply 这个了,修复了。不然添加了 tcp 配置不会被保存下来。