Helm Chart - Cannot access mongodb (and other Pods) from Service ClusterIP + Wrong env vars for microcks Pod
See original GitHub issueHello,
I’ve been struggling today to install Microk8s on a k8s v1.17.2. I have tried both with the helm chart provided as well as a manifest.yml file. Both of them required a lot of manual tweaks in order to get the majority of the Pods in Running state. However, I never managed to get the microcks Pod running long enough as it was always “being killed” by the readiness and liveliness health checks.
I am sharing part of what I did below as well as my remarks in the configuration.
My goal is to figure out how to correctly install Microcks on my cluster.
K8s nodes:
[ec2-user@ip-10-10-21-112 microcks]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
node1 Ready <none> 157m v1.17.2
stoimen.cluster Ready master 159m v1.17.2
Install with helm chart (helm3):
[ec2-user@ip-10-10-21-112 microcks]$ helm version
version.BuildInfo{Version:"v3.0.2", GitCommit:"19e47ee3283ae98139d98460de796c1be1e3975f", GitTreeState:"clean", GoVersion:"go1.13.5"}
helm install microcks ./
NAME: microcks
LAST DEPLOYED: Tue Jan 28 15:34:55 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing microcks.
Your release is named microcks.
To learn more about the release, try:
$ helm status microcks
$ helm get microcks
Microcks is available at http://<MY_FQDN>
Keycloak has been deployed on http://<MY_KEYCLOCK_FQDN>/auth to protect user access.
You may want to configure an Identity Provider or add some users for your Microcks installation by login in using the
username and password found into 'microcks-keycloak-admin' secret.
Pods + services observation:
[ec2-user@ip-10-10-21-112 microcks]$ kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 156m
microcks ClusterIP 10.102.122.88 <none> 8080/TCP 32s
microcks-keycloak ClusterIP 10.108.158.1 <none> 8080/TCP 32s
microcks-keycloak-postgresql ClusterIP 10.99.250.141 <none> 5432/TCP 32s
microcks-mongodb ClusterIP 10.96.112.52 <none> 27017/TCP 32s
microcks-postman-runtime ClusterIP 10.110.40.42 <none> 8080/TCP 32s
[ec2-user@ip-10-10-21-112 microcks]$ curl 10.102.122.88:8080
curl: (7) Failed connect to 10.102.122.88:8080; Connection refused
[ec2-user@ip-10-10-21-112 microcks]$ curl 10.96.112.52:27017
[ec2-user@ip-10-10-21-112 microcks]$
[ec2-user@ip-10-10-21-112 microcks]$ kubectl get pods
NAME READY STATUS RESTARTS AGE
microcks-6d9cc58b5f-qzz6f 0/1 Running 2 2m3s
microcks-keycloak-9ccf5fc56-lm7nf 1/1 Running 2 2m3s
microcks-keycloak-postgresql-6dc77c4968-dzt7w 1/1 Running 0 2m2s
microcks-mongodb-77c557bdc4-bhpcb 1/1 Running 0 2m3s
microcks-postman-runtime-58bf695b59-nshqn 1/1 Running 0 2m3s
microcks-postman-runtime-58bf695b59-vpw75 1/1 Running 0 29m
[ec2-user@ip-10-10-21-112 microcks]$
[ec2-user@ip-10-10-21-112 microcks]$ kubectl describe pod microcks-6d9cc58b5f-qzz6f
Name: microcks-6d9cc58b5f-qzz6f
Namespace: default
Priority: 0
Node: ip-10-10-21-16.eu-west-1.compute.internal/10.10.21.16
Start Time: Tue, 28 Jan 2020 15:34:56 +0000
Labels: app=microcks
container=spring
deploymentconfig=microcks
group=microcks
pod-template-hash=6d9cc58b5f
Annotations: <none>
Status: Running
IP: 10.244.1.54
IPs:
IP: 10.244.1.54
Controlled By: ReplicaSet/microcks-6d9cc58b5f
Containers:
details:
Container ID: docker://7a609a0d7e8f10a706df6c1dca9b9da50cfe69bc0acd7cf2ecbc5c4edb3d22bf
Image: microcks/microcks:latest
Image ID: docker-pullable://microcks/microcks@sha256:4fa24c305fe47140e5fe90390a4de0bee6ae5eff49fcd5ce5e1edb403ad97d97
Port: 8080/TCP
Host Port: 0/TCP
State: Running
Started: Tue, 28 Jan 2020 15:36:29 +0000
Last State: Terminated
Reason: Error
Exit Code: 143
Started: Tue, 28 Jan 2020 15:35:39 +0000
Finished: Tue, 28 Jan 2020 15:36:29 +0000
Ready: False
Restart Count: 2
Liveness: http-get http://:8080/api/health delay=15s timeout=3s period=10s #success=1 #failure=3
Readiness: http-get http://:8080/api/health delay=20s timeout=3s period=10s #success=1 #failure=3
Environment:
JAVA_OPTIONS:
SPRING_PROFILES_ACTIVE: prod
SPRING_DATA_MONGODB_URI: mongodb://${SPRING_DATA_MONGODB_USER}:${SPRING_DATA_MONGODB_PASSWORD}@microcks-mongodb.default.svc.cluster.local:27017/${SPRING_DATA_MONGODB_DATABASE}
SPRING_DATA_MONGODB_USER: <set to the key 'username' in secret 'microcks-mongodb-connection'> Optional: false
SPRING_DATA_MONGODB_PASSWORD: <set to the key 'password' in secret 'microcks-mongodb-connection'> Optional: false
SPRING_DATA_MONGODB_DATABASE: microcks
POSTMAN_RUNNER_URL: http://microcks-postman-runtime:8080
TEST_CALLBACK_URL: http://microcks:8080
KEYCLOAK_URL: http://<MY_KEYCLOACK_FQDN>/auth
Mounts:
/deployments/config from microcks-config (rw)
/var/run/secrets/kubernetes.io/serviceaccount from default-token-jw98l (ro)
Conditions:
Type Status
Initialized True
Ready False
ContainersReady False
PodScheduled True
Volumes:
microcks-config:
Type: ConfigMap (a volume populated by a ConfigMap)
Name: microcks-config
Optional: false
default-token-jw98l:
Type: Secret (a volume populated by a Secret)
SecretName: default-token-jw98l
Optional: false
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute for 300s
node.kubernetes.io/unreachable:NoExecute for 300s
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal Scheduled 2m10s default-scheduler Successfully assigned default/microcks-6d9cc58b5f-qzz6f to ip-10-10-21-16.eu-west-1.compute.internal
Warning Unhealthy 113s kubelet, ip-10-10-21-16.eu-west-1.compute.internal Liveness probe failed: Get http://10.244.1.54:8080/api/health: dial tcp 10.244.1.54:8080: connect: connection refused
Normal Killing 40s (x2 over 90s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Container details failed liveness probe, will be restarted
Normal Created 37s (x3 over 2m9s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Created container details
Normal Started 37s (x3 over 2m8s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Started container details
Normal Pulled 37s (x3 over 2m9s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Container image "microcks/microcks:latest" already present on machine
Warning Unhealthy 10s (x6 over 100s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Liveness probe failed: Get http://10.244.1.54:8080/api/health: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Warning Unhealthy 10s (x6 over 100s) kubelet, ip-10-10-21-16.eu-west-1.compute.internal Readiness probe failed: Get http://10.244.1.54:8080/api/health: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
[ec2-user@ip-10-10-21-112 microcks]$ kubectl logs microcks-6d9cc58b5f-qzz6f
exec java -javaagent:/opt/agent-bond/agent-bond.jar=jolokia{{host=0.0.0.0}},jmx_exporter{{9779:/opt/agent-bond/jmx_exporter_config.yml}} -XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:+ExitOnOutOfMemoryError -cp . -jar /deployments/app.jar
I> No access restrictor found, access to any MBean is allowed
Jolokia: Agent started with URL http://10.244.1.54:8778/jolokia/
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.17.RELEASE)
[INFO] io.github.microcks.MicrocksApplication - Starting MicrocksApplication on microcks-6d9cc58b5f-qzz6f with PID 1 (/deployments/app.jar started by jboss in /deployments)
[INFO] io.github.microcks.MicrocksApplication - The following profiles are active: prod
[DEBUG] org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider found via system property
[INFO] io.github.microcks.config.WebConfiguration - Starting web application configuration, using profiles: [prod]
[INFO] io.github.microcks.config.WebConfiguration - Web application fully configured
[INFO] org.mongodb.driver.cluster - Cluster created with settings {hosts=[microcks-mongodb.default.svc.cluster.local:27017], mode=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
[INFO] io.github.microcks.MicrocksApplication - Started MicrocksApplication in 8.981 seconds (JVM running for 10.118)
[INFO] org.mongodb.driver.cluster - No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=microcks-mongodb.default.svc.cluster.local:27017, type=UNKNOWN, state=CONNECTING}]}. Waiting for 30000 ms before timing out
[INFO] org.mongodb.driver.cluster - Exception in monitor thread while connecting to server microcks-mongodb.default.svc.cluster.local:27017
[INFO] org.mongodb.driver.cluster - No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=microcks-mongodb.default.svc.cluster.local:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: microcks-mongodb.default.svc.cluster.local}, caused by {java.net.UnknownHostException: microcks-mongodb.default.svc.cluster.local}}]}. Waiting for 30000 ms before timing out
[INFO] org.mongodb.driver.cluster - No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=microcks-mongodb.default.svc.cluster.local:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: microcks-mongodb.default.svc.cluster.local}, caused by {java.net.UnknownHostException: microcks-mongodb.default.svc.cluster.local}}]}. Waiting for 30000 ms before timing out
[INFO] org.mongodb.driver.cluster - No server chosen by ReadPreferenceServerSelector{readPreference=primary} from cluster description ClusterDescription{type=UNKNOWN, connectionMode=SINGLE, serverDescriptions=[ServerDescription{address=microcks-mongodb.default.svc.cluster.local:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: microcks-mongodb.default.svc.cluster.local}, caused by {java.net.UnknownHostException: microcks-mongodb.default.svc.cluster.local}}]}. Waiting for 30000 ms before timing out
[ERROR] io.github.microcks.web.HealthController - Health check caught an exception: Interrupted while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}
com.mongodb.MongoInterruptedException: Interrupted while waiting for a server that matches ReadPreferenceServerSelector{readPreference=primary}
at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:124)
at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:75)
at com.mongodb.binding.ClusterBinding$ClusterBindingConnectionSource.<init>(ClusterBinding.java:71)
at com.mongodb.binding.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)
at com.mongodb.operation.OperationHelper.withConnection(OperationHelper.java:397)
at com.mongodb.operation.CountOperation.execute(CountOperation.java:232)
at com.mongodb.operation.CountOperation.execute(CountOperation.java:55)
at com.mongodb.Mongo.execute(Mongo.java:836)
at com.mongodb.Mongo$2.execute(Mongo.java:823)
at com.mongodb.DBCollection.getCount(DBCollection.java:1006)
at com.mongodb.DBCollection.count(DBCollection.java:844)
at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.count(SimpleMongoRepository.java:150)
at org.springframework.data.mongodb.repository.support.SimpleMongoRepository.findAll(SimpleMongoRepository.java:220)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:515)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:500)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:477)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:56)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
at com.sun.proxy.$Proxy76.findAll(Unknown Source)
at io.github.microcks.web.HealthController.health(HealthController.java:53)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at 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:205)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:849)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:760)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
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:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at io.github.microcks.web.filter.CorsFilter.doFilter(CorsFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.boot.web.filter.ApplicationContextHeaderFilter.doFilterInternal(ApplicationContextHeaderFilter.java:55)
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.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:111)
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.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.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109)
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.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
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.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
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:198)
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:493)
at org.keycloak.adapters.tomcat.AbstractKeycloakAuthenticatorValve.invoke(AbstractKeycloakAuthenticatorValve.java:181)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.InterruptedException: null
at java.util.concurrent.locks.AbstractQueuedSynchronizer.tryAcquireSharedNanos(AbstractQueuedSynchronizer.java:1326)
at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:277)
at com.mongodb.connection.BaseCluster.selectServer(BaseCluster.java:114)
... 100 common frames omitted
Env vars wrongly setup as not pointing to service FQDNs:
Deployment apiVersion error - should be changed to:
apiVersion: apps/v1
Selectors error - there are missing Selectors for every template of every deployment:
...
spec:
replicas: 1
selector:
matchLabels:
app: "{{ .Values.appName }}"
...
Any help to correctly install Microcks on k8s v1.17 will be greatly appreciated.
Thank you!
Issue Analytics
- State:
- Created 4 years ago
- Comments:5 (4 by maintainers)
Hi,
Just see this issue yesterday, sorry for delay.
To be honest it’s been a while since I played again with Helm charts but it seems to work at a time.
I’m busy today but will have a look at it tomorrow. Sorry again for delay !
Cheers,
Assuming it runs as expected as my tests are OK but no feedback yet. Feel free to re-open if needed