我是 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端口外部访问感到相当困惑。我已经在这个问题上停留了一段时间,非常感谢任何指导。谢谢!
如果您查看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 正在取代它。