Hazelcast kubernetes 发现使用 API 并使用 envoy 代理作为 sidecar
Hazelcast kubernetes discovery using API with envoy proxy as sidecar
我们在嵌入式模式下是 运行 hazelcast,而应用程序在 kubernetes 集群中是 运行。我们正在使用 Kubernetes API 进行发现。
一切正常,现在我们刚刚开始使用 envoy
作为 SSL 的 sidecar。现在,对于 hazelcast
端口 5701
上的 TCP inbound
和 outbound
,我们已经在 Envoy 中启用了 TLS,但尚未对 kubernetes API 调用进行更改。
现在我们低于异常:
"class":"com.hazelcast.internal.cluster.impl.DiscoveryJoiner","thread_name":"main","type":"log","data_version":2,"description":"[10.22.69.149]:5701
[dev] [3.9.4] Operation: [get] for kind: [Endpoints] with name:
[servicename] in namespace: [namespace]
failed.","stack_trace":"j.n.ssl.SSLException: Unrecognized SSL
message, plaintext connection?\n\tat
s.s.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)\n\tat
s.s.ssl.InputRecord.read(InputRecord.java:527)\n\tat
s.s.s.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)\n\tat
s.s.s.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)\n\tat
s.s.s.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)\n\tat
s.s.s.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)\n\tat
o.i.c.RealConnection.connectTls(RealConnection.java:281)\n\tat
o.i.c.RealConnection.establishProtocol(RealConnection.java:251)\n\tat
o.i.c.RealConnection.connect(RealConnection.java:151)\n\tat
有人可以帮助完成使用 APIs 和 envoy 作为 sidecar 的 Hazelcast k8s 发现所需的整体更改吗?
您可以在下面找到一个示例配置,了解如何使用 Envoy sidecar 部署 Hazelcast 并将其与 mTLS 一起使用。
https://github.com/hazelcast/hazelcast-kubernetes/issues/118#issuecomment-553588983
如果你想用嵌入式架构实现同样的效果,除了你的微服务的 kubernetes 服务之外,你还需要创建一个无头的 kubernetes 服务。然后你需要给 hazelcast-kubernetes 插件 service-name 参数提供无头服务名称。
您可以在 hazelcast-kubernetes 插件 README.md 文件中找到更多信息。
编辑:
可以找到 Hazelcast-Istio-SpringBoot 分步指南 here。
我们在嵌入式模式下是 运行 hazelcast,而应用程序在 kubernetes 集群中是 运行。我们正在使用 Kubernetes API 进行发现。
一切正常,现在我们刚刚开始使用 envoy
作为 SSL 的 sidecar。现在,对于 hazelcast
端口 5701
上的 TCP inbound
和 outbound
,我们已经在 Envoy 中启用了 TLS,但尚未对 kubernetes API 调用进行更改。
现在我们低于异常:
"class":"com.hazelcast.internal.cluster.impl.DiscoveryJoiner","thread_name":"main","type":"log","data_version":2,"description":"[10.22.69.149]:5701 [dev] [3.9.4] Operation: [get] for kind: [Endpoints] with name: [servicename] in namespace: [namespace] failed.","stack_trace":"j.n.ssl.SSLException: Unrecognized SSL message, plaintext connection?\n\tat s.s.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)\n\tat s.s.ssl.InputRecord.read(InputRecord.java:527)\n\tat s.s.s.SSLSocketImpl.readRecord(SSLSocketImpl.java:975)\n\tat s.s.s.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)\n\tat s.s.s.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)\n\tat s.s.s.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)\n\tat o.i.c.RealConnection.connectTls(RealConnection.java:281)\n\tat o.i.c.RealConnection.establishProtocol(RealConnection.java:251)\n\tat o.i.c.RealConnection.connect(RealConnection.java:151)\n\tat
有人可以帮助完成使用 APIs 和 envoy 作为 sidecar 的 Hazelcast k8s 发现所需的整体更改吗?
您可以在下面找到一个示例配置,了解如何使用 Envoy sidecar 部署 Hazelcast 并将其与 mTLS 一起使用。
https://github.com/hazelcast/hazelcast-kubernetes/issues/118#issuecomment-553588983
如果你想用嵌入式架构实现同样的效果,除了你的微服务的 kubernetes 服务之外,你还需要创建一个无头的 kubernetes 服务。然后你需要给 hazelcast-kubernetes 插件 service-name 参数提供无头服务名称。
您可以在 hazelcast-kubernetes 插件 README.md 文件中找到更多信息。
编辑: 可以找到 Hazelcast-Istio-SpringBoot 分步指南 here。