如何使用 Gateway API 为 Kubernetes 应用程序设置标准端口 80 外部访问?

问题描述 投票:0回答:1

我是 Kubernetes 新手,还没有使用过 Ingress。我注意到根据文档,Ingress 不再更新,所以我不打算使用它。相反,我正在考虑使用网关 API。我的问题是:如何通过标准端口(如 http://example.com/(端口 80))启用外部访问?

我不确定哪个组件应该提供端口 80 的外部入口点。虽然我看过一些教程,其中网关的侦听器设置为端口 80,但它似乎是一个内部端口。例如,在此 NGINX Gateway Fabric 文档 (https://docs.nginx.com/nginx-gateway-fabric/how-to/traffic-management/routing-traffic-to-your-app/) 中,外部access端口是高编号的NodePort,看起来不太优雅。

我对如何优雅地实现标准80端口外部访问感到相当困惑。我已经在这个问题上停留了一段时间,非常感谢任何指导。谢谢!

kubernetes kubernetes-gateway-api
1个回答
0
投票

如果您查看docs,端口 80 这里是一个外部端口:

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: cafe
spec:
  gatewayClassName: nginx
  listeners:
  - name: http
    port: 80
    protocol: HTTP
EOF

这是 Kubernetes 内的内部服务端口(后端):

kubectl apply -f - <<EOF
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: coffee
spec:
  parentRefs:
  - name: cafe
  hostnames:
  - "cafe.example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: coffee
      port: 80
EOF

这与 Ingress 资源 的工作方式相同。然而,正如您提到的,Gateway API 正在取代它。

© www.soinside.com 2019 - 2024. All rights reserved.