问题标签 [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.
azure - spring-cloud-kubernetes 停止监听 ConfigMap 事件
我在 Azure Kubernetes 服务上运行的简单 spring-boot 2.1.5.RELEASE 负责监听 ConfigMap 更改 - 接收“强制关闭”。
- 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 的进一步更新不会触发任何事件 :(
通常设置权限,因为事件被服务正确捕获以进行初始测试运行:
有没有人遇到过类似的问题,可以帮助我缩小潜在的根本原因?
kubernetes - gitlab auto devops 的唯一服务名称
在使用 gitlab auto devops 时,我注意到每个项目都是在自己的命名空间中创建的,将服务名称定义为production-auto-deploy
.
可以自定义此服务名称吗?例如,我希望它包含项目名称,因此映射production-auto-deploy
->app-production-auto-deploy
和some-microservice-production-auto-deploy
.
我希望这些服务名称唯一的原因是因为我正在评估 spring-cloud-kubernetes,并且我需要使用 feign 客户端进行功能区发现的唯一服务名称。
另外我想知道为什么每个项目都有自己的命名空间,这是某种最佳实践吗?可以将 auto devops 配置为将所有项目部署在同一命名空间中吗?
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 名称,如上所示)
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 错误页面
网关中的日志显示:
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"
依赖项:
谢谢你的帮助
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:
谢谢你的帮助
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'
用户名和身份验证。
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
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
完整的堆栈跟踪