# Using .NET with NubesGen
This documentation is for running .NET applications with NubesGen, and there is another other options that might interest you:
- As .NET applications can be packaged with Docker, you can also run them as Docker applications with NubesGen.
NubesGen supports creating Azure App Service instances and Azure Functions instances, depending on the type of .NET application that you wish to deploy.
# Tutorial: running a .NET application with NubesGen
Prerequisites:
Tip: You can go to https://aka.ms/nubesgen-azure-shell (opens new window) to have those prerequisites installed, and run the script from a Web browser.
- Bash (opens new window), which is installed by default on most Linux distributions and on Mac OS X. If you're using Windows, one solution is to use WSL (opens new window).
- Azure CLI (opens new window). To login, use
az login
. - (optional) GitHub CLI (opens new window). To login, use
gh auth login
.
Steps:
- Create a sample .NET Web application using the .NET CLI (opens new window).
We'll follow the beginning of the official "Get started with ASP.NET Core" tutorial (opens new window):
dotnet new webapp -o dotnet-sample-app -f net7.0
- Create a project on GitHub called
dotnet-sample-app
, and push the generated project to that repository. Change<your-github-account>
by the name of your GitHub account:cd dotnet-sample-app git init git add . git commit -m "first commit" git remote add origin https://github.com/<your-github-account>/dotnet-sample-app.git git branch -M main git push -u origin main
- In the cloned project (
cd dotnet-sample-app
), set up GitOps with NubesGen by running the NubesGen CLI (more information here):./nubesgen-cli-linux gitops
- Use the command-line with NubesGen (more information here) to generate a NubesGen configuration:
curl "https://nubesgen.com/demo.tgz?runtime=dotnet&application=app_service.standard&gitops=true" | tar -xzvf -
- Create a new branch called
env-dev
, and push your code:git checkout -b env-dev git add . git commit -m 'Configure GitOps with NubesGen' git push --set-upstream origin env-dev
- Go to your GitHub project, and check that the GitHub Action is running.
- You can go to the Azure Portal (opens new window) to check the created resources.
- The application should be deployed on your App Service instance. Its URL should be in the form
https://app-demo-XXXX-XXXX-XXXX-XXXX-dev-001.azurewebsites.net/
, and you can also find it in the GitHub Action workflow (Job: "display-information", step "Display Azure infrastructure information"), or in the Azure portal. As it is a simple application, it should print by defaultHello, world
. - Once you have finished, you should clean up your resources:
- Delete the resource group that was created by NubesGen to host your resources, which is named
rg-demo-XXXX-XXXX-XXXX-XXXX-001
. - Delete the storage account used to store your Terraform state, in the
rg-terraform-001
resource group.
- Delete the resource group that was created by NubesGen to host your resources, which is named
# Which Azure resources are created
If you deploy your .NET application to an Azure App Service instance, NubesGen will generate:
- An Azure App Service plan (opens new window) to define the type of App Service instance you will use.
- An Azure App Service instance (opens new window), configured to run .NET code natively.
If you deploy your .NET application to an Azure Function, NubesGen will generate:
- An Azure App Service plan (opens new window) to define the type of Azure Functions instance you will use.
- An Azure Functions instance (opens new window), configured to run .NET code natively.
- An Azure Storage Account (opens new window), to store your .NET application.
# .NET version support
NubesGen supports .NET 7.0 by default, as it's the current long term support version. If you want to use .NET 6, you will need to configure it in two places:
- In the generated
terraform/modules/app-service/main.tf
, you need to modifydotnet_version = "7.0"
to bedotnet_version = "6.0""
- If you selected the GitOps option, at the beginning of the generated
.github/workflows/gitops.yml
file, there is a specificDOTNET_VERSION: '7.0'
environment variable that should be modified toDOTNET_VERSION: '6.0'
# Configuration options
In the generated terraform/modules/app-service/main.tf
file, NubesGen will configure some environment variables
for your application.
DATABASE_URL
: the URL to your databaseDATABASE_USERNAME
: the database user nameDATABASE_PASSWORD
: the database passwordREDIS_HOST
: the Redis host nameREDIS_PASSWORD
: the Redis passwordREDIS_PORT
: the Redis port (by default6380
)AZURE_STORAGE_ACCOUNT_NAME
: the storage account nameAZURE_STORAGE_ACCOUNT_KEY
: the storage account keyAZURE_STORAGE_BLOB_ENDPOINT
: the blob storage endpointMONGODB_DATABASE
: the MongoDB database nameMONGODB_URI
: the MongoDB database URL