question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Kubernetes deploy with Durable functions

See original GitHub issue

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

Issue Analytics

  • State:open
  • Created 3 years ago
  • Comments:10 (5 by maintainers)

github_iconTop GitHub Comments

2reactions
marcd123commented, Jul 23, 2021

For those working on Non C# Durable Function Apps, such as Python or JavaScript function apps, here is an example of using the externalClient setting in your HTTP-starter’s function.json to enable your HTTP and non-HTTP deployments to reach each other:

https://github.com/microsoft/durabletask-mssql/issues/41#issuecomment-885299181

{
  "bindings": [
    {
      "authLevel": "anonymous",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "route": "orchestrators/{functionName}",
      "methods": ["post"]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "name": "starter",
      "type": "durableClient",
      "direction": "in",
      "externalClient": true
    }
  ]
}

Setting externalClient to true in your HTTP-starter’s function.json will disable the local check for the orchestrator you are trying to trigger, and will allow the requested orchestrator to be scheduled.

0reactions
cgillumcommented, Mar 22, 2021

Right, I’m aware of the two separate pod problem. That’s why I mentioned the version of the extension. Strangely, I didn’t run into this problem when using func kubernetes deploy when I was testing last week.

BTW, I looked through the code just now, and I think there is a workaround where you can add "externalClient": true to your binding description in function.json to disable this validation.

The fact that there is no ScaledObject for Durable Functions triggers is a known issue. We recently added this for Durable Function apps that use our (yet to be announced) SQL backend (https://github.com/Azure/azure-functions-core-tools/pull/2503), but haven’t done any work for this in the existing production scenarios. I think the idea is that you’d need to configure an external scaler. @TsuyoshiUshio I believe you worked on an external scaler for Durable Functions? Can you point to any documentation for this?

Read more comments on GitHub >

github_iconTop Results From Across the Web

Azure Functions on Kubernetes with KEDA
Understand how to run Azure Functions in Kubernetes in the cloud or on-premises using KEDA, Kubernetes-based event driven autoscaling.
Read more >
Azure Durable Functions & KEDA on AKS for event-driven ...
Durable Functions provide an orchestration system for you so you can focus on your business logic instead of having to also code orchestration...
Read more >
Serverless apps in Kubernetes, Azure Functions
A flow with Azure Durable Functions consists of three types of Azure functions: Starter, Orchestrator and Activity functions. Starter Function: ...
Read more >
Azure durable functions on kubernetes
With durable functions you have orchestrators, activity functions and trigger functions. The hard work is usually done in the activity functions ...
Read more >
Durable Functions with Netherite on Kyma - DevPress - CSDN
In this blog post I would like to describe my journey with Netherite as storage provider for Azure Durable Functions and the deployment...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found