Skip to content

Instantly share code, notes, and snippets.

@negz
Created August 12, 2021 05:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save negz/e1f2e74f18802d15440214a1a1abc981 to your computer and use it in GitHub Desktop.
Save negz/e1f2e74f18802d15440214a1a1abc981 to your computer and use it in GitHub Desktop.
Hunting for RouteTable leaks
---
apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
name: leaktest
spec:
writeConnectionSecretsToNamespace: crossplane-system
compositeTypeRef:
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
resources:
- name: vpc
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: VPC
spec:
forProvider:
region: us-east-1
cidrBlock: 192.168.0.0/16
enableDnsSupport: true
enableDnsHostNames: true
- name: subnet-a
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: Subnet
metadata:
labels:
zone: us-east-1a
spec:
forProvider:
region: us-east-1
cidrBlock: 192.168.64.0/18
vpcIdSelector:
matchControllerRef: true
availabilityZone: us-east-1a
- name: subnet-b
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: Subnet
metadata:
labels:
zone: us-east-1b
spec:
forProvider:
region: us-east-1
cidrBlock: 192.168.128.0/18
vpcIdSelector:
matchControllerRef: true
availabilityZone: us-east-1b
- name: subnet-c
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: Subnet
metadata:
labels:
zone: us-east-1c
spec:
forProvider:
region: us-east-1
cidrBlock: 192.168.192.0/18
vpcIdSelector:
matchControllerRef: true
availabilityZone: us-east-1c
- name: internetgateway
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: InternetGateway
spec:
forProvider:
region: us-east-1
vpcIdSelector:
matchControllerRef: true
- name: routetable
base:
apiVersion: ec2.aws.crossplane.io/v1beta1
kind: RouteTable
spec:
forProvider:
region: us-east-1
tags:
- key: negz
value: test
vpcIdSelector:
matchControllerRef: true
routes:
- destinationCidrBlock: 0.0.0.0/0
gatewayIdSelector:
matchControllerRef: true
associations:
- subnetIdSelector:
matchControllerRef: true
matchLabels:
zone: us-east-1a
- subnetIdSelector:
matchControllerRef: true
matchLabels:
zone: us-east-1b
- subnetIdSelector:
matchControllerRef: true
matchLabels:
zone: us-east-1c
---
apiVersion: apiextensions.crossplane.io/v1
kind: CompositeResourceDefinition
metadata:
name: leaktests.crossplane.io
spec:
group: crossplane.io
names:
kind: LeakTest
plural: leaktests
versions:
- name: v1alpha1
served: true
referenceable: true
schema:
openAPIV3Schema:
type: object
properties:
spec:
type: object
---
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
metadata:
name: test-0
annotations:
state: a
spec:
compositionRef:
name: leaktest
---
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
metadata:
name: test-1
annotations:
state: a
spec:
compositionRef:
name: leaktest
---
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
metadata:
name: test-2
annotations:
state: a
spec:
compositionRef:
name: leaktest
---
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
metadata:
name: test-3
annotations:
state: a
spec:
compositionRef:
name: leaktest
---
apiVersion: crossplane.io/v1alpha1
kind: LeakTest
metadata:
name: test-4
annotations:
state: a
spec:
compositionRef:
name: leaktest
#!/bin/bash
while true; do
kubectl apply -f leaktest.yaml
sleep 300
kubectl delete -f leaktest.yaml
sleep 60
echo "Again!"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment