K8s-nginx-ingress
安装
安装IngressNginxController见K8s安装Kuboard
配置支持websocket
部署netty服务端,相关代码见iexxk/springLeaning-netty
修改服务的Ingress,关键点添加注解
nginx.org/websocket-services
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
nginx.org/websocket-services: netty #添加该句,netty对应下面的服务名
labels:
k8s.kuboard.cn/name: netty
name: netty
namespace: exxk
resourceVersion: '919043'
spec:
ingressClassName: myingress
rules:
- host: netty.iexxk.io
http:
paths:
- backend:
service:
name: netty
port:
number: 8080
path: /test
pathType: Prefix
- backend:
service:
name: netty #服务名
port:
number: 8081 #netty的端口
path: /ws #匹配规则
pathType: Prefix测试,通过postman,点击
new->WebSocket
,填入netty.iexxk.io/ws
,点击连接就可以发送消息了
问题
通过返回的消息,可以发现ingress消息返回的客户端ip是ingress-nginx的pod的容器ip,通过host/nodePort的形式发现可以拿到客户端真实的ip,因此想要拿到客户端ip可能还需要额外配置其他的配置。
1
2
3
4
5
6
7#---通过ingress---netty.iexxk.io/ws----------------
接收的消息:[10-234-216-40.ingress-nginx-controller-myingress.ingress-nginx.svc.cluster.local][12:29:59] ==> 123123
发送的消息:123123
#---通过hostPort/nodePort----172.16.30.165:30081/ws---------
接收的消息:[172.16.10.168][12:29:56] ==> 2312
发送的消息:2312问题ingress上传文件时报413
POST /api/.. HTTP/1.1" 413
,请求体过大解决:1. 局部设置在项目的ingress下(也就是域名下)添加注解
nginx.ingress.kubernetes.io/proxy-body-size
设置值为100m,在kuboard界面点击namespace=>Applications=>Ingress=>edit=>注解=>下拉选择proxy-body-size
。- 全局设置未成功