Open xahys opened 3 months ago
This would help me a lot as well
Hi. I'm sorry this project has languished, but we've unfortunately picked up a fair amount of technical debt that needs to be dealt with before we can make a decent release.
Some of the big items are:
Hey @dgrove-oss
I've been using OpenWhisk on k8s for a research project and wanted to test how the performance differs with the latest version of invoker/controller/etc.
I'd love to pick this up if someone can point me to the right direction and help to understand what all needs to be changed.
Currently just changing the docker image tags to latest one end up with these error:
Exception in thread "main" pureconfig.error.ConfigReaderException: Cannot convert configuration to a org.apache.openwhisk.core.etcd.EtcdConfig. Failures are:
at 'whisk':
- Key not found: 'etcd'.
at pureconfig.package$.getResultOrThrow(package.scala:139)
at pureconfig.package$.loadConfigOrThrow(package.scala:161)
at org.apache.openwhisk.core.loadBalancer.FPCPoolBalancer$.instance(FPCPoolBalancer.scala:721)
at org.apache.openwhisk.core.controller.Controller.<init>(Controller.scala:119)
at org.apache.openwhisk.core.controller.Controller$.start(Controller.scala:338)
at org.apache.openwhisk.core.controller.Controller$.main(Controller.scala:291)
at org.apache.openwhisk.core.controller.Controller.main(Controller.scala)
@style95 -- maybe you have some suggestions? Core openwhisk's inability to build on arm64 has really limited my ability to do anything with the core project or openwhisk-deploy-kube for the last couple of years.
@singhsegv I believe this is because the scheduler is now enabled by default in the core project. https://github.com/apache/openwhisk/blob/master/common/scala/src/main/resources/reference.conf#L21C1-L32C2
And I see it is not aligned with openwhisk-deploy-kube where the scheduler is disabled by default. https://github.com/apache/openwhisk-deploy-kube/blob/master/helm/openwhisk/values.yaml#L275
Since you just updated the images, the ShardingPoolBalancer would be enabled and no etcd configuration would exist in the helm chart while as you can see in the log, the FPCPoolBalancer
is enabled in the image.
I think you have two options.
Enable the scheduler and add ETCD-related configurations. I think you need to update the helm chart too and enable this configuration.
Disable the scheduler and change the underlying implementations to the ShardingPoolBalancer family. This is trickier as you need to update the helm chart for this way manually.
The main thing is to change all the relevant SPI implementation.
LoadBalancerProvider = org.apache.openwhisk.core.loadBalancer.FPCPoolBalancer
EntitlementSpiProvider = org.apache.openwhisk.core.entitlement.FPCEntitlementProvider
InvokerProvider = org.apache.openwhisk.core.invoker.FPCInvokerReactive
InvokerServerProvider = org.apache.openwhisk.core.invoker.FPCInvokerServer
I think they should be changed like below.
LoadBalancerProvider = org.apache.openwhisk.core.loadBalancer.ShardingContainerPoolBalancer
EntitlementSpiProvider = org.apache.openwhisk.core.entitlement.LocalEntitlementProvider
InvokerProvider = org.apache.openwhisk.core.invoker.InvokerReactive
InvokerServerProvider = org.apache.openwhisk.core.invoker.DefaultInvokerServer
Since you cannot change the reference.conf file as it resides in the image. You need to configure them via helm chart.
I see currently the helm chart is defined with the assumption that ShardingPoolBalancer is enabled by default but it is actually not. https://github.com/apache/openwhisk-deploy-kube/blob/master/helm/openwhisk/templates/invoker-pod.yaml#L149
So you need to configure implementation in a way like the below. This is supposed to be updated in the openwhisk-deploy-kube but I couldn't work on it yet.
- name: "CONFIG_whisk_spi_InvokerProvider"
value: "org.apache.openwhisk.core.invoker.InvokerReactive"
Since I haven't tried this yet as well, not one hundred percent sure but it should be ideally addressed in this way.
Hello! It's not a problem, but may be helpful.
I noticed that a more stable version of Openwhisk is located here on GitHub in the Master branch.
If you push Chart from Helm via repo, chart version getting from Tags
But in the master branch, many problems were solved and a lot of PR was done, especially affecting errors such as here (https://github.com/apache/openwhisk-deploy-kube/issues/735). I think, more problems already been resolved, but changes was save in master branch.
So, could you check out the master branch and, if possible, create a TAG 1.0.1 and push it into Helm? Thank you very much!