如何使用 GCE Ingress 从 GKE 集群外部隐藏端点?
How to hide endpoint from outside the GKE cluster with GCE Ingress?
假设我的 GKE 集群中有一个“用户服务”运行,具有以下 Ingress 配置:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
backend:
serviceName: users-service
servicePort: 12345
在我的用户服务中,我公开了一些关于 users-service/metrics 的指标。我想从集群外部隐藏这个 /metrics 端点。类似于:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
respond:
path: metrics
status: 404
backend:
serviceName: users-service
servicePort: 12345
因此,每当外部客户端向示例发出请求时。com/users/metrics他都会收到 404 响应。 GCE Ingress 可以做到这一点吗?
您可以在规范中指定多个路径。请求将匹配最具体的路径。
因此,您的规范中会有 /user/*
的路径和 /user/metrics/*
的路径。 GKE 还提供了一个名为 default-http-backend
的默认后端服务,它将 return 一个 404。把这些放在一起,你会得到类似的东西:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
backend:
serviceName: users-service
servicePort: 12345
- path: /users/metrics/*
backend:
serviceName: default-http-backend
servicePort: 80
根据以上内容,发送到 example.com/users/metrics/*
的任何内容都应该 return 404。
假设我的 GKE 集群中有一个“用户服务”运行,具有以下 Ingress 配置:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
backend:
serviceName: users-service
servicePort: 12345
在我的用户服务中,我公开了一些关于 users-service/metrics 的指标。我想从集群外部隐藏这个 /metrics 端点。类似于:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
respond:
path: metrics
status: 404
backend:
serviceName: users-service
servicePort: 12345
因此,每当外部客户端向示例发出请求时。com/users/metrics他都会收到 404 响应。 GCE Ingress 可以做到这一点吗?
您可以在规范中指定多个路径。请求将匹配最具体的路径。
因此,您的规范中会有 /user/*
的路径和 /user/metrics/*
的路径。 GKE 还提供了一个名为 default-http-backend
的默认后端服务,它将 return 一个 404。把这些放在一起,你会得到类似的东西:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-service
annotations:
kubernetes.io/ingress.class: 'gce'
kubernetes.io/ingress.allow-http: 'false'
spec:
rules:
- host: example.com
http:
paths:
- path: /users/*
backend:
serviceName: users-service
servicePort: 12345
- path: /users/metrics/*
backend:
serviceName: default-http-backend
servicePort: 80
根据以上内容,发送到 example.com/users/metrics/*
的任何内容都应该 return 404。