# Using Quarkus with NubesGen
This documentation is for running Quarkus applications with NubesGen. There are two other options that might interest you:
- You can also use Java with NubesGen, which is similar to Quarkus, but does not use the specific Quarkus application properties.
- As Quarkus applications can be packaged with Docker, you can also run them as Docker applications with NubesGen.
NubesGen supports deploying Quarkus applications both using the JVM and using the native image compilation (GraalVM).
YouTube video showing how to deploy Quarkus with NubesGen, both in JVM and native mode
# Tutorial 1: running a Quarkus application on the JVM
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 Quarkus Web application using https://code.quarkus.io/ (opens new window).
curl https://code.quarkus.io/d?e=resteasy-jackson&e=resteasy&cn=code.quarkus.io | tar -xzvf -
- Create a project on GitHub called
code-with-quarkus
, and push the generated project to that repository. Change<your-github-account>
by the name of your GitHub account:cd code-with-quarkus git init git add . git commit -m "first commit" git remote add origin https://github.com/<your-github-account>/code-with-quarkus.git git branch -M main git push -u origin main
- In the cloned project (
cd code-with-quarkus
), 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=quarkus&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 an empty application, you should get the standard Quarkus welcome page. - 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
# Tutorial 2: running a native Quarkus application (using GraalVM)
The only difference with the previous tutorial is that we use a different NubesGen parameter, quarkus_native
, instead of quarkus
.
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 Quarkus Web application using https://code.quarkus.io/ (opens new window).
curl https://code.quarkus.io/d?e=resteasy-jackson&e=resteasy&cn=code.quarkus.io | tar -xzvf -
- Create a project on GitHub called
code-with-quarkus
, and push the generated project to that repository. Change<your-github-account>
by the name of your GitHub account:cd code-with-quarkus git init git add . git commit -m "first commit" git remote add origin https://github.com/<your-github-account>/code-with-quarkus.git git branch -M main git push -u origin main
- In the cloned project (
cd code-with-quarkus
), 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. If you followed the first tutorial, please note the
quarkus_native
parameter.curl "https://nubesgen.com/demo.tgz?runtime=quarkus_native&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 an empty application, you should get the standard Quarkus welcome page. - 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 will be created
If you deploy your Quarkus 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 Java code natively.
If you use Quarkus on the JVM, the Azure App Service instance will be configured with Java. And if you use Quarkus in native mode, the Azure App Service instance will be configured with Docker.
# Configuration options
In the generated terraform/modules/app-service/main.tf
file, NubesGen will configure some environment variables
for your application. Those are standard Quarkus
properties, so your Quarkus application should be automatically configured
(for example: your database connection should be working out-of-the-box).
QUARKUS_DATASOURCE_JDBC_URL
: the JDBC URL to your databaseQUARKUS_DATASOURCE_USERNAME
: the database user nameQUARKUS_DATASOURCE_PASSWORD
: the database passwordQUARKUS_REDIS_HOSTS
: the Redis host configuration, including the password (in the form: "redis://$PASSWORD@$HOST:6380")QUARKUS_MONGODB_DATABASE
: the MongoDB database nameQUARKUS_MONGODB_HOSTS
: the MongoDB URIAZURE_STORAGE_ACCOUNT_NAME
: the storage account nameAZURE_STORAGE_ACCOUNT_KEY
: the storage account keyAZURE_STORAGE_BLOB_ENDPOINT
: the blob storage endpoint