Azure / Azure/azure-functions-core-tools
Kubernetes deploy with Durable functions
- Dominant language
- C#
- Stars
- 1.5k
- Forks
- 498
- Avg merge
- 4d 20h
- Merged PRs (30d)
- 14
Description
We recently ran into an issue where moving our Durable functions to a Kubernetes Cluster. We are using the "func kubernetes deploy" to generate the Yml file.
By default the Queue based functions are split from the HTTP triggered functions but they share the same Secrets. Because of the Orchestrator function being disabled the HTTP function cannot start a new instance of the orchestrator with this error:
`Error: "The function 'RoadsideBatteryJobWorkflow' doesn't exist, is disabled, or is not an orchestrator function. Additional info: No orchestrator functions are currently registered!" "Asgard.Odin.Workflows.RoadsideBatteryJob.Triggers.StartJobWorkflow" System.ArgumentException: The function 'RoadsideBatteryJobWorkflow' doesn't exist, is disabled, or is not an orchestrator function. Additional info: No orchestrator functions are currently registered! at Microsoft.Azure.WebJobs.Extensions.DurableTask.DurableTaskExtension.ThrowIfFunctionDoesNotExist(String name, FunctionType functionType) in D:\a\r1\a\azure-functions-durable-extension\src\WebJobs.Extensions.DurableTask\DurableTaskExtension.cs:line 1062 at Microsoft.Azure.WebJobs.Extensions.DurableTask.DurableClient.Microsoft.Azure.WebJobs.Extensions.DurableTask.IDurableOrchestrationClient.StartNewAsync[T](String orchestratorFunctionName, String instanceId, T input) in D:\a\r1\a\azure-functions-durable-extension\src\WebJobs.Extensions.DurableTask\ContextImplementations\DurableClient.cs:line 140 at Asgard.Odin.Workflows.RoadsideBatteryJob.Triggers.StartJobWorkflow.Run(HttpRequestMessage request, String instanceId, IDurableClient orchestrationClient) in /src/dotnet-function-app/Asgard.Odin.Workflows.RoadsideBatteryJob/Triggers/StartJobWorkflow.cs:line 59`
I have spoken to the guys at the Durable Function Extensions and the workarounds for this is to have different configuration for each of these two deployments in Kubernetes as the AzureStorageWebJobs setting has to be different.
The question is that is it possible to stop the splitting from happening in the Yml file? Or is there another way to handle this either by Environment Variables in the Yml file?
Thanks in advance
Contributor guide
Research direction
Start with the `func kubernetes deploy` command and inspect how it generates the Kubernetes YAML, especially the split between queue-based and HTTP-triggered functions. Check whether the generated deployments expose configuration through environment variables or whether the split can be disabled; done means one supported deployment configuration is demonstrated and covered by an appropriate test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, csharp, kubernetes
- Domain
- cli, cloud, devops
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100