基于 Nginx Ingress Controller 的四层(TCP)转发配置
1. 简介
本指南将展示如何通过配置 ConfigMap
来实现 Nginx Ingress Controller 的四层转发(TCP),并通过配置测试应用程序验证配置的有效性。本文中使用的 Kubernetes 组件包括 ConfigMap
、Service
、Deployment
以及 LoadBalancer 类型的 Service。还将演示如何热加载修改 ConfigMap
,以使更改能够即时生效。 Nginx-Ingress-Controller 的安装文档可以参考此链接。
2. 配置 Ingress Controller 的 TCP 服务
2.1 创建 TCP 服务配置 ConfigMap
首先,创建一个 ConfigMap
来定义 Ingress Nginx 的 TCP 服务,将特定的端口转发到相应的服务。
apiVersion: v1
kind: ConfigMap
metadata:
name: tcp-services
namespace: ingress-nginx
data:
53: "kube-system/kube-dns:53"
8080: "ingress-nginx/nginx-hello-world:8080"
53
: 用于将 DNS 请求转发到kube-dns
服务。8080
: 用于将请求转发到部署的nginx-hello-world
服务。
2.2 创建 LoadBalancer 类型的 Ingress Nginx Service
为 Ingress Nginx 创建一个 LoadBalancer
类型的 Service
,使其支持四层 TCP 负载均衡。(如果没有LoadBalancer 可以使用在启动一个有 telnet 和 curl 的容器通过 ClusterIP 访问)
apiVersion: v1
kind: Service
metadata:
name: ingress-nginx
namespace: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx