几个月以来,我们一直在使用Eureka和我们的Spring Boot应用程序.我们已使用@DiscoveryClient注释启用了应用程序之间的服务查找.注册,续租和注销按预期进行.
最近,我们遇到了一个场景,我们有非Java应用程序组件(用C++编写),它暴露了我们的许多Spring Boot Java应用程序将使用的3个REST服务端点.我们正在尝试查看C++组件是否可以利用Eureka服务器的REST API在它出现时进行自我注册,以便Spring Boot Java应用程序可以通过Eureka执行常规查找以与C++组件保持联系.
既然不能用在C++组件(显然)尤里卡客户端,我开始测试直接的REST API(如描述在这里使用邮差).通过使用POST方法向http:// eurekaserver:8761/eureka/apps/FOO-APP(使用instanceId = 1111和hostName = foo-app)发送JSON有效负载,注册工作没有任何问题.我可以查询http:// eurekaserver:8761/eureka/apps,可以看到按预期在那里列出的FOO-APP.
但是,当我尝试使用DELETE方法取消操作到http:// eurekaserver:8761/eureka/apps/FOO-APP/1111或http:// eurekaserver:8761/eureka/apps/FOO-APP/foo-app时,我收到404错误.
使用instanceId:
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/1111"
}
Run Code Online (Sandbox Code Playgroud)
OR(hostName的结果相同):
{
"timestamp": 1447479397996,
"status": 404,
"error": "Not Found",
"message": "Not Found",
"path": "/eureka/apps/FOO-APP/foo-app"
}
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的组合,但我无法完成这项工作.我有一种感觉,我错过了一些明显的东西 - 可能是一些小事.任何有关这方面的帮助将不胜感激.
PS: Eureka REST端点文档在URL中提到"v2".但是,这在我的情况下不起作用.注册(适用于我)不使用如上所述的"v2".如果有人可以验证这一点,那也会有所帮助.这似乎没有足够的材料.
背景:
我们有一套约15个Spring Boot应用程序作为微服务.它们都作为Docker容器运行,并作为一个或多个实例的集群运行.我们还使用Eureka等Spring Cloud Netflix组件,并使用Feign/Ribbon从客户端发现正在运行的应用程序实例.
题:
作为POC练习的一部分,我们使用Redis和Hazelcast测试了缓存和Spring Boot配置存储.一切都使用Spring Boot,Spring Cloud和Redis/Hazelcast Java客户端库.但是,当我们在多节点对等集群中部署Hazelcast时,Hazelcast似乎需要一个"已知"IP地址/主机名,并且可访问端口在Java客户端的配置中可用(有或没有Spring).通常,当Hazelcast部署在临时VM实例(例如,EC2)上的多实例集群中时,IP地址和端口信息不可用.所以我们考虑了两种可能的解决方案
找到一种方法将Hazelcast作为Spring Boot应用程序运行,并将其作为Discovery Client注册到Eureka.这样,其他Spring Boot应用程序可以使用Eureka动态发现Hazelcast实例
在Hazelcast中找到一种方法,以便它可以将其IP地址和端口信息动态发布到中央Key/Value存储
如果有人玩过Hazelcast以便能够执行其中一种/两种可能的解决方案,那么如果您可以分享更多相关信息,那就太棒了.如果有第三种方法可以更好地工作,我也会渴望知道这一点.
我拥有的
我在default命名空间中使用了 Kube secrets 进行私有 Docker 注册表身份验证。这按预期工作。例如:
$ kubectl get secret regsecret
NAME TYPE DATA AGE
regsecret kubernetes.io/dockerconfigjson 1 30m
Run Code Online (Sandbox Code Playgroud)
在我的引用中deployment.yml,如下面的代码段所示:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
template:
...
spec:
containers:
- name: bootstrap-nginx
image: quay.io/example/nginx:latest
...
imagePullSecrets:
- name: regsecret
Run Code Online (Sandbox Code Playgroud)
这是我的问题
例如,我需要regsecret在 a 中创建上述内容namepsace,myns如下所示:
$ kubectl get secret regsecret --namespace=myns
NAME TYPE DATA AGE
regsecret kubernetes.io/dockerconfigjson 1 30m
Run Code Online (Sandbox Code Playgroud)
有了这个,我如何regsecret从myns命名空间引用到我的部署规范?如果我使用imagePullSecrets如上所示,它会失败说 …