在 AKS 群集上公开非 HTTP 流量

Exposing Non HTTP Traffic on AKS Cluster

我已经设置了一个 AKS 集群,其中一个 POD 配置为 运行 多个 Tomcat 服务。我的 Apache Web 服务器位于 AKS 群集之外并托管在 VM 上,但位于同一子网中。 Apache 服务器使用 ajp://10.x.x.x:5009/dbp_webui 向位于 AKS 集群内的 Tomcat 发送请求。我正在寻找有关如何公开 Tomcat 服务的选项,以便我的 Apache 可以成功连接。

您可以使用入口来公开您的服务。从版本 0.18.0 开始支持 AJP 协议。 https://github.com/kubernetes/ingress-nginx/blob/main/Changelog.md#0180. Intro into ingress: https://kubernetes.io/docs/concepts/services-networking/ingress/

您可能需要设置额外的注释来描述后端协议:https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#backend-protocol

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-name
  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: "AJP"
spec:
   ...

正如@CSharpRocks 在评论中提到的,AKS 节点默认没有 public IP 地址。这意味着更好的选择是使用 LoadBalancer 服务类型。 https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer

它将部署一个 LB,无论它将驻留在 节点上,它将流量路由到 Pod。带有 AKS 的 AFAIK 可以选择使用 LB 开箱即用地安装 Ingress。

编辑

从头开始

Easier way: use a NodePort type service: https://kubernetes.io/docs/concepts/services-networking/service/#nodeport