有时候需要在集群外部连接集群内部网络,可以在集群内安装相关的网络代理软件,这里使用的是 v2ray
。
1. 准备
安装此软件需要如下镜像。
1
docker.io/v2fly/v2fly-core:v4.45.2
2. 导入配置
v2ray 的配置定义在 ConfigMap
下:
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
32
33
34
35
36
37
38
39
apiVersion: v1
kind: ConfigMap
metadata:
name: conf-v2ray
namespace: share-app
data:
config.json: |
{
"inbounds": [
{
"port": 8080,
"listen": "0.0.0.0",
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "75aa04d6-3e00-11ed-807a-373594a59655"
}
]
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"acceptProxyProtocol": false,
"headers": {
"Host": "api.d7z.net"
},
"path": "/"
}
}
}
],
"outbounds": [
{
"protocol": "freedom",
"settings": {}
}
]
}
3. 创建应用
配置应用完成后,即可开始创建 v2ray 应用:
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
32
33
34
35
36
37
38
39
40
41
42
43
apiVersion: v1
kind: Service
metadata:
name: svc-v2ray
namespace: share-app
spec:
# type: LoadBalancer (1)
ports:
- port: 8080
name: v2ray
selector:
app: v2ray
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: sts-v2ray
namespace: share-app
spec:
serviceName: svc-v2ray
selector:
matchLabels:
app: v2ray
replicas: 1
template:
metadata:
labels:
app: v2ray
spec:
containers:
- name: v2ray
image: "docker.io/v2fly/v2fly-core:v4.45.2"
args:
- v2ray
- -c
- /data/config.json
volumeMounts:
- name: conf
mountPath: /data/
volumes:
- name: conf
configMap:
name: conf-v2ray
其中
1 | 你可以直接将内部端口暴露,不使用 Ingress |
4. 映射 Ingress
为最大化保证网络安全,防止暴露协议特征,将使用 tls 隧道包裹:
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
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ingress-v2ray
namespace: share-app
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/proxy-body-size: "0"
spec:
ingressClassName: nginx-public
tls:
- hosts:
- api.d7z.net
secretName: tls-pub-d7z
rules:
- host: api.d7z.net
http:
paths:
- path: /api/info
pathType: Prefix
backend:
service:
name: svc-v2ray
port:
name: v2ray
5. 测试
执行完成后,在相关的客户端软件添加新连接,协议为 vmess
,远程地址填入 api.d7z.net
,端口为 443
,传输层协议选择 tls+websocket
,UUID 填入 75aa04d6-3e00-11ed-807a-373594a59655
, Header 请求头填入 Host=api.d7z.net
,路径填入 /api/info
,如无问题,集群内网络连接成功。