问题标签 [spring-cloud-kubernetes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
283 浏览

azure - spring-cloud-kubernetes 停止监听 Co​​nfigMap 事件

我在 Azure Kubernetes 服务上运行的简单 spring-boot 2.1.5.RELEASE 负责监听 Co​​nfigMap 更改 - 接收“强制关闭”。

  • spring-boot-starter-parent = 2.1.5.RELEASE
  • spring-cloud-dependencies = Greenwich.SR1

相关配置片段:

一段时间后,AKS 发出信号Exec Failure java.io.EOFException: null,并且 kubernetes 客户端尝试重新连接。

最终它通过WebSocket successfully opened信息成功,但在同一秒内它也发出信号Force closing the watch io.fabric8.kubernetes.client.dsl.internal.WatchConnectionManager@59ec7020并且看起来它终止了连接。ConfigMap 的进一步更新不会触发任何事件 :(

通常设置权限,因为事件被服务正确捕获以进行初始测试运行:

有没有人遇到过类似的问题,可以帮助我缩小潜在的根本原因?

0 投票
2 回答
302 浏览

kubernetes - gitlab auto devops 的唯一服务名称

在使用 gitlab auto devops 时,我注意到每个项目都是在自己的命名空间中创建的,将服务名称定义为production-auto-deploy.

可以自定义此服务名称吗?例如,我希望它包含项目名称,因此映射production-auto-deploy->app-production-auto-deploysome-microservice-production-auto-deploy.

我希望这些服务名称唯一的原因是因为我正在评估 spring-cloud-kubernetes,并且我需要使用 feign 客户端进行功能区发现的唯一服务名称。

另外我想知道为什么每个项目都有自己的命名空间,这是某种最佳实践吗?可以将 auto devops 配置为将所有项目部署在同一命名空间中吗?

0 投票
3 回答
7115 浏览

spring-boot - ConfigMap 数据(yml 格式) - Kubernetes

我有一个 application.yml (Spring) 文件,它有近 70 个字段,想要将这些字段移动到 ConfigMap。在设置 ConfigMap 的过程中,实现了 70 个字段全部扁平化 示例:webservice.endpoint.transferfund 将 70 个字段全部转换为扁平化会是一个痛苦的任务,有什么办法吗?

请建议。

下面的配置正在工作:

下面的配置不起作用,尝试它为 yml 格式。

在 src/main/resources/application.yml 中有以下字段来访问 ConfigMap 键:

更新:

配置图说明:

部署脚本:(configMapRef 名称提供为 configmap 名称,如上所示)

0 投票
2 回答
1476 浏览

kubernetes - 使用 Spring Cloud Kubernetes 进行服务发现

我正在使用典型的 Spring 云堆栈对简单的微服务架构进行 POC,但不是 Eureka 服务器,而是使用不起作用的 spring-cloud-kubernetes 进行服务发现。

整个 POC 在这里 - https://github.com/dhananjay12/spring-microservices-using-spring-kubernetes

网关作为边缘服务器和 2 个下游服务——用户服务和联系我们服务。

k8 设置位于 k8s 文件夹中。

下游服务具有以下依赖关系:

应用程序.yml

引导程序.yml:

@EnableDiscoveryClient和主类中的注释。

网关服务有过于相关的 Kubernetes 依赖:

应用程序.yml

引导程序.yml

@EnableDiscoveryClient和主类中的注释。

请在此处查看部署和服务 yaml - https://github.com/dhananjay12/spring-microservices-using-spring-kubernetes/tree/master/k8s

我能够到达网关,但它没有路由到像用户服务这样的下游服务:

例如 - /user-service/users/getPublicMailingAddress

给出 Whitable 错误页面

在此处输入图像描述

网关中的日志显示:

0 投票
4 回答
2663 浏览

kubernetes - Spring Cloud Kubernetes + Spring Cloud Gateway:无法找到 k8s 服务的实例

我正在使用 Spring Cloud Kubernetes + Spring Cloud Gateway(SCG),在 GKE 上部署我的应用程序时遇到了一些麻烦。SCG 没有找到 k8s 服务,我仍然得到这个错误:

uiservice是 Angular 应用程序。

当我看看.../actuator/gateway/routes我有这个结果:

请注意,服务很容易被发现,因为:"route_id": "CompositeDiscoveryClient_gateway"而且"route_id": "CompositeDiscoveryClient_uiservice",这些路线不是我的(我没有定义它们)。

我看了这篇文章:如何设置 Spring Cloud Gateway 应用程序以便它可以使用 Spring Cloud Kubernetes 的服务发现? 没有成功。

我的配置:

另外,如何禁用网关自动发现?我不想要"route_id": "CompositeDiscoveryClient_gateway"

依赖项:

谢谢你的帮助

0 投票
1 回答
1944 浏览

kubernetes - Spring Cloud Kubernetes:无法读取带有名称的 configMap

有人知道如何解决这个问题吗:WARN | main | o.s.c.k.c.ConfigMapPropertySource | Can't read configMap with name: [commons] in namespace:[dev]. Ignoring 我的配置中有这个bootstrap-prod.yml

但是由于该错误,应用程序无法启动。与此处描述的相同问题:https ://github.com/spring-cloud/spring-cloud-kubernetes/issues/138 我将命名空间的 ServiceAccount 绑定到集群view角色。

奇怪的是在同一个命名空间中有 2 个应用程序,第一个(一个 spring clud 网关应用程序)可以读取它的 configMap,但第二个(一个简单的 spring boot web 应用程序)不能。我错过了什么?该应用程序部署在 GKE 上。

和 ConfigMap:

谢谢你的帮助

0 投票
0 回答
150 浏览

spring - Spring Cloud Kubernetes:无法将机密传递到 application_properties.yaml

我正在尝试应用 spring cloud kubernetes 以便能够在我的 application_properties.yml 文件中使用我的秘密。

我已经像这样设置了我的deployment.yaml

使用名称“postgres-access”创建我的秘密,我的 secrets.yml 看起来像这样

在我的 application_properties.yaml

并试图在我的 application.yml 文件中访问我的秘密

但是,这并没有拉入我的凭据,dev.user并且dev.pwd

它在身份验证上失败,因为它分别使用'dev.user''dev.pwd'用户名和身份验证。

0 投票
1 回答
348 浏览

spring-cloud - 春季云数据流服务器上的 kubernetes 仪表板加载错误

尝试在 kubernetes 上运行 Spring Cloud Dataflow 服务器。当我尝试在浏览器中打开仪表板 url ( https://scdfserverurl/dashboard/#/apps ) 时,它的部分加载并在日志中给出以下错误。其他组件跳过运行良好并且能够访问该网址。

错误堆栈跟踪

2019-10-29 23:12:20.855+0000 [http-nio-9393-exec-9] 错误 oscdscRestControllerAdvice - 处理请求 org.springframework.web.client.RestClientException 时捕获异常:无法提取响应:没有合适的 HttpMessageConverter在 org.springframework.web.client.RestTemplate 的 org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:121) 找到响应类型 [org.springframework.hateoas.Resources] 和内容类型 [text/html] $ResponseEntityResponseExtractor.extractData(RestTemplate.java:995) at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:978) at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:737 ) 在 org.springframework.web.client.RestTemplate。在 org.springframework.hateoas.client.Traverson$TraversalBuilder.toObject(Traverson.java:344) 在 org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:628) 在 org 执行(RestTemplate.java:710) .springframework.cloud.skipper.client.DefaultSkipperClient.listDeployers(DefaultSkipperClient.java:335) at org.springframework.cloud.dataflow.server.stream.SkipperStreamDeployer.platformList(SkipperStreamDeployer.java:610) at org.springframework.cloud.dataflow .server.service.impl.DefaultStreamService.platformList(DefaultStreamService.java:339) at org.springframework.cloud.dataflow.server.service.impl.DefaultStreamService$$FastClassBySpringCGLIB$$89697014.invoke() at org.springframework.cglib.proxy .MethodProxy.invoke(MethodProxy.java:218) 在 org.springframework.aop.framework。CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:749) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:294)在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:98) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) 在 org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor org.springframework.cloud.dataflow.server.service.impl.DefaultStreamService$$EnhancerBySpringCGLIB$$a40fcfc9.platformList() 中的 .intercept(CglibAopProxy.java:688)。dataflow.server.controller.StreamDeploymentController.platformList(StreamDeploymentController.java:122) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl。 invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:189) at org.springframework .web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:138) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) at org.springframework.web.servlet .mvc。org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800) 在 org.springframework.web.servlet.mvc 的 method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)。 method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1038) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:942)在 org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005) 在 org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897) 在 javax.servlet.http.HttpServlet.service(HttpServlet .java:634) 在 org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:741) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 在 org. apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.ForwardedHeaderFilter.doFilterInternal(ForwardedHeaderFilter. java:157) 在 org.springframework.web.filter.OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework .boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:90) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain .internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) 在 org. springframework.web.filter.OncePerRequestFilter。doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework .web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:92) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java :193) 在 org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) 在 org.springframework.web.filter 的 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)。一次请求过滤器。doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.springframework .boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117) 在 org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106) 在 org.springframework .web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java :166) 在组织。springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain. java:193) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:200) 在 org.apache.catalina.core .StandardContextValve.invoke(StandardContextValve.java:96) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) 在org.apache.catalina.valves.ErrorReportValve。在 org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:679) 在 org.apache.catalina.valves.invoke(RemoteIpValve.java:679) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) 调用(ErrorReportValve.java:92) .catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) 在 org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) 在 org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66 ) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1415) 在 org.apache.tomcat 的 org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)。 util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:第1149章.run(Thread.java:748)

