[英]How to intercept requests to a service in Kubernetes?
比方说,我定义了一个Service
叫my-backend
的Kubernetes。 我想拦截发送到此服务的每个请求,正确的方法是什么? 例如,同一命名空间下的另一个容器通过http://my-backend发送请求。
我尝试将准入控制器与验证 Webhook 一起使用。 但是,它可以拦截对服务资源的 CRUD 操作,但无法拦截与特定服务的任何连接。
在 Kubernetes 中没有直接的方法来拦截对服务的请求。
对于解决方法,这是您可以执行的操作-
创建一个 sidecar 容器只是为了记录每个传入的请求。 日志记录
在容器中运行tcpdump -i eth0 -n
并过滤掉请求
使用Zipkin
在云提供商上创建服务,将有自己的日志记录机制。 对于前 - aws 上的负载均衡器服务将在 S3 上生成其日志。 aws elb 日志
Kubernetes NetworkPolicy 对象将对此有所帮助。 网络策略控制 Pod 组如何相互通信以及如何与其他网络端点通信。 您只能根据 pod 选择器允许进入 my-backend 服务的流量。 下面是允许来自特定的入口流量的示例
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ingress-only-from-frontend-to-my-backend
namespace: default
spec:
podSelector:
matchLabels:
<my-backend pod label>
policyTypes:
- Ingress
ingress:
- from:
- podSelector:
matchLabels:
<Frontend web pod label>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.