Azure locations installation

Run a Control Plane on Azure using Container Apps and Azure Files, to set up your Private Locations and run load generators in your own Azure network.

First of all, you should have followed introduction instructions to configure Gatling Cloud for receiving a new control plane. Please check this section first.

Azure Container Apps is a managed serverless container services. You can use it to deploy your own control plane instances without creating dedicated virtual machines.

Keep in mind that this is only one way to install a control plane in Azure. You can use any other Azure service able to deploy a container.

Azure services overview

Following Azure services are needed for this control plane installation:

  • Container Apps: the base product for containerized serverless applications
  • Azure Files: file share for configuration file storage

Mounting the configuration file

Control plane locations configuration is based on a file that has to be shared with the application.

See control plane configuration sections of Gatling Cloud documentation for details.

Azure storage account

Azure storage account can contain and manage any data object storage you need for your applications. For details, please refer to Azure documentation.

On your Azure portal, click on “Create a resource” button, and choose “Storage account”

Create resource

From there, configure a new storage account according to your needs and policies.

Write down the storage account name, you will need it in further steps.

Create storage account

Azure File Share

File Share creation

Once again, refer to the Azure File Share documentation for details.

In your storage account, let’s create a File Share for the Control Plane configuration file:

  • Access to your storage account page
  • Click on “File shares” in the side menu
  • Click on “File share” creation button in the top menu
  • Configure and finalize creation

Write down the file share name, you will need it in further steps.

Create file share

Upload control plane configuration file

Upload your configuration file in your new File Share in order to make it available for the control plane:

  • Access to your File share page
  • Click on “Overview” in the side menu
  • Click on “Upload” button in the top menu
  • Select your control plane configuration file
  • Validate for uploading it
Upload configuration file

You should see your control plane configuration file in the File Share.

Please refer to Azure private locations configuration for more details about the configuration file.

Container App

A Container App is what will manage the proper control plane application.

There are several ways to create and configure it, as described in Azure Container Apps documentation. We are going to consider only the Azure portal way of doing it.

Control plane application creation

On your Azure portal, click on “Create a resource” button, and choose “Container Apps”.

Create resource

Start by referencing basic information about your app, as requested by the wizard.

You can configure freely the subscription, group, etc. at this step, according to your policies.

Create application step 1

You will then need to configure the Gatling control plane container as the base image of the application:

  • Go to “App settings tab”
  • Uncheck “Use quickstart image”
  • Configure a container name as you desire
  • Choose “Docker Hub or other registries” as image source
  • Choose “Public” as image type
  • Indicate in registry login server field
  • Indicate gatlingcorp/control-plane:latest in image and tag field

Refer to private location introduction section of this documentation for more information about this docker image.

Create application step 2

Finally, review and create your control plane application. This will create two new resources in the configured resource group:

  • The Container App itself
  • A Container App Environment, associated to the Container App

Azure credentials

Option 1: managed identity

Azure managed identities allow you to configure control plane credentials through an Active Directory identity, automatically setup at application start. Refer to Azure managed identities for container apps documentation for details.

  • Go to your application page
  • Click on “Identity” in the side menu
  • Set status to “On”
  • Wait a bit for automatic managed identity setup
Setup Azure credentials with managed identity

A managed identity will be automatically assigned to your application instances and used by the control plane application to manage Azure resources.

Option 2: environment variables

You can directly set environment variables needed for Azure private locations during application creation. Please refer to Azure private locations configuration for more details.

You can also set it later from your application page if you need.

Credentials can be set through environment variables in your control plane.

name value
AZURE_CLIENT_SECRET Client secret key

Check Azure documentation pages to find these values:

Setup Azure credentials with environment variables

Mounting configuration file share

Configure in environment

Before effectively mounting the File Share you created earlier, you need to configure access to it in the Container App Environment:

  • Navigate to the Container App Environment newly created
  • Click on “Azure Files” in the side menu
  • Click on “Add” button in the top menu
  • “Name” field is free, this is the name you will refer to in the application container configuration
  • “Storage account name” and “Storage account key” can be found in the “Access keys” section of your storage account page
  • “File share” should be the file share name you created earlier
Configure file share in environment

Double check info entered manually, and validate the creation.

Configure application containers

We can now mount the File Share on application containers:

  • Navigate to your application page on the portal

  • Click on “Container” in the side menu (you can check their configuration while you are here)

  • Click on “Edit and deploy” button in the top menu

    Configure containers file share step 1

  • In the “Container” tab, click on the existing container automatically created at application creation. Or, there is none, click on the “Add” button"

    Configure containers file share step 2

  • Go to “Volume mounts” tab

  • Select your newly created file share in “File share name” drop box

  • Enter “/app/conf” as “Mount path (folder)”

  • Check next step before validating changes (additional configuration) since you can do it at the same time.

    Configure containers file share step 3

Additional containers configuration

During the application container configuration step, you can set scale rules for your application.

  • In the “Scale” tab, set the min and max instances with the ruler
  • Set rules if you need to (not mandatory)
  • Don’t forget to validate your changes
Configure containers instances minimum scale

Use your new control plane

Once you’ve configured your control plane container, it should automatically start a new revision with desired configuration.

You can check logs in your application “Log stream” menu, or perform more complex requests in “Logs” menu. Be sure to select the currently active revision logs.

Now that your control plane is up and running, after a short time you should see your control plane with up status in Gatling Enterprise Cloud.

Checking out the Control Plane's status in Gatling Enterprise Cloud

Update your control plane

To update your control plane, restart your Azure Container App.

Being configured with the image gatlingcorp/control-plane:latest, it will automatically pull the latest published version:

  1. Go on your Container App page
  2. Click on the running revision
  3. Hit the Restart button

Your control plane restarts, using the latest image published on Docker Hub.

Update control plane instance installed on Azure Container App

If you did not use the tag latest, you will have to create a new revision and specify the control plane image you want to deploy.

Edit this page on GitHub