Kubernetes 配置 YML

数据流服务器的 POM.XML

0 投票
1 回答
432 浏览

spring-cloud-stream - spring cloud dataflow on Kubernetes 部署错误

我正在开发春季云数据流流应用程序。我能够在 Cloud Foundry 中运行船长来运行 Spring 云数据流服务器。现在我正在尝试与在 kubernetes 集群中运行的船长运行相同的操作,并且在部署时遇到错误,即使我在部署的环境配置中明确给出了用户名。

引起:io.fabric8.kubernetes.client.KubernetesClientException:执行失败:GET at:kubernetes_cluster_url:6443/api/v1/namespaces/pocdev/services?labelSelector=spring-app-id%3Dtest444-pocclient。服务帐户可能已被撤销。禁止服务:用户“system:anonymous”无法在命名空间“poc-dev”中的 API 组“”中列出资源“服务”。

用于 Kubernetes 部署的 SKIPPER YML

完整的堆栈跟踪

0 投票
1 回答
1724 浏览

spring - Spring Cloud kubernetes 未加载配置映射

我创建了名为 personservice 和 personservice-dev 的 2 个配置映射。

我正在使用配置文件 dev 运行 spring boot 应用程序,但它没有加载正确的配置映射。这是我在崩溃的 pod 日志中看到的。

Kubectl 获取配置映射

在此处输入图像描述

部署文件:

引导程序: