This tutorial will provide a walkthrough on setting up and using configuration values located in AWS for configuration in your Gremlin agent installation.
Before you begin this tutorial, you'll need the following:
To create a parameter in AWS SSM:
To create a secret in AWS Secrets Manager:
Whatever credentials you will have the Gremlin agent use will need the corresponding IAM permissions associated with them.
ssm:GetParameter
action on the parameter resource is required.secretsmanager:GetSecretValue
action on the secret resource is required.kms:Decrypt
action is required on the KMS key resource.Now in your gremlin configuration, you can set some of the configuration values to use the AWS ARN of the AWS resource you created. When the agent starts, it will reach out to AWS to retrieve the value stored there, and keeps it in memory. Here is an example configuration file with AWS ARNs used to store sensitive values:
1## Gremlin Identifier2identifier: arn:aws:ssm:us-west-2:123412341234:parameter/gremlin-identifier34## Gremlin Team Id5team_id: arn:aws:ssm:us-west-2:123412341234:parameter/gremlin-team-id67## Gremlin Team Secret8#team_secret: arn:aws:secretsmanager:us-west-2:123412341234:secret:gremlin/team-secret-djfgdjkf910## Gremlin Team Certificate11team_certificate: arn:aws:secretsmanager:us-west-2:123412341234:secret:gremlin/team-cert-ovbndf1213## Gremlin Team Certificate14team_private_key: arn:aws:secretsmanager:us-west-2:123412341234:secret:gremlin/team-key-asdgiovb
Note: When using the Gremlin Helm Chart, you can pass these values like you would with raw secret values (requires chart version 0.12.0 or later):
1helm install gremlin gremlin/gremlin \2 --namespace gremlin \3 --set gremlin.hostPID=true \4 --set gremlin.hostNetwork=true \5 --set gremlin.collect.processes=true \6 --set gremlin.container.driver=any \7 --set gremlin.secret.managed=true \8 --set gremlin.secret.type=certificate \9 --set gremlin.secret.clusterID=${GREMLIN_CLUSTER_ID} \10 --set gremlin.secret.teamID=${GREMLIN_TEAM_ID} \11 --set gremlin.serviceUrl=${GREMLIN_SERVICE_URL} \12 --set gremlin.secret.certificate=arn:aws:secretsmanager:us-west-2:123412341234:secret:gremlin/team-cert-ovbndf \13 --set gremlin.secret.key=arn:aws:secretsmanager:us-west-2:123412341234:secret:gremlin/team-key-asdgiovb \14 --set gremlin.serviceAccount.annotations."eks\.amazonaws\.com\/role-arn"="arn:aws:iam::123412341234:role/K8sServiceAccountRole" \15 --set chao.serviceAccount.annotations."eks\.amazonaws\.com\/role-arn"="arn:aws:iam::123412341234:role/ChaoK8sServiceAccountRole"
You've setup your Gremlin agent to use remote configuration values, increasing the security of your configuration! Refer to the agent configuration to read all the supported values you can use an AWS ARN for.
Gremlin empowers you to proactively root out failure before it causes downtime. See how you can harness chaos to build resilient systems by requesting a demo of Gremlin.
Get started