Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Removes Content Share when using private Storage Account connectivity #110

Merged
merged 4 commits into from
Sep 13, 2024

Conversation

jsubirat
Copy link
Contributor

@jsubirat jsubirat commented Sep 4, 2024

Description

Back in May 2023, we modified our EventHub and BlobStorage ARM templates to allow having private connectivity only between the Function App and the Storage Account they use to store the data required by these function to work. They have been working fine since then. However, the deployment of such functions started being faulty some time ago.

We engaged into an investigation with the Azure engineers, with whom we found out that some change was introduced in the Azure Platform that arises a race condition. This race condition causes the Function App to start before the VNET is fully configured. The function app then tries to reach the Storage Account through the Azure backbone network instead of the VNET (thus attempting to reach it via its public endpoint). Because the Storage Account has public connectivity disabled, this connection is refused and prevents the function from even being able to deploy its own code in the Content Share it used.

We determined this race condition is intermitent (sometimes the function just works, sometimes it just doesn't). Restarting the function sometimes resets the configuration so that the function starts using the VNET to access the storage account.

Nevertheless, given that this is totally random, the Azure engineers suggested we mitigate this by not using a content share in the Storage Account to deploy the function code into. Given that our function (when deployed with private connectivity only) runs on a dedicated plan, using a content share is not necessary since the functions end up using platform-provided built-in storage. That is, the function code gets deployed inside the VM that executes our function instead of using the Storage Account content share.

Changes

  • This PR doesn't alter at all the functionality of the forwarding functions.
  • Removes the creation of the Content Share and their references in the Function App when using private connectivity.

@nr-rkallempudi nr-rkallempudi merged commit b2f1c86 into master Sep 13, 2024
10 checks passed
@nr-opensource-bot
Copy link
Contributor

🎉 This PR is included in version 2.5.1 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants