0

我知道如何使用 Kuma 或 Istio 作为服务网格并将一个 SideCar 代理注入一个现有的 SpringBoot 应用程序或任何其他应用程序,但我们可以将一个 SpringBoot 应用程序作为 SideCar 代理注入另一个 SpringBoot 应用程序。

上下文是,可以说 SideCar 代理 SpringBoot 应用程序可能具有主 SpringBoot 服务中可能需要的基本内容(即身份验证、安全策略或任何其他类型的策略等)。并且可以将同一个 SideCar 代理应用程序注入到任何其他应用程序中。

问题可能听起来有点模糊,但如果有任何不清楚或令人困惑的地方,我可以提供更多细节。

谢谢

4

2 回答 2

0

据我所知,这在 Kuma 或任何其他服务网格中是不可能的。我相信您所要求的是能够自定义/替换服务网格使用的代理。对于使用 Envoy 作为 Sidecar 代理的 Kuma 和 Istio,您需要在 Springboot 应用程序中重新实现大部分 Envoy。

我认为您最好尝试将 SpringBoot“sidecar”中的逻辑移动到 Kuma 策略或某个网关中。例如,Apache APISIX支持 Java 插件

于 2021-10-15T20:04:09.077 回答
0

我不确定我的问题是否正确。看起来你需要有两个 SpringBoot 应用程序,一个是主应用程序,另一个是它的 sidecar。这听起来不是什么不寻常的事情。

这是您可能拥有的 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)

于 2021-10-15T20:20:07.743 回答