自学 k8s 对 Ingress 的一些疑惑

140 天前
 token10086

自学了 2 周多一点,搞了真实环境( 3 台小鸡)自学。

集群装的 k3s 集成了 traefik 的 Ingress 在使用中有 2 点比较好奇

有了 Ingress 还用 Nginx 吗?

我自己的结论是:

能代替,但是我还是想只把 Ingress 当成一个流量入口。路由交给 Nginx ,因为 Nginx 更熟悉不用增加学习成本。

不知道这样的做法标准不?

CA 证书管理

目前我用的是 came 写了个 cronjob 定期生成证书,然后再用系统的 crontab 写入 k8s 的 secret ,能实现功但感觉这样很奇怪。

traefik 自带的 CA 管理和 cert-manager 哪一个好用一点?

CA 的部署关系

Ingress 上配置了 SSL 后,Nginx 还需要配置 SSL 吗? 还是有其他的做法

2820 次点击
所在节点    Kubernetes
25 条回复
beyondstars
140 天前
1. 有了 ing 还用不用 nginx: 不用
2. CA 证书管理:用 cert-manager
3. 不需要,因为 ing 做的就是 ssl termination.
beyondstars
140 天前
1 也有例外就是你需要用一些功能 ingress 里面配置起来比较麻烦,但是 nginx 好配,那可以通过路由把 http 流量导到 nginx 然后再在 nginx 里边配。
DefoliationM
140 天前
其实 ingress 就是 nginx
beyondstars
140 天前
3 也有例外就是假如你的 node 是跨越公网的,并且你需要加密 ingress controller 到 backend (svc, pod, ...) 的流量,可以在 backend 也上 tls ,并且让 ingress 通过 tls 和 backend 通信。
token10086
140 天前
@beyondstars
@DefoliationM

可以,懂了,感谢两位好大哥
juzisang
140 天前
Ingress 可以当 Nginx 用,helm 安装 ingress-nginx 提供了很多配置
helm 原理其实很简单,通过配置 + helm 的语法,可以动态生成配置,然后再映射给容器,没啥特殊的
cert-manager 其实也一样

我用了一段时间 k3s ,个人感觉 kubernetes 配置真的是及其繁琐 啰嗦,而且 helm 包因为套了一层配置,大多数 helm 包又要高可用,配置又多又复杂,文档写得也不好,run 起来还特别吃配置...一个简单的事情,经过这么多层封装,变得极其难用,学习成本很高。

个人使用推荐 docker swarm ,特别简单...
2677672
140 天前
玩一玩 treafik 小土豆子
piupuer
140 天前
有了 Ingress 还用 Nginx 吗
ingress 就是 nginx ,流量入口用 ingress ,同时配合 loadbalancer ,app 应用层可以加一个 nginx container ,app 内有自定义的路由需求会比全部配在 ingress 方便
GopherDaily
140 天前
- Ingress 处理流量从公网到集群,Egress 处理流量从集群到公网
- Ingress 在 k8s 中是一个逻辑概念,Nginx 是 Ingres 的一种实现选择
- Ingress Controller 是会根据 k8s 的相关逻辑概念,控制具体实现的配置
注意 k8s 和 nginx 各自维护了一个 controller ,参考 https://github.com/j2gg0s/j2gg0s/blob/main/_posts/2022-11-15-nginx_%E6%98%93%E6%B7%B7%E6%B7%86%E7%9A%84%E6%9C%AF%E8%AF%AD.md
- Ingress 前面一半还会有一层 SLB ,我们一般在 SLB 处理证书
zmh69695328
140 天前
借楼问一下,请问自学教程有推荐嘛?
exiaohao
140 天前
有了 Ingress 还用 Nginx 吗?
个人意见看业务,比如 k3s 的 traefik 能满足你的需要 就不需要了
如果 traefik 满足不了,可能 nginx/envoy 什么是更好的选择,那就是替换 ingress 的实现了

CA 证书管理: cert-manager

CA 部署关系: Ingress 你可以把它当作传统服务商的「负载均衡和 HTTPS 卸载」
在它以北的认为直接暴露公网了,如果你还有 WAF 什么的,那就看实际情况配置了
devopsdogdog
140 天前
有了 Ingress 还用 Nginx 吗?

我理解不是一个东西。虽然差不多

比如能直接,当做展示前端代码的 nginx 来用?
或者是配合 php_fpm 用?

请指教,我认为可能在负载均衡,反向代理这块差不多,其他替代不了吧。
antipro
140 天前
@juzisang docker swarm 不要用在生产环境
jiangzm
140 天前
ingress 当然不是 nginx ,ingress 是用来管理路由规则的, 路由规则需要由 ingress controller 来处理。
可以理解为一个弱网关规则加上 controller 就是一个网关,虽然后面 ingress 会被 gateway-api 替代。
nginx, traefik, apisix, kong... 这些都支持 ingress controller 。
所以有了 traefik 就不用 nginx 做 controller ,除非应用内部(Pod)需要用到 nginx 做静态服务或者其他。

熟悉 nginx 对于配置 ingress 其实作用不是那么大,本来就是抽象了一层规则。
token10086
140 天前
@juzisang
很赞同,对于初学者来说 k8s 抽象概念太多,设计思路的确很巧妙,但是上手翻阅各种文档并且去了解每个配置意思然后再组合起来的过程很痛苦。

@2677672

@piupuer
@GopherDaily 谢谢我再去知识的海洋里浸泡下

@zmh69695328 我是 极客时间的专栏 + 书 + 官方文档 组合服用

@exiaohao
@devopsdogdog 我的理解也是这样,只把 ingress 当入口,复杂场景还是配置 NGINX 方便减少了学习成本。另外配合 php_fpm 应该属于反向代理的一种真要做 ingress 是可以,当成资源服务器官方文档有例子


@jiangzm 了解下来是这样的,我还是再去把文档多读几遍
hardto
140 天前
@beyondstars node 跨越公网的安全问题一般在 4 层解决吧( vpn 啥的),node 上的应用层一般不考虑安全问题
bazbaozhilv
140 天前
有了 Ingress 还用 Nginx 吗?

首先我之前看过的资料,ingress 是概念性的东西,如 pod ,是 k8s 的一个控制器,而 nginx ingress 是 ingress 的具体实现,ingress 我之前还玩过 traefik

其他问题嘛,我就不清楚了,毕竟没从事 k8s 相关的工作
mritd
140 天前
9 楼说的已经很到位了,ingress 只是个逻辑概念, 你可以理解为 ingress 在 k8s etcd 里就是个 json(protobuf) object ,他只是一个有自己规范的协议对象而已

会有一个 ingress controller 负责 watch 这个 obj, 然后根据 ingress 的定义来进行路由

所以说 nginx 跟 ingress 是完全两个东西, 没有所谓的替代、 不学的说法, 只不过是大家习惯使用 nginx ingress controller 配合 ingress 而已

总不能说 学会了 http 协议就完全不需要学 Spring boot 、postman 之类的软件或框架吧
bli22ard
140 天前
这回答里面就 9 楼和 18 楼说的对, 其他回答连 ingress 概念都没搞明白
flmn
140 天前
@antipro docker swarm 为什么不要用在生产环境?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1001980

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX