Private Network Integration Agent
Gremlin's Integration Agent must be installed in order to use Private Network Integrations. With Private Network Integrations, you can integrate Gremlin with your observability solutions, testing tools, and other internal systems, all while keeping them contained within your private network. This lets you use the Health Checks and Webhooks features without exposing your internal endpoints to the public Internet. Your team can now experiment safely with increased automation, all while maintaining strong internal security controls.
How it works:
- Deploy an Integration Agent into your environment. This agent is separate from our Gremlin agent.
- When creating a Health Check or Webhook, enable the "Private Network Endpoint" switch to make it internal instead of external.
- When the Health Check or Webhook runs, Gremlin runs it from the Integration Agent instead of from our backend systems.
Installation
Gremlin's Integration Agent can be deployed into bare-metal environments running Linux, into container-based infrastructure environments running on Linux, and into virtual infrastructure environments.
Kubernetes
The following is an example of a gremlin-integrations Deployment. It creates a single instance of the gremlin-integrations agent, configured via GREMLIN_TEAM_ID
, GREMLIN_TEAM_SECRET
, and GREMLIN_INTEGRATION_AGENT_ALLOW_LIST
.
1apiVersion: apps/v12kind: Deployment3metadata:4 name: gremlin-integrations-deployment5 labels:6 app: gremlin-integrations7spec:8 replicas: 19 selector:10 matchLabels:11 app: gremlin-integrations12 template:13 metadata:14 labels:15 app: gremlin-integrations16 spec:17 containers:18 - name: gremlin-integrations19 image: gremlin/gremlin-integrations:latest20 env:21 - name: GREMLIN_TEAM_ID22 value: 11111111-1111-1111-1111-11111111111123 - name: GREMLIN_TEAM_SECRET24 value: 11111111-1111-1111-1111-11111111111125 - name: GREMLIN_INTEGRATION_AGENT_ALLOW_LIST26 # A space separated list of values, which can include regular expressions27 value: "https://my-check.net/health https://my-other-status-check.net/health"
Docker
In addition to the latest
tag, gremlin/gremlin-integrations
has a tag for each released version (e.g 0.0.1
).
When using Docker, the easiest way to pass configuration is through environment variables.
1export GREMLIN_IDENTIFIER="my-integrations-agent"2export GREMLIN_TEAM_ID="my-team-id"3export GREMLIN_TEAM_SECRET="my-team-secret"4export GREMLIN_INTEGRATION_AGENT_ALLOW_LIST="https://my-allowed-endpoint https://my-other-allowed-endpoint"5docker run -it \6 -e GREMLIN_IDENTIFIER \7 -e GREMLIN_TEAM_ID \8 -e GREMLIN_TEAM_SECRET \9 -e GREMLIN_INTEGRATION_AGENT_ALLOW_LIST \10 gremlin/gremlin-integrations:latest
Alternatively, you can configure your agents with a configuration file.
1docker run -it \2 -v /path/to/my/integrations-config.yaml:/etc/gremlin/integrations-config.yaml \3 gremlin/gremlin-integrations:latest
Ubuntu, Debian, etc.
For DEB-based Linux distributions (DEB packages)
1# Add packages needed to install and verify gremlin (already on many systems)2sudo apt update && sudo apt install -y apt-transport-https dirmngr34# Add the Gremlin repo5echo "deb https://deb.gremlin.com/ release non-free" | sudo tee /etc/apt/sources.list.d/gremlin.list67# Import the GPG key8sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 9CDB294B29A5B1E2E00C24C022E8EF3461A50EF6910# Install Gremlin client and daemon11sudo apt update && sudo apt install -y gremlin-integrations
List older versions of the gremlin integrations agent via: apt list -a gremlin-integrations
and install them via apt install gremlin-integrations=x.x.x-x
Amazon Linux, RHEL, CentOS, etc.
For RPM-based Linux distributions (RPM packages)
1# Add the Gremlin repo2sudo curl https://rpm.gremlin.com/gremlin.repo -o /etc/yum.repos.d/gremlin.repo34# Install Gremlin client and daemon5sudo yum install -y gremlin-integrations
List older versions of the gremlin integrations agent via: yum list available gremlin-integrations --showduplicates
and install them via yum install gremlin-integrations-x.x.x-x
Managing Allowlists
You can manage what URLs you allow access to by adding them to the allowlist directly in the agent. These are configured in the integrations-config.yaml
configuration file. An allowlist would look like this:
1integration_agent_allow_list:2 - ^http://localhost:80803 - ^http://host.docker.internal:8080
Items in the list will be evaluated as regex expressions. Not providing an allowlist will allow for invocations to be executed against any URL.