我已经定义了在端口 9000 上运行的服务应用程序。它不是 web/http 服务器,它只是一个服务应用程序,在其他应用程序连接到的端口(容器外部)上作为 Windows 服务运行。所以我在我的服务定义和我的配置映射定义中定义了端口 9000。我们使用 NGINX 作为从外部访问的代理,一切正常。
Nginx 服务:
- name: 9000-tcp
nodePort: 30758
port: 9000
protocol: TCP
targetPort: 9000
配置图:
apiVersion: v1
data:
"9000": default/frontarena-ads-aks-test:9000
kind: ConfigMap
服务定义:
apiVersion: v1
kind: Service
metadata:
name: frontarena-ads-aks-test
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 9000
selector:
app: frontarena-ads-aks-test
入口定义:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ads-ingress
annotations:
kubernetes.io/ingress.class: nginx
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /
backend:
serviceName: frontarena-ads-aks-test
servicePort: 9000
如前所述,一切正常。我知道 TCP 用于 L4 层,HTTP 用于 L7 应用层。我需要仅通过其主机名和端口从另一个应用程序访问我的应用程序。没有任何 HTTP 网址。所以基本上这是否意味着我实际上根本不需要我的 Ingress Controller 定义?我根本不需要部署它?只有当我需要使用某些 URL 进行 HTTP 访问时,我才需要它,例如:hostname:port/pathA or hostname:port/pathB
那是对的吗?对于常规的 TCP 连接,我们根本不需要我们的 Ingress YAML 定义?谢谢