[英]How to inject on SpringBoot application as SideCar Proxy in another SpringBoot application in Kuma or any other Service Mesh
我知道如何使用 Kuma 或 Istio 作为服务网格并将一个 SideCar 代理注入一个现有的 SpringBoot 应用程序或任何其他应用程序,但我们可以将一个 SpringBoot 应用程序作为 SideCar 代理注入另一个 SpringBoot 应用程序。
上下文是,可以说 SideCar 代理 SpringBoot 应用程序可能具有主 SpringBoot 服务中可能需要的基本内容(即身份验证、安全策略或任何其他类型的策略等)。 并且同一个 SideCar 代理应用程序可以注入到任何其他应用程序中。
问题可能听起来有点模糊,但如果有任何不清楚或令人困惑的地方,我可以提供更多详细信息。
谢谢
据我所知,这在 Kuma 或任何其他服务网格中是不可能的。 我相信您要求的是能够自定义/替换服务网格使用的代理。 对于使用 Envoy 作为 sidecar 代理的 Kuma 和 Istio,您需要在 Springboot 应用程序中重新实现大部分 Envoy。
我认为您最好尝试将 SpringBoot“sidecar”中的逻辑移动到 Kuma 策略或某个网关中。 例如, Apache APISIX 支持 Java 插件。
我不确定我是否正确回答了这个问题。 看起来您需要有两个 SpringBoot 应用程序,一个是主应用程序,另一个是它的边车。 这听起来不像是一件不寻常的事情。
以下是您可能拥有的 Kubernetes deployment.yaml 示例:
apiVersion: apps/v1
kind: Deployment
metadata:
name: sidecar-deployment
labels:
role: app
spec:
replicas: 1
selector:
matchLabels:
role: app
template:
metadata:
labels:
role: app
spec:
volumes:
- name: shared-data
emptyDir: {}
containers:
- name: mainapp
image: "dokerhubuser/mainapp"
volumeMounts:
- name: shared-data
mountPath: /usr/share/mainapp-folder
ports:
- containerPort: 8080
- name: sidecar
image: "dokerhubuser/sidecar"
volumeMounts:
- name: shared-data
mountPath: /usr/share/sidecar-folder
ports:
- containerPort: 8888
在此处查看有关此 yaml 文件的更多详细信息: https ://kubernetes.io/docs/concepts/workloads/controllers/deployment/
这是非常基本的。 重点是 sidecar 是同一部署中的第二个容器。
他们将共享相同的文件系统。 Sidecar 应用程序可以通过 localhost 寻址:(例如 HTTP://localhost:8888 在我们的例子中)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.