如何在AWS EC2的Minikube中配置可对外访问的Ingress网关暴露多服务
完全可以实现,你此前配置MetalLB的LoadBalancer类型Ingress仅能内部访问,是因为MetalLB分配的是集群内部虚拟IP段,未和EC2公网网络打通,直接用Nginx Ingress控制器+NodePort暴露的方案即可满足单端口、路径路由多微服务的需求。
具体配置步骤
步骤1:启用Minikube内置的Ingress插件
Minikube默认集成了Nginx Ingress控制器,直接启用插件即可,无需手动部署:
minikube addons enable ingress
验证控制器正常运行:
kubectl get pods -n ingress-nginx
确认返回的pod状态为Running即可。
步骤2:部署微服务并创建ClusterIP类型Service
无需给每个微服务单独设置NodePort,只要保证微服务的Service在集群内部可访问即可,示例如下:
# 部署helloworld微服务示例 kubectl create deployment --image=你的helloworld镜像 helloworld-app kubectl expose deployment helloworld-app --port=服务监听端口 --name=helloworld-svc # 其他mainpage、editorspage微服务按照同样逻辑部署
步骤3:编写Ingress路由规则配置
新建ingress-route.yaml文件,按照你需要的路径规则配置:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: micro-service-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /$2 # 后端服务根路径为/时需要加该重写规则,避免路径参数透传导致404 spec: ingressClassName: nginx rules: - http: paths: - path: /helloworld(/|$)(.*) pathType: Prefix backend: service: name: helloworld-svc # 替换为你实际的helloworld服务名 port: number: 80 # 替换为你服务实际的监听端口 - path: /mainpage(/|$)(.*) pathType: Prefix backend: service: name: mainpage-svc # 替换为你实际的mainpage服务名 port: number: 80 - path: /editorspage(/|$)(.*) pathType: Prefix backend: service: name: editorspage-svc # 替换为你实际的editorspage服务名 port: number: 80
如果你的后端服务本身就通过子路径提供服务,可删除annotations中的rewrite-target配置,避免路径被错误重写
步骤4:应用Ingress配置
kubectl apply -f ingress-route.yaml
验证配置生效:
kubectl get ingress
步骤5:暴露Ingress控制器对外端口
默认Ingress控制器的Service已经是NodePort类型,执行以下命令查询对应端口:
kubectl get svc -n ingress-nginx
返回结果中80端口对应的NodePort值就是统一对外端口,你只需要在EC2安全组放行该端口,即可通过如下地址访问不同微服务:
http://EC2公网IP:对应NodePort/helloworldhttp://EC2公网IP:对应NodePort/mainpagehttp://EC2公网IP:对应NodePort/editorspage
如果你想固定使用之前的31568端口,可直接修改Ingress控制器的Service配置指定端口:
kubectl edit svc ingress-nginx-controller -n ingress-nginx
找到ports下http对应的nodePort字段,将值修改为31568,保存退出即可,注意提前确认31568端口未被其他服务占用。
常见问题排查
- 访问返回404:优先检查rewrite-target配置是否和后端服务的路径逻辑匹配
- 访问不通:先确认EC2安全组已放行对应NodePort端口,再确认EC2本地防火墙未拦截Minikube的端口流量
内容的提问来源于stack exchange,提问作者Sri Durga
相关产品推荐
相关产品推荐

