Network Requirements for Gatling Control Plane and Private Locations

Network Configuration

This guide provides clear instructions for configuring network access for both the Control Plane and Private Locations.

Network Requirements

You must permit outbound access to the Gatling Cloud API served from https://api.gatling.io from the following components:

  • your control plane
  • your private locations, as configured by the control plane

api.gatling.io uses the following static IPv4 addresses that you can allow in your network configuration:

  • 15.236.15.177
  • 51.44.121.66
  • 52.47.87.192

Configuring a Proxy

This section describes how to have all the outbound requests from Gatling Enterprise components go through a forward proxy, an HTTP proxy, or an API gateway.

Proxy for the Control Plane

The Control Plane configuration supports the setup of a forward proxy and/or an HTTP proxy.

Here’s how to configure it in the control-plane section of your configuration:

control-plane {
  # Authentication token
  token = "cpt_example_c7oze5djp3u14a5xqjanh..." 
  # Enterprise Cloud Network Configuration
  enterprise-cloud {
    proxy {
      # Uncomment the block if you want to configure a forward proxy
      # # Forward Proxy URL
      # forward {
      #   url = "http://private-control-plane-forward-proxy/gatling"
      # }

      # Uncomment the block if you want to configure an HTTP proxy
      # # HTTP Proxy URL
      # http {
      #   # protocol must be http:
      #   # port must be defined
      #   url = "http://private-control-plane-http-proxy:3128"
      # }

      # Uncomment the block if you need to trust custom certificates
      # truststore {
      #   # absolute path to a file containing the certificates in PEM format (can contains multiple concatenated PEM certificates) 
      #   path = "/path/to/truststore.pem" 
      # }
      
      # Uncomment the block for mutual authentication
      # keystore {
      #   # absolute path to a file containing the key and its certificate in PKCS12 format
      #   path = "/path/to/keystore.p12"
      #   # optional password if needed to open the keystore
      #   # password = "p@ssw0rd"
      # }
    }
  }
}

Proxy for Private Locations

Private Locations can also be configured to use a forward proxy and/or a HTTP proxy. You have two options:

1. Use the Same Proxy configuration as the Control Plane

You can reuse the Control Plane’s proxy configuration by leveraging HOCON substitutions.

control-plane {
  # Authentication token
  token = "cpt_example_c7oze5djp3u14a5xqjanh..." 
  # Control Plane Enterprise Cloud Network Configuration
  enterprise-cloud {
    proxy {
      # Uncomment the block if you want to configure a forward proxy
      # # Forward Proxy URL
      # forward {
      #   url = "http://private-control-plane-forward-proxy/gatling"
      # }

      # Uncomment the block if you want to configure an HTTP proxy
      # # HTTP Proxy URL
      # http {
      #   # protocol must be http:
      #   # port must be defined
      #   url = "http://private-control-plane-http-proxy:3128"
      # }

      # Uncomment the block if you need to trust custom certificates
      # truststore {
      #   # absolute path to a file containing the certificates in PEM format (can contains multiple concatenated PEM certificates) 
      #   path = "/path/to/truststore.pem" 
      # }
      
      # Uncomment the block for mutual authentication
      # keystore {
      #   # absolute path to a file containing the key and its certificate in PKCS12 format
      #   path = "/path/to/keystore.p12"
      #   # optional password if needed to open the keystore
      #   # password = "p@ssw0rd"
      # }
    }
  }
  # Private Locations
  locations = [
    {
      # Private Location ID
      id = "prl_example"
      # Private Location using Control Plane Enterprise Cloud Network Configuration
      enterprise-cloud = ${control-plane.enterprise-cloud}
    }
  ]
}

2. Use a Dedicated Proxy for Private Locations

If you prefer separate proxies, define a substitution for the private locations and reference it in their configuration.

location-enterprise-cloud = {
  proxy {
    # Uncomment the block if you want to configure a forward proxy
    # # Forward Proxy URL
    # forward {
    #   url = "http://location-forward-proxy/gatling"
    # }

    # Uncomment the block if you want to configure an HTTP proxy
    # # HTTP Proxy URL
    # http {
    #   # protocol must be http:
    #   # port must be defined
    #   url = "http://location-http-proxy:3128"
    # }

    # Uncomment the block if you need to trust custom certificates
    # truststore {
    #   # absolute path to a file containing the certificates in PEM format (can contains multiple concatenated PEM certificates) 
    #   path = "/path/to/truststore.pem" 
    # }
    
    # Uncomment the block for mutual authentication
    # keystore {
    #   # absolute path to a file containing the key and its certificate in PKCS12 format
    #   path = "/path/to/keystore.p12"
    #   # optional password if needed to open the keystore
    #   # password = "p@ssw0rd"
    # }
  }
}

control-plane {
  # Authentication token
  token = "cpt_example_c7oze5djp3u14a5xqjanh..." 
  # Control Plane Enterprise Cloud Network Configuration
  enterprise-cloud {
    proxy {
      # Uncomment the block if you want to configure a forward proxy
      # # Forward Proxy URL
      # forward {
      #   url = "http://private-control-plane-forward-proxy/gatling"
      # }

      # Uncomment the block if you want to configure an HTTP proxy
      # # HTTP Proxy URL
      # http {
      #   # protocol must be http:
      #   # port must be defined
      #   url = "http://private-control-plane-http-proxy:3128"
      # }

      # Uncomment the block if you need to trust custom certificates
      # truststore {
      #   # absolute path to a file containing the certificates in PEM format (can contains multiple concatenated PEM certificates) 
      #   path = "/path/to/truststore.pem" 
      # }
      
      # Uncomment the block for mutual authentication
      # keystore {
      #   # absolute path to a file containing the key and its certificate in PKCS12 format
      #   path = "/path/to/keystore.p12"
      #   # optional password if needed to open the keystore
      #   # password = "p@ssw0rd"
      # }

    }
  }
  # Private Locations
  locations = [
    {
      # Private Location ID
      id = "prl_example_a"
      # Private Location Enterprise Cloud Network Configuration
      enterprise-cloud = ${location-enterprise-cloud}
    },
    {
      # Private Location ID
      id = "prl_example_b"
      # Private Location Enterprise Cloud Network Configuration
      enterprise-cloud = ${location-enterprise-cloud}
    }
  ]
}

Proxy Key Notes

  • Host Header Rewriting: Ensure all configured forward proxies rewrite the host header to api.gatling.io. This is a mandatory requirement for proper communication.
  • Configuration Simplification: Take advantage of HOCON substitutions to reuse and simplify configuration settings, minimizing redundancy and reducing maintenance effort.
  • Proxy Separation: Decide whether to use a single proxy for both the Control Plane and Private Locations or separate proxies for each, based on your infrastructure needs.
  • File Access: Ensure that truststore and keystore are accessible when using them. Mind that they may be located at different places for Control plane and Load generators depending on the way you mount volumes and/or generated the images.
  • Full access to the api.gateway.io domain: Don’t expect to be able to cherry-pick allowed routes, headers, payloads, etc. This is an internal API, subject to change any time without prior notice.
  • Ensure enough payload size:
    • upload: 5MB from your network to Gatling API.
    • download: 5GB from Gatling API to your network.

Edit this page on GitHub