microsoft / azure-container-apps

Roadmap and issues for Azure Container Apps
MIT License
363 stars 28 forks source link

Jobs Support #526

Closed kendallroden closed 1 year ago

kendallroden commented 1 year ago

GA 8/30/2023: https://azure.microsoft.com/en-us/updates/generally-available-azure-container-apps-jobs/ Docs: https://aka.ms/container-apps/jobs

In ACA, customers have no way of deploying containers that should terminate after completion. To run this type of workload, developers need to be able to deploy a specific resource type known as a Job. Jobs perform one or more tasks to completion and are finite resources unlike container app objects which continuously run until explicitly deleted.

Initial scope will include support for the following:

Note: Additional due diligence may be required to ensure support for Azure Pipeline agents and/or Azure DevOps agents as part of this feature

Related requests:

rvanmaanen commented 1 year ago

176 appears to be a similar request too

HowardvanRooijen commented 1 year ago

This would be excellent. I have a batch process (a data downloader / processor) that I would love to run via a CRON job. The current ACA / Dapr approach isn't really suitable, but this sounds like it would be an excellent fit.

JonasCordsen commented 1 year ago

Hello :)

Is there any ETA on this?

SophCarp commented 1 year ago

@JonasCordsen Thanks for asking! I just updated the description, and we should have Jobs support out in public preview by the end of this quarter (end of March 2023).

ManojNair commented 1 year ago

This is awesome news. Thanks @SophCarp

tmakowka-tc commented 1 year ago

Is there any detail on what "subset of event-triggers supported by KEDA" means for the upcoming preview? ;)

ronlhayes commented 1 year ago

This is awesome! Just for clarification. I have a scaler using azure service bus but I need to allow the app to run up to 30 minutes. This would allow me to continue using an azure service bus trigger but also specify activeDeadlineSeconds (https://keda.sh/docs/2.9/concepts/scaling-jobs/) to handle the longer time limit right? The longer limit is rarely needed since most of the time 5 minutes or less is sufficient. If the app completes and exits in 5 minutes will the pod be removed (scaled down) or does the scaler wait activeDeadlineSeconds before testing and removing it?

anthonychu commented 1 year ago

Updating ETA in original post to reflect latest status. Now targeting public preview in Q2 2023.

ronlhayes commented 1 year ago

Until this new feature is available is it possible to run long-running jobs as a static # of instances (no scaler). This link states that ACA supports long running/background tasks however when I run a single instance it gets killed every few minutes and then restarted. https://learn.microsoft.com/en-us/azure/container-apps/compare-options#azure-container-apps. Are there additional requirements such as health probes? This app uses an Azure Service Bus queue to perform processing that can take a few seconds or up to over 30 minutes to process so I can't have the container killed mid-process. Thanks in advance for the help!

kjeske commented 1 year ago

@ronlhayes what's your scaling rule and mix/max replicas?

soerenfw commented 1 year ago

We had a similar issues, that every few minutes the container gets killed and restarted. If you don't have health probes yet, I would suggest to enable them.

ronlhayes commented 1 year ago

@kjeske - I tried using no scaling rule with a single (min/max = 1) replica. Is there an automatic KEDA monitor such as cpu usage. This app is waiting for ASB messages so idle (not active) often for testing. Yes, I'll try adding health monitors. Curious what the assumption is when no health monitors are defined (assume ok, watch for app exiting)?

jaltin commented 1 year ago

Updating ETA in original post to reflect latest status. Now targeting public preview in Q2 2023.

@anthonychu, is this still a realistic ETA for the preview? Do you have any more information on progress?

Thx!

MatthewWilkes commented 1 year ago

I just spotted "Container App Jobs (Preview)" in the portal, really looking forward to the next standup to hear the details on this!

mburumaxwell commented 1 year ago

Seen in docs too https://learn.microsoft.com/en-us/azure/templates/microsoft.app/2022-11-01-preview/jobs?pivots=deployment-language-bicep

olandese commented 1 year ago

Seen in docs too https://learn.microsoft.com/en-us/azure/templates/microsoft.app/2022-11-01-preview/jobs?pivots=deployment-language-bicep

This look promising, let's test this :)

denniszielke commented 1 year ago

@anthonychu @vinisoto Can we get environment variables inside each running job container populated similar to normal container apps like CONTAINER_JOB_NAME=myjobName CONTAINER_JOB_RUN_NAME=myjobName--7fbbb48d64-hghtz This would help a lot to connect runs with process logic

sebaguozden commented 1 year ago

Is there an ETA to make this feature Generally Available?

HowardvanRooijen commented 1 year ago

This would be excellent. I have a batch process (a data downloader / processor) that I would love to run via a CRON job. The current ACA / Dapr approach isn't really suitable, but this sounds like it would be an excellent fit.

We ported one of our apps to use it last week and it's working brilliantly. Thanks very much 🔥

TiloGit commented 1 year ago

Do jobs support Storage like plain Apps (Azure File)?

SophCarp commented 1 year ago

@sebaguozden ACA Jobs is now GA: https://azure.microsoft.com/en-us/updates/generally-available-azure-container-apps-jobs/

ghost commented 1 year ago

we have tested azure container app jobs it works like a charm. My Question is when scale set to zero. How does It assume the process has been completed and scale in the instance.