You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何配置Kubernetes Nginx Ingress实现外部访问Lagom微服务?

从外部访问Kubernetes中的Lagom微服务:Nginx Ingress配置指南

嘿,作为刚接触Kubernetes和Lagom的新手,这个问题太常见啦!我来一步步帮你理清怎么通过Nginx Ingress让外部访问你的微服务,先直接给你核心疑问的答案:不一定需要配置externalIPs——这完全取决于你的Kubernetes集群的网络环境,下面我给你拆解最通用的配置流程,跟着做就能搞定。

第一步:先装好Nginx Ingress Controller

要使用Nginx Ingress,首先得在你的K8s集群里部署好对应的控制器。你可以用kubectl执行官方提供的静态部署命令来完成安装,比如:

kubectl apply -f <官方静态部署清单的本地文件或内部可访问路径>

安装完成后,记得检查控制器的Pod是否正常运行:

kubectl get pods -n ingress-nginx

只有Pod处于Running状态,才能继续下一步哦。

第二步:确保Lagom微服务的Service配置正确

Lagom微服务在K8s里一般会以ClusterIP类型的Service暴露(这也是默认类型),先确认你的Service已经正确关联到Lagom的Pod。这里给你一个示例配置:

apiVersion: v1
kind: Service
metadata:
  name: lagom-service
spec:
  selector:
    app: lagom-app # 这里要和你的Lagom Pod的标签匹配
  ports:
    - protocol: TCP
      port: 80 # Service对外暴露的端口
      targetPort: 9000 # 替换成Lagom服务实际监听的端口
  type: ClusterIP

把上面的内容保存成lagom-service.yaml,然后执行:

kubectl apply -f lagom-service.yaml

第三步:配置Ingress路由规则

接下来就是核心的Ingress配置,它会把外部的请求路由到你的Lagom Service。这里给你一个示例配置:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: lagom-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    # 如果你的Lagom服务需要HTTPS访问,可以添加SSL相关注解,比如:
    # nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
  ingressClassName: nginx # 指定使用Nginx Ingress Controller处理这个规则
  rules:
    - host: your-domain.com # 替换成你用来访问的域名(没有域名的话也可以暂时用IP)
      http:
        paths:
          - path: /lagom/(.*)
            pathType: Prefix
            backend:
              service:
                name: lagom-service # 对应第二步创建的Service名称
                port:
                  number: 80 # 对应第二步Service暴露的端口

保存成lagom-ingress.yaml后执行:

kubectl apply -f lagom-ingress.yaml

再聊回你问的externalIPs:到底要不要配置?

这个得分场景来看:

  • 如果你的K8s集群是云厂商托管的(比如EKS、GKE、AKS),云厂商会自动给Nginx Ingress Controller的Service分配一个外部负载均衡IP,这时候你完全不需要手动配置externalIPs,直接用这个IP或者绑定域名就能访问你的Lagom服务了。
  • 如果是自建集群(比如本地的minikube、kubeadm集群),没有云厂商的负载均衡支持,这时候有两种方案可选:
    • 方案一:把Nginx Ingress Controller的Service类型改成NodePort,这样你可以通过任意集群节点的IP加上分配的NodePort端口来访问。
    • 方案二:配置externalIPs——如果你的集群有固定的外部IP,可以给Nginx Ingress Controller的Service加上这个字段,示例如下:
      apiVersion: v1
      kind: Service
      metadata:
        name: ingress-nginx-controller
        namespace: ingress-nginx
      spec:
        externalIPs:
          - 192.168.1.100 # 替换成你的集群可用的外部IP
        ports:
          - name: http
            port: 80
            targetPort: http
          - name: https
            port: 443
            targetPort: https
        type: ClusterIP
      
      这样外部请求就能通过这个IP直接打到Ingress Controller,进而路由到你的Lagom服务。

最后验证一下外部访问

配置完成后,你可以用curl或者浏览器测试访问:

  • 如果用域名:curl http://your-domain.com/lagom/your-service-endpoint
  • 如果用IP:curl http://<ingress-ip>/lagom/your-service-endpoint

内容的提问来源于stack exchange,提问作者Imen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 04:35:50