Skip to main content

RDS instance delete

Introduction

RDS instance delete removes an instances from AWS RDS cluster. This makes the cluster unavailable for a specific duration.

RDS Instance Delete

Use cases

RDS instance delete determines how quickly an application can recover from an unexpected RDS cluster deletion.

note
  • Kubernetes version 1.17 or later is required to execute this fault.
  • AWS access to delete RDS instances.
  • The RDS instance must be in a healthy state.
  • Kubernetes secret must have the AWS access configuration(key) in the CHAOS_NAMESPACE. A sample secret file looks like:
    apiVersion: v1
    kind: Secret
    metadata:
    name: cloud-secret
    type: Opaque
    stringData:
    cloud_config.yml: |-
    # Add the cloud AWS credentials respectively
    [default]
    aws_access_key_id = XXXXXXXXXXXXXXXXXXX
    aws_secret_access_key = XXXXXXXXXXXXXXX
  • Harness recommends using the same secret name, that is, cloud-secret. Otherwise, you must update the AWS_SHARED_CREDENTIALS_FILE environment variable in the fault template and you won't be able to use the default health check probes.
  • Go to superset permission/policy to execute all AWS faults.
  • Go to the common tunables and AWS-specific tunables to tune the common tunables for all faults and AWS-specific tunables.
  • Go to AWS named profile for chaos to use a different profile for AWS faults.

Below is an example AWS policy to execute the fault.

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeInstanceStatus",
"ec2:DescribeInstances",
"rds:DescribeDBClusters",
"rds:DescribeDBInstances",
"rds:DeleteDBInstance"
],
"Resource": "*"
}
]
}

Fault tunables

Mandatory tunables

Tunable Description Notes
CLUSTER_NAME Name of the target RDS cluster For example, rds-cluster-1
RDS_INSTANCE_IDENTIFIER Name of the target RDS Instances For example, rds-cluster-1-instance
REGION The region name of the target RDS cluster For example, us-east-1

Optional tunables

Tunable Description Notes
TOTAL_CHAOS_DURATION Duration that you specify, through which chaos is injected into the target resource (in seconds). Default: 30 s
INSTANCE_AFFECTED_PERC The Percentage of total RDS instance that are part of RDS cluster to target Default: 0 (corresponds to 1 instance). Provide numeric values only.
SEQUENCE It defines sequence of chaos execution for multiple instance Default value: parallel. Supported: serial, parallel
AWS_SHARED_CREDENTIALS_FILE Provide the path for AWS secret credentials Default: /tmp/cloud_config.yml
RAMP_TIME Period to wait before and after injection of chaos in sec For example, 30 s

RDS cluster name

Cluster name of the target RDS cluster. Tune it by using the CLUSTER_NAME environment variable. If this variable is not provided, the fault selects the Instance Identifier.

The following YAML snippet illustrates the use of this environment variable:

# delete the RDS instance
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: engine-nginx
spec:
engineState: "active"
annotationCheck: "false"
chaosServiceAccount: litmus-admin
experiments:
- name: rds-instance-delete
spec:
components:
env:
# provide the name of RDS cluster
- name: CLUSTER_NAME
value: 'rds-demo-cluster'
- name: REGION
value: 'us-east-2'
- name: TOTAL_CHAOS_DURATION
value: '60'

RDS instance identifier

RDS instance name. Tune it by using the RDS_INSTANCE_IDENTIFIER environment variable.

The following YAML snippet illustrates the use of this environment variable:

# delete the RDS instance
apiVersion: litmuschaos.io/v1alpha1
kind: ChaosEngine
metadata:
name: engine-nginx
spec:
engineState: "active"
annotationCheck: "false"
chaosServiceAccount: litmus-admin
experiments:
- name: rds-instance-delete
spec:
components:
env:
# provide the RDS instance identifier
- name: RDS_INSTANCE_IDENTIFIER
value: 'rds-demo-instance-1,rds-demo-instance-2'
- name: INSTANCE_AFFECTED_PERC
value: '100'
- name: REGION
value: 'us-east-2'
- name: TOTAL_CHAOS_DURATION
value: '60'