This tutorial was updated in October 2022 and is based on Flex Gateway 1.2.0.
You can use Flex Gateway locally or in connected mode. If you use it locally, you will only be able to run it from your local machine, but you can’t manage the APIs from Anypoint Platform. In connected mode, you can view your gateways, your API instances, and policy configurations in API Manager. In this case, we’ll register and run Flex Gateway in connected mode using the Flex Gateway Docker image.
In this tutorial, you’ll learn how to:
1 - Log in to Anypoint Platform and navigate to Runtime Manager. Click on the Flex Gateways tab on the left and select Add Gateway.
If this is the first time you access Anypoint Platform, it may ask you to select an environment. Choose Sandbox.
2 - You will see different options to select where to set up your Flex Gateway. Let’s select Docker.
1 - Download the Flex Gateway Docker image by running the following command. We will be using the latest version in this tutorial.
1 docker pull mulesoft/flex-gateway:latest
2 - Verify the image was correctly installed by running
docker images or checking your images from the Docker Desktop app. You should see the new
1 2 REPOSITORY TAG IMAGE ID CREATED SIZE mulesoft/flex-gateway latest 4ba042860c8f 7 days ago 273MB
Docker Desktop preview:
1 - Copy the command from Runtime Manager to register your gateway. It already contains the
organization ID you need to authenticate and connect the gateway with your Anypoint Platform account.
1 2 3 4 5 6 7 8 docker run --entrypoint flexctl \ -v "$(pwd)":/registration mulesoft/flex-gateway \ register \ --organization=<your-org-id> \ --token=<your-token> \ --output-directory=/registration \ --connected=true \ <gateway-name>
If you’re running this command in MacOS, Linux, or a Unix-based command line, it’s ok to run it as-is. If you’re running the command from a Windows computer, you will need to change the
"$(pwd)" part with the absolute path to your current directory.
2 - Replace
<gateway-name> with your own name (i.e.
3 - Remove the version from the
flex-gateway image to use the latest version (i.e.,
It’s better to run this command in a new folder or in a known location to quickly identify the files that will be created.
If you are in the Europe region, you will need to add the following flag to your command
Your final command after substituting the values will look like this:
1 2 3 4 5 6 7 8 docker run --entrypoint flexctl \ -v "$(pwd)":/registration mulesoft/flex-gateway \ register \ --organization=e04b331c-a0d3-4b0b-b40c-55254205c981 \ --token=4c3fa08c-5d08-431f-ba9a-cb4416db7dc7 \ --output-directory=/registration \ --connected=true \ my-gateway
1 2 Starting registration, please be patient. Registration completed, the configuration files were written in directory "/registration". For security, modify the file permissions to restrict production scenario access to the user running flex.
4 - Verify there is a
registration.yaml file in the same directory you executed the command.
5 - If you check the Flex Gateway list in Runtime Manager, your should now see your new gateway (
my-gateway) listed with a status of Disconnected.
1 - Run the following command to start your gateway using port
1 2 3 4 docker run --rm \ -v "$(pwd)":/usr/local/share/mulesoft/flex-gateway/conf.d \ -p 8081:8081 \ mulesoft/flex-gateway
You should see an output similar to the following. Note that the command doesn’t finish running. If you kill the process from your local, your gateway will be disconnected.
1 2 3 4 5 6 7 8 ... [flex-gateway-agent][info] Validating gateway [flex-gateway-agent][info] Generating config [flex-gateway-agent][info] Gateway default/9fd77888f949: Adding Service default/internal-pe-anypoint-metrics http://127.0.0.1:15100/ [flex-gateway-agent][info] Writing envoy bootstrap configuration to /tmp/envoy.json [flex-gateway-agent][info] Gateway: Platform=https://anypoint.mulesoft.com OrgID=e04b331c-a0d3-4b0b-b40c-55254205c981 EnvID=36df410e-a800-44ab-be86-853820d277b2 Name=3952d507-3044-4a28-be97-1d89c5d97418 Mode=connected ReplicaName=9fd77888f949.default [flex-gateway-envoy][info] cds: add 1 cluster(s), remove 3 cluster(s) [flex-gateway-envoy][info] cds: added/updated 1 cluster(s), skipped 0 unmodified cluster(s)
2 - If you check the Flex Gateways list in Runtime Manager, you should now see your new gateway (
my-gateway) with a status of Connected.
3 - You can also verify that the container is running in your local with
docker container ls in a new command line, or check if there’s a running container in Docker Desktop.
1 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2d55079f848e mulesoft/flex-gateway "/init" 6 minutes ago Up 6 minutes 0.0.0.0:8081->8081/tcp stupefied_kalam
Docker Desktop preview:
1 - To remove the gateway, you can stop running the
docker run command and this will remove the container. Alternatively, you can run
docker container stop <container-name> (i.e.,
docker container stop stupefied_kalam) or stop the container from Docker Desktop by clicking on the Stop button on the right side of the container.
2 - You can verify no containers are running with
docker container ls or in Docker Desktop.
1 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Docker Desktop preview:
3 - The gateway might still be listed in Runtime Manager but will have a status of Disconnected if no containers are connected.
4 - To delete a gateway from Runtime Manager, click on the 3-dot button next to the gateway and select Delete gateway.
The gateway will now have a status of Deleted and will be removed from the UI in 30 days. For more information, see Anypoint Flex Gateway.
In this tutorial, you learned how to:
In the next tutorial, you’ll learn how to manage your APIs from API Manager using the Flex Gateway you created in this tutorial.
Click on the Next button below to continue to the next tutorial.