Kubernetes Ingress - TCP 是否也需要或仅 HTTP/HTTPS 流量需要 Ingress 定义?
Kubernetes Ingress - is the Ingress definition required for TCP also or only for HTTP/HTTPS traffic?
我已经在端口 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 Url。
所以基本上这是否意味着我实际上根本不需要我的 Ingress Controller 定义?
我根本不需要部署它?
我只需要它,如果我需要一些 URL 的 HTTP 访问,例如:hostname:port/pathA or hostname:port/pathB
对吗?对于常规 TCP 连接,我们根本不需要 Ingress YAML 定义吗?谢谢
是的,在这种情况下您根本不需要入口。根据 kubernetes 官方文档,Ingress 是:
An API object that manages external access to the services in a cluster, typically HTTP.
因此,如果您不需要通过 http 进行任何外部访问,则可以省略入口。
参考:https://kubernetes.io/docs/concepts/services-networking/ingress/
我已经在端口 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 Url。
所以基本上这是否意味着我实际上根本不需要我的 Ingress Controller 定义?
我根本不需要部署它?
我只需要它,如果我需要一些 URL 的 HTTP 访问,例如:hostname:port/pathA or hostname:port/pathB
对吗?对于常规 TCP 连接,我们根本不需要 Ingress YAML 定义吗?谢谢
是的,在这种情况下您根本不需要入口。根据 kubernetes 官方文档,Ingress 是:
An API object that manages external access to the services in a cluster, typically HTTP.
因此,如果您不需要通过 http 进行任何外部访问,则可以省略入口。
参考:https://kubernetes.io/docs/concepts/services-networking/ingress/