The instructions for installing and running the API Control Plane on docker are below. If you have any questions or find issues, please use the Issues or Discussions tabs in this repository.
The standard deployment of API Control plane contains the following 5 microservices.
- Asset catalog - Assets(Runtimes,Data planes) processing of Control plane.
- Engine - Metrics processing and aggregation.
- Ingress - User management and security
- API Control Plane UI - user interface
- Elasticsearch - data persistence layer
Table of contents
- Prerequisite
- How to deploy webMethods API Control Plane using docker compose?
- How to stop webMethods API Control Plane using docker compose?
- How to access the newly deployed webMethods API Control Plane?
- Additional deployment flavors
The machine needs following to install the control plane using docker.
- docker-compose version should be 2.19.0 and 2.23.3.
- Docker Desktop / Rancher Desktop (version between 1.9.0 and 1.12.0) if you are using the Windows / Mac Operating System.
-
Clone this repository
-
Login to https://containers.softwareag.com/
-
Get a Personal Access Token (PAT)
We published docker images for all API Control Plane microservice to https://containers.softwareag.com/ repository. To pull them or have docker compose pull them for you, you need a Personal Access token (PAT). To get a PAT, go to Userprofile > Settings > Generate password. Store Token Password securely.
-
Log in to sagcr.azurecr.io docker repository
Run the following command in your docker environment:
docker login -u [Your git username] -p [Your PAT] sagcr.azurecr.io
-
Configure your deployment
The
.env
file in deployment/docker/.env allows for configuring different aspects of API Control Plane deployment. To be able to access API Control Plane after it's deployed, you need to edit this file and provide a value forNGINX_DOMAIN_NAME
that matches the hostname of the machine you're deploying API Control plane on. Make sure this hostname is accessible to whoever will be connecting to API Control Plane. -
Execute the deployment scripts
To deploy the API Control Plane with default configuration:
-
change to deployment/docker directory:
cd deployment/docker
-
execute the deployment script
docker-compose -f control-plane.yaml up -d
If everything goes well, the output should be similar to this
[user@somehost docker]$ docker-compose -f control-plane.yaml up -d [+] Running 8/8 ⠿ Network softwareag-api-management Created 0.2s ⠿ Container elasticsearch Healthy 22.6s ⠿ Container nginx_setup Started 1.5s ⠿ Container control-plane-asset-catalog Healthy 88.6s ⠿ Container control-plane-engine Healthy 88.6s ⠿ Container control-plane-ui Healthy 119.1s ⠿ Container control-plane-ingress Healthy 150.5s ⠿ Container nginx Started 151.2s
-
-
Verify it's started
It will take a couple of minutes to start. You can monitor that with solutions like Portainer or Docker Dashboard etc. or simply user Docker CLI like this
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
The output, when everything starts should look similar to this
NAMES STATUS PORTS control-plane-ingress Up About a minute (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp control-plane-ui Up About a minute (healthy) 8080/tcp control-plane-engine Up About a minute (healthy) 8080/tcp control-plane-asset-catalog Up About a minute (healthy) 8080/tcp nginx Up About a minute (healthy) 0.0.0.0:81->80/tcp, :::81->80/tcp, 0.0.0.0:444->443/tcp, :::444->443/tcp elasticsearch Up About a minute (healthy) 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 9300/tcp
To stop and remove the API Control Plane default configuration:
-
change to deployment/docker directory:
cd deployment/docker
-
execute the deployment script
docker-compose -f control-plane.yaml down
If everything goes well, the output should be similar to this
[user@somehost docker]$ docker-compose -f control-plane.yaml down
[+] Running 8/8
⠿ Container nginx_setup Removed 0.0s
⠿ Container nginx Removed 0.3s
⠿ Container control-plane-ingress Removed 10.3s
⠿ Container control-plane-ui Removed 10.4s
⠿ Container control-plane-engine Removed 10.3s
⠿ Container control-plane-asset-catalog Removed 10.3s
⠿ Container elasticsearch Removed 2.6s
⠿ Network softwareag-api-management Removed 0.3s
- Open your browser and go to
https://[the-host-you-configured]:8080/
- You should see the login screen. Log in using Administrator username and the default password.
API Control plane can be started in debug mode with Open telemetry enabled and exposed using Jaeger UI. For this, the deployment needs additional image, namely jaegertracing/all-in-one
.
To start API Control Plane in debug mode:
-
change to deployment/docker directory:
cd deployment/docker
-
execute the deployment script
docker-compose -f control-plane.debug.yaml --profile observed up -d
👋 The Jaeger UI can be accessed via the JAEGER_UI_PORT
port configured in the .env
file.
If you want to see Gainsight powered user engagements (work in progress) in API Control Plane like bots, articles, feature introduction etc., you can start it with additional configuration set up in ui/ui-config.gainsight.env
file. Please contact your Software AG API Control Plane contact or ask us here for the proper configuration values.
To start API Control Plane with Gainsight enabled:
-
change to deployment/docker directory:
cd deployment/docker
-
execute the deployment script
docker-compose -f control-plane.gainsight.yaml up -d
If you would like to run elasticsearch in secure mode, then the following properties needs to be set in the .env
file to enable secure communication
ELASTICSEARCH_USERNAME=
ELASTICSEARCH_PASSWORD=
ELASTICSEARCH_CERTPATH=
Please refer to https://www.elastic.co/guide/en/elasticsearch/reference/current/secure-cluster.html for more information.
To start API Control Plane with secure elasticsearch connectivity enabled:
-
change to deployment/docker directory:
cd deployment/docker
-
execute the deployment script
docker-compose -f control-plane-secure-es.yaml up -d