自学了 2 周多一点,搞了真实环境( 3 台小鸡)自学。
集群装的 k3s 集成了 traefik 的 Ingress 在使用中有 2 点比较好奇
我自己的结论是:
能代替,但是我还是想只把 Ingress 当成一个流量入口。路由交给 Nginx ,因为 Nginx 更熟悉不用增加学习成本。
不知道这样的做法标准不?
目前我用的是 came 写了个 cronjob 定期生成证书,然后再用系统的 crontab 写入 k8s 的 secret ,能实现功但感觉这样很奇怪。
traefik 自带的 CA 管理和 cert-manager 哪一个好用一点?
Ingress 上配置了 SSL 后,Nginx 还需要配置 SSL 吗? 还是有其他的做法
1
beyondstars 2023-12-20 15:22:54 +08:00 2
1. 有了 ing 还用不用 nginx: 不用
2. CA 证书管理:用 cert-manager 3. 不需要,因为 ing 做的就是 ssl termination. |
2
beyondstars 2023-12-20 15:24:16 +08:00
1 也有例外就是你需要用一些功能 ingress 里面配置起来比较麻烦,但是 nginx 好配,那可以通过路由把 http 流量导到 nginx 然后再在 nginx 里边配。
|
3
DefoliationM 2023-12-20 15:27:38 +08:00 via Android
其实 ingress 就是 nginx
|
4
beyondstars 2023-12-20 15:28:08 +08:00
3 也有例外就是假如你的 node 是跨越公网的,并且你需要加密 ingress controller 到 backend (svc, pod, ...) 的流量,可以在 backend 也上 tls ,并且让 ingress 通过 tls 和 backend 通信。
|
5
token10086 OP |
6
juzisang 2023-12-20 15:40:41 +08:00
Ingress 可以当 Nginx 用,helm 安装 ingress-nginx 提供了很多配置
helm 原理其实很简单,通过配置 + helm 的语法,可以动态生成配置,然后再映射给容器,没啥特殊的 cert-manager 其实也一样 我用了一段时间 k3s ,个人感觉 kubernetes 配置真的是及其繁琐 啰嗦,而且 helm 包因为套了一层配置,大多数 helm 包又要高可用,配置又多又复杂,文档写得也不好,run 起来还特别吃配置...一个简单的事情,经过这么多层封装,变得极其难用,学习成本很高。 个人使用推荐 docker swarm ,特别简单... |
7
LsLsLsLsLs 2023-12-20 16:50:41 +08:00
玩一玩 treafik 小土豆子
|
8
piupuer 2023-12-20 16:58:08 +08:00
有了 Ingress 还用 Nginx 吗
ingress 就是 nginx ,流量入口用 ingress ,同时配合 loadbalancer ,app 应用层可以加一个 nginx container ,app 内有自定义的路由需求会比全部配在 ingress 方便 |
9
GopherDaily 2023-12-20 16:59:27 +08:00 5
- 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 处理证书 |
10
zmh69695328 2023-12-20 17:09:19 +08:00 via Android
借楼问一下,请问自学教程有推荐嘛?
|
11
exiaohao 2023-12-20 21:01:28 +08:00
有了 Ingress 还用 Nginx 吗?
个人意见看业务,比如 k3s 的 traefik 能满足你的需要 就不需要了 如果 traefik 满足不了,可能 nginx/envoy 什么是更好的选择,那就是替换 ingress 的实现了 CA 证书管理: cert-manager CA 部署关系: Ingress 你可以把它当作传统服务商的「负载均衡和 HTTPS 卸载」 在它以北的认为直接暴露公网了,如果你还有 WAF 什么的,那就看实际情况配置了 |
12
devopsdogdog 2023-12-20 21:15:20 +08:00 via Android
有了 Ingress 还用 Nginx 吗?
我理解不是一个东西。虽然差不多 比如能直接,当做展示前端代码的 nginx 来用? 或者是配合 php_fpm 用? 请指教,我认为可能在负载均衡,反向代理这块差不多,其他替代不了吧。 |
14
jiangzm 2023-12-20 22:36:12 +08:00
ingress 当然不是 nginx ,ingress 是用来管理路由规则的, 路由规则需要由 ingress controller 来处理。
可以理解为一个弱网关规则加上 controller 就是一个网关,虽然后面 ingress 会被 gateway-api 替代。 nginx, traefik, apisix, kong... 这些都支持 ingress controller 。 所以有了 traefik 就不用 nginx 做 controller ,除非应用内部(Pod)需要用到 nginx 做静态服务或者其他。 熟悉 nginx 对于配置 ingress 其实作用不是那么大,本来就是抽象了一层规则。 |
15
token10086 OP @juzisang
很赞同,对于初学者来说 k8s 抽象概念太多,设计思路的确很巧妙,但是上手翻阅各种文档并且去了解每个配置意思然后再组合起来的过程很痛苦。 @2677672 中 @piupuer @GopherDaily 谢谢我再去知识的海洋里浸泡下 @zmh69695328 我是 极客时间的专栏 + 书 + 官方文档 组合服用 @exiaohao @devopsdogdog 我的理解也是这样,只把 ingress 当入口,复杂场景还是配置 NGINX 方便减少了学习成本。另外配合 php_fpm 应该属于反向代理的一种真要做 ingress 是可以,当成资源服务器官方文档有例子 @jiangzm 了解下来是这样的,我还是再去把文档多读几遍 |
16
hardto 2023-12-20 23:02:19 +08:00
@beyondstars node 跨越公网的安全问题一般在 4 层解决吧( vpn 啥的),node 上的应用层一般不考虑安全问题
|
17
bazbaozhilv 2023-12-20 23:29:15 +08:00
有了 Ingress 还用 Nginx 吗?
首先我之前看过的资料,ingress 是概念性的东西,如 pod ,是 k8s 的一个控制器,而 nginx ingress 是 ingress 的具体实现,ingress 我之前还玩过 traefik 其他问题嘛,我就不清楚了,毕竟没从事 k8s 相关的工作 |
18
mritd 2023-12-21 07:58:45 +08:00 via iPhone
9 楼说的已经很到位了,ingress 只是个逻辑概念, 你可以理解为 ingress 在 k8s etcd 里就是个 json(protobuf) object ,他只是一个有自己规范的协议对象而已
会有一个 ingress controller 负责 watch 这个 obj, 然后根据 ingress 的定义来进行路由 所以说 nginx 跟 ingress 是完全两个东西, 没有所谓的替代、 不学的说法, 只不过是大家习惯使用 nginx ingress controller 配合 ingress 而已 总不能说 学会了 http 协议就完全不需要学 Spring boot 、postman 之类的软件或框架吧 |
19
bli22ard 2023-12-21 09:29:51 +08:00 1
这回答里面就 9 楼和 18 楼说的对, 其他回答连 ingress 概念都没搞明白
|
21
xiaogui 2023-12-21 10:05:04 +08:00
Nginx ingress
|
22
ccde8259 2023-12-21 21:25:49 +08:00
ingress 只是对象,声明了路由……
traefik 是 ingress-controller ,监听 ingress 变化并根据 ingress 路由流量…… nginx 也可以改一改拿来做 ingress-controller ,具体的方案就是 ingress-nginx-controller…… CA 管理建议 cert-manager ,只需要先配个 ClusterIssuer ,对应证书只需要写好 Certificate 以后还能帮你自动 Renew…… 比如我现在部署服务只需要先写份 Certificate 申一本证书,Helm 的 values.yaml 里给打上 ingress 配置,就可以 helm install 完直接域名访问…… |
25
ironboxplus 325 天前
Ingress 可以理解成入口的“声明”或者“接口”这种概念,Nginx 和 traefik 是实现接口的 Ingress Controller ,
traefik 的证书管理不具有分布式的功能,也就是说,你的 traefik 有几个 pod ,就会去申请几次证书,多 traefik 负载均衡肯定是不合理的,证书管理要用 certmanager 此类的 |
26
yunshangdetianya 230 天前
@juzisang swarm 的坑也不少
|