alfrescoarchive / activiti-cloud-charts Goto Github PK
View Code? Open in Web Editor NEWHelm Charts for Activiti cloud Apps
License: Apache License 2.0
Helm Charts for Activiti cloud Apps
License: Apache License 2.0
Currently if you put it on a gw path you get 404 for all the resource downloads. But it should work to use e.g. npm run build -- --base-href โ/activiti-cloud-demo-ui/". So we could make that a variable and use it in the Dockerfile https://github.com/ryandawsonuk/activiti-cloud-demo-ui/blob/develop/Dockerfile#L7
then we'd be able to pass in an env var at the chart level to tell the ui which path it is meant to be on
and default it to "/". This would mean we'd only need ingresses for the gateway and keycloak
The keycloak chart uses concepts like extraEnv and extraVolumes and extraVolumeMounts. https://github.com/kubernetes/charts/tree/master/stable/keycloak
This is called the 'sidecar pattern'. It allows the consumer of the chart to specify their own k8s objects to be deployed with the chart through the values.yaml, mount them into the chart and define them using go templating functions like normal chart definitions. (See the PR that introduced to the keycloak chart.)
This will be useful for us as it will allow users to mount configmaps for exposecontroller urls (@almerico and @igdianov already doing this with the keycloak chart) and inject environment variables or properties for security policies.
An example change would be like:
Following instructions from https://activiti.gitbook.io/activiti-7-developers-guide/getting-started/getting-started-activiti-cloud#getting-started-with-activiti-cloud
When running:
helm install --name example activiti-cloud-charts/activiti-cloud-full-example --set global.gateway.domain=example.cloud
I receive:
Error: release example failed: secrets "example-keycloak-http" already exists
Enabling Keycloak persistence should be added to the documentation. The following was tested on AWS EKS for Activiti Cloud 7.0.0 SR1
helm install --name example \
--set global.gateway.domain=REPLACEME \
--set infrastructure.activiti-keycloak.keycloak.keycloak.persistence.deployPostgres=true \
--set infrastructure.activiti-keycloak.keycloak.keycloak.persistence.dbVendor=postgres \
--set infrastructure.activiti-keycloak.keycloak.postgresql.persistence.enabled=true \
--set keycloak.persistence.deployPostgres=true \
activiti-cloud-charts/activiti-cloud-full-example
Turns out setting keycloak.persistence.deployPostgres is necessary because keycloak itself has a condition on the postgresql dependency, and apparently values used for dependency conditions in requirements.yaml don't pass through subcharts (so infrastructure.activiti-keycloak.keycloak.keycloak.persistence.deployPostgres is not the same as keycloak.persistence.deployPostgres).
Ideally it would be switchable to postgres or to mongo via the chart in much the same way as the keycloak chart allows for postgres, h2 or other dbs.
Expose and ingress should be commented out - this is how the kubernetes/charts repo normally does it. This is mostly the case but only mostly. GW still has expose true by default https://github.com/ryandawsonuk/activiticharts/blob/master/activiti-cloud-gateway/values.yaml#L18 - search workspace for ingress and expose
The condition on demo ui right now is activiti-cloud-demo-ui.enabled
. So to turn it off you set:
activiti-cloud-demo-ui:
enabled: false
But this isn't intuitive as it is inside the application chart. We should add an extra application.activiti-cloud-demo-ui.enabled
like in the helm docs. And so on for the other subcharts.
I think they're backwards compared to how we want to use them. So
condition: runtime-bundle.enabled,application.runtime-bundle.enabled
Should be reversed. Aim is that user of chart only controls via the application.runtime-bundle.enabled option
Currently in draft and living in https://docs.google.com/document/d/1M5_HlMT0JRkasSDwrqVbORlm63NKPphBH87DlkCGSnM/edit#heading=h.1u2xmhpjon3b
They should have README files that list all the options and explain them like the charts in https://github.com/kubernetes/charts/tree/master/stable/ (note those readmes are fed into https://hub.kubeapps.com/)
I suspect the resource limits could all be lowered significantly and it should still work as we've had the same components working in minikube before. Then you could install everything inc rb to minikube with just a helm install.
Maybe put this in the README.md of the chart for the runtime bundle
Firefox only support for the header format as follow:
Access-Control-Allow-Methods: <method>, <method>, ...
Access-Control-Allow-Headers: <header-name>, <header-name>, ...
notice there's no double quotes around the values, but the ingress definition for keycloak added the header with two double quotes around the header , like :
https://github.com/Activiti/activiti-cloud-charts/blob/master/activiti-keycloak/values.yaml
more_set_headers 'Access-Control-Allow-Methods: "POST, GET, OPTIONS, PUT, PATCH, DELETE"';
more_set_headers 'Access-Control-Allow-Headers: "DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization,authorization"';
this will Firefox raise an exception saying POST
method is not in Access-Control-Allow-Methods
when posting a form to keycloak.
deleting these quotes can fix the problem. #73
reference link:
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Headers
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Access-Control-Allow-Methods
I can't figure out how to make activiti-cloud-modeling persistent. I'm using AWS EKS, and the nodes are fulfilled using Spot instances, which means nodes can be lost and replaced at any time, so I need a way to make the data persistent across replacement pods.
I deployed full example using
helm install --name example \
--set global.gateway.domain=REPLACEME \
activiti-cloud-charts/activiti-cloud-full-example
Testing persistence by:
Access Activiti Modeler with default user
Create a new project, so now I see it in the project list
Using kubectl, I delete the pod (to simulate a lost pod): kubectl delete pod example-activiti-cloud-modeling-87cd6b58c-46q5v
Kubernetes automatically spins up new pod to replace deleted one
Access Activiti Modeler again, and now I can't see the project I had previously created
I followed the guide: install this chart by running against a Kubernetes Cluster,and enter the "helm repo add activiti-cloud-charts https://activiti.github.io/activiti-cloud-charts/",but it shows "Error: Looks like "https://activiti.github.io/activiti-cloud-charts/" is not a valid chart repository or cannot be reached: Get https://activiti.github.io/activiti-cloud-charts/index.yaml: read tcp 10.1.18.107:45268->185.199.109.153:443: read: connection reset by peer",and i visited "https://activiti.github.io/activiti-cloud-charts/" ,it shows 404,file not found``````````````````````
Should be able to do this using the Values.service.annotations annotations. A problem for the example env in the quickstart guide - don't think it requires changes to anything in this repo.
Want to add graphql websockets ingress/gateway config but have parked it as problems with graphql and websockets separation that are not related to k8s - see Activiti/Activiti#1714 (comment)
Output of helm version:
Client: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Server: &version.Version{SemVer:"v2.13.1", GitCommit:"618447cbf203d147601b4b9bd7f8c37a5d39fbb4", GitTreeState:"clean"}
Output of kubectl version:
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:37:52Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.4", GitCommit:"c27b913fddd1a6c480c229191a087698aa92f0b1", GitTreeState:"clean", BuildDate:"2019-02-28T13:30:26Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"}
Cloud Provider/Platform (AKS, GKE, Minikube etc.):
Custom binary install, 1 master(192.168.0.110) + 2 node(192.168.0.111ใ192.168.0.112)
When I install with helm:
helm install --name example activiti-cloud-charts/activiti-cloud-full-example --set global.gateway.domain=192.168.0.110
kubectl get pod
NAME READY STATUS RESTARTS AGE
example-activiti-cloud-audit-5bfd45c849-t9ql2 0/1 Running 9 30m
example-activiti-cloud-connector-5fc9f4994f-gs67d 0/1 Running 9 30m
example-activiti-cloud-gateway-c9d4b8cb5-cg9b6 1/1 Running 0 30m
example-activiti-cloud-modeling-d75969bb6-rpgqg 2/2 Running 0 30m
example-activiti-cloud-notifications-graphql-6fbb59b8d4-6vpxk 0/1 Pending 0 30m
example-activiti-cloud-query-7b8b7b967d-922n9 0/1 Pending 0 30m
example-rabbitmq-0 0/1 Pending 0 30m
example-runtime-bundle-56479dd6c4-lwgsb 0/1 Pending 0 30m
kubectl describe pod example-activiti-cloud-connector-5fc9f4994f-gs67d
Events:
Type Reason Age From Message
Normal Scheduled 30m default-scheduler Successfully assigned default/example-activiti-cloud-connector-5fc9f4994f-gs67d to 192.168.0.112
Warning Unhealthy 27m kubelet, 192.168.0.112 Readiness probe failed: HTTP probe failed with statuscode: 503
Warning Unhealthy 27m kubelet, 192.168.0.112 Readiness probe failed: Get http://172.17.87.5:8080/actuator/health: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Warning Unhealthy 27m (x2 over 27m) kubelet, 192.168.0.112 Liveness probe failed: HTTP probe failed with statuscode: 503
Normal Killing 27m kubelet, 192.168.0.112 Killing container with id docker://activiti-cloud-connector:Container failed liveness probe.. Container will be killed and recreated.
Normal Pulling 27m (x2 over 30m) kubelet, 192.168.0.112 pulling image "activiti/example-cloud-connector:7.0.0.SR1"
Normal Pulled 26m (x2 over 29m) kubelet, 192.168.0.112 Successfully pulled image "activiti/example-cloud-connector:7.0.0.SR1"
Normal Created 26m (x2 over 29m) kubelet, 192.168.0.112 Created container
Normal Started 26m (x2 over 29m) kubelet, 192.168.0.112 Started container
Warning Unhealthy 25m (x3 over 27m) kubelet, 192.168.0.112 Liveness probe failed: Get http://172.17.87.5:8080/actuator/health: dial tcp 172.17.87.5:8080: connect: connection refused
Warning Unhealthy 20m (x2 over 27m) kubelet, 192.168.0.112 Liveness probe failed: Get http://172.17.87.5:8080/actuator/health: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Warning BackOff 5m34s (x30 over 13m) kubelet, 192.168.0.112 Back-off restarting failed container
Warning Unhealthy 35s (x49 over 28m) kubelet, 192.168.0.112 Readiness probe failed: Get http://172.17.87.5:8080/actuator/health: dial tcp 172.17.87.5:8080: connect: connection refused
kubectl logs example-activiti-cloud-connector-5fc9f4994f-gs67d
2019-03-24 08:16:33.112 WARN [example-cloud-connector,b8010d44b6a6d26c,b8010d44b6a6d26c,false] 1 --- [nio-8080-exec-3] o.s.b.a.amqp.RabbitHealthIndicator : Rabbit health check failed
org.springframework.amqp.AmqpIOException: java.net.UnknownHostException: example-rabbitmq
at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:71)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:509)
at org.springframework.amqp.rabbit.connection.CachingConnectionFactory.createConnection(CachingConnectionFactory.java:682)
at org.springframework.amqp.rabbit.connection.ConnectionFactoryUtils.createConnection(ConnectionFactoryUtils.java:214)
at org.springframework.amqp.rabbit.core.RabbitTemplate.doExecute(RabbitTemplate.java:1984)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1958)
at org.springframework.amqp.rabbit.core.RabbitTemplate.execute(RabbitTemplate.java:1938)
at org.springframework.boot.actuate.amqp.RabbitHealthIndicator.getVersion(RabbitHealthIndicator.java:48)
at org.springframework.boot.actuate.amqp.RabbitHealthIndicator.doHealthCheck(RabbitHealthIndicator.java:44)
at org.springframework.boot.actuate.health.AbstractHealthIndicator.health(AbstractHealthIndicator.java:84)
at org.springframework.boot.actuate.health.CompositeHealthIndicator.health(CompositeHealthIndicator.java:98)
at org.springframework.boot.actuate.health.HealthEndpoint.health(HealthEndpoint.java:50)
at org.springframework.boot.actuate.health.HealthEndpointWebExtension.health(HealthEndpointWebExtension.java:54)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:246)
at org.springframework.boot.actuate.endpoint.invoke.reflect.ReflectiveOperationInvoker.invoke(ReflectiveOperationInvoker.java:76)
at org.springframework.boot.actuate.endpoint.annotation.AbstractDiscoveredOperation.invoke(AbstractDiscoveredOperation.java:61)
at org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$ServletWebOperationAdapter.handle(AbstractWebMvcEndpointHandlerMapping.java:294)
at org.springframework.boot.actuate.endpoint.web.servlet.AbstractWebMvcEndpointHandlerMapping$OperationHandler.handle(AbstractWebMvcEndpointHandlerMapping.java:355)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
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.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:800)
at org.springframework.web.servlet.mvc.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)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1005)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:897)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:634)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:882)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.keycloak.adapters.springsecurity.filter.KeycloakAuthenticatedActionsFilter.doFilter(KeycloakAuthenticatedActionsFilter.java:57)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.keycloak.adapters.springsecurity.filter.KeycloakSecurityContextRequestFilter.doFilter(KeycloakSecurityContextRequestFilter.java:54)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.keycloak.adapters.springsecurity.filter.KeycloakPreAuthActionsFilter.doFilter(KeycloakPreAuthActionsFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at 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)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.keycloak.adapters.springsecurity.filter.KeycloakAuthenticatedActionsFilter.doFilter(KeycloakAuthenticatedActionsFilter.java:74)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.keycloak.adapters.springsecurity.filter.KeycloakSecurityContextRequestFilter.doFilter(KeycloakSecurityContextRequestFilter.java:77)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:200)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.keycloak.adapters.springsecurity.filter.KeycloakPreAuthActionsFilter.doFilter(KeycloakPreAuthActionsFilter.java:86)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:74)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334)
at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at 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)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.cloud.sleuth.instrument.web.ExceptionLoggingFilter.doFilter(ExceptionLoggingFilter.java:50)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at brave.servlet.TracingFilter.doFilter(TracingFilter.java:86)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:117)
at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:106)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.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)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.keycloak.adapters.tomcat.AbstractAuthenticatedActionsValve.invoke(AbstractAuthenticatedActionsValve.java:67)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490)
at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:181)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.UnknownHostException: example-rabbitmq
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797)
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364)
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298)
at com.rabbitmq.client.DnsRecordIpAddressResolver.resolveIpAddresses(DnsRecordIpAddressResolver.java:83)
at com.rabbitmq.client.DnsRecordIpAddressResolver.getAddresses(DnsRecordIpAddressResolver.java:73)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1098)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:1054)
at com.rabbitmq.client.ConnectionFactory.newConnection(ConnectionFactory.java:994)
at org.springframework.amqp.rabbit.connection.AbstractConnectionFactory.createBareConnection(AbstractConnectionFactory.java:462)
... 141 common frames omitted
I see this error with the activiti-cloud-charts template.
Exception rendering template for activiti-cloud-demo-ui:0.1.9 : while parsing a block mapping in 'reader', line 52, column 11: - name: ACT_IDM_CLIENT_ID ^ expected <block end>, but found Scalar in 'reader', line 53, column 20: value: """" ^ ^
Lint shows this
[ERROR] templates/deployment.yaml: unable to parse YAML
error converting YAML to JSON: yaml: line 29: did not find expected key
Error: 1 chart(s) linted, 1 chart(s) failed
But the error is actually in line 40 of deployment.yaml which appears to contain
unnecessary double quotes. It appears to be confusing the pipelined quote
function.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.