应用路由很不合理(基本就是废的)
runzexiaK零S
这个问题我理解是如何将网关暴露提供服务的问题。
应用路由的网关目前有两种方式可以对外暴露服务(也就是k8s service的两种)
NodePort 和 load balancer .
当你使用nodeport暴露服务的时候就会使用随机的端口。
建议使用LB的方式暴露网关,这样可以满足你的需求。
rayzhou2017K零SK壹S
是的,用LB暴露网关,应用路由(ingress)聚合服务还是需要的。
RRichardweiK零S
- 已编辑
我也觉得这个访问网关有点迷惑。现在自己统一独立部署了Nginx Ingress Controller在另一个namespace
去监控ingress资源,才能实现外网域名的直接访问(不带端口的域名访问)。
但是麻烦的是如果不去高级设置里面设置访问网关,就不能直接添加应用路由,我的理解是这里的应用路由应该是创建ingress资源,可以指定域名。这个时候自己部署的ingress controller才可以工作,如果现在去把访问网关删除,应用路由(ingress resource)还是会保留,对域名访问没有任何影响,感觉如果用kubectl直接去创建ingress的yaml,apply一下应该可以达到同样的效果。
不知道这样理解是不是有问题,还是我哪部分没做对,希望大家更正。
Richardwei 您自己搭建的ingress-nginx,不带端口通过指定域名,在外网访问,能正常代理转发访问服务?
之前我也是这个思路部署了ingress controller,发现在项目下不开启访问网关,是不能使用应用路由的;开启访问网关后,通过应用路由定义域名发布服务时,还是会自带匹配使用,在开启网关时产生的随机端口;
我理解kubesphere的思路是选择NodePort方式,一个项目(或称呼命名空间)下,会产生随机的HTTP和HTTPS 两个端口;总之项目越多,端口越多,虽然用了ipv的4层转发,但是这个随机端口的维护确实也是费尽;可能这个kubesphere还是更倾向于公有云的部署吧,使用lb;反正我理解不了这个思路,我更建议产品把应用路由,改成域名概念,整个kubesphere平台来定义ingress ,统一使用80和443这种端口;不同项目自己定义域名就是呗,
RRichardweiK零S
- 已编辑
是可以域名直接访问的,因为有ingress资源,所以可以匹配到域名,开启网关确实会给域名再分配一个端口号,如果域名加端口号也是可以访问,不用端口号也行,这个时候如果去删掉网关,端口号就消失了,但是域名还是可以照常访问。我没有去用真实域名实验,只是改了主机的host指定域名到自己部署的ingress controller的node ip地址。
我觉得你可以不必理会应用路由分配的端口,但是要确保流量是打到自己部署的ingress controller的ip地址上,这样才能正确解析域名。
我这边是在windows虚拟机上搭建的k8s kubesphere,创建了网关
loadbalancer,也创建了应用路由 域名绑定nginx的80端口,windows host也配置了域名,但是就是访问不到呢,求大佬回复,我看到有人说要安装porter,porter我也安装了,但是还是无法通过域名访问,新人求指导
跟楼主一样的疑问,现在部署了 openelb,把dns解析道 elb 上,但又面临着 https 怎么搞,又要把https证书做到 pod 里面去?
FeynmanK零SK贰SK壹S
asimplesong https 可以用 cert-manager https://kubesphere.com.cn/forum/d/220-kubesphere-cert-manager-https
已经有Wildcard 证书了,本来配置到“应用路由”里就可以访问,但带了 port。
后面部署了openelb,直接给service 给了 layer2 的 EIP ,那我这是怎么加http证书呢?
好像并不是cert-manager 的问题吧?
- 已编辑
可以了,但不知道我做法对不对。
在网关上使用 LB,但这个LB都是云上的选取,而我环境是裸机,是openelb自建的使用 layer2 IP 的。
看着有点别扭,只有云上的几个显示负载均衡提供商,而我是 porter 自建的。
能不能有个完整的配置文档, 这边配置完了 访问不通