-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdelete_eks_rds.sh
More file actions
196 lines (161 loc) Β· 8.94 KB
/
Copy pathdelete_eks_rds.sh
File metadata and controls
196 lines (161 loc) Β· 8.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
#!/bin/bash
set -e # μ€λ₯ λ°μ μ μ¦μ μ’
λ£
set -o pipefail
# AWS 리μ
AWS_REGION="ap-northeast-2"
# μμ±λ 리μμ€ ID κ°μ Έμ€κΈ°
EKS_CLUSTER_NAME="DevEKS"
VPC_ID=$(aws ec2 describe-vpcs --filters Name=cidr-block,Values=10.0.0.0/16 --query "Vpcs[0].VpcId" --output text)
PUBLIC_SUBNET_ID=$(aws ec2 describe-subnets --filters Name=cidr-block,Values=10.0.1.0/24 --query "Subnets[0].SubnetId" --output text)
EKS_PRIVATE_SUBNET_A_ID=$(aws ec2 describe-subnets --filters Name=cidr-block,Values=10.0.2.0/24 --query "Subnets[0].SubnetId" --output text)
EKS_PRIVATE_SUBNET_B_ID=$(aws ec2 describe-subnets --filters Name=cidr-block,Values=10.0.3.0/24 --query "Subnets[0].SubnetId" --output text)
IGW_ID=$(aws ec2 describe-internet-gateways --filters Name=attachment.vpc-id,Values=$VPC_ID --query "InternetGateways[0].InternetGatewayId" --output text)
NAT_GW_ID=$(aws ec2 describe-nat-gateways --filter Name=vpc-id,Values=$VPC_ID --query "NatGateways[0].NatGatewayId" --output text)
EIP_ALLOC_ID=$(aws ec2 describe-addresses --query "Addresses[?Domain=='vpc'].AllocationId" --output text)
# --------------------------
# EKS λ
Έλ κ·Έλ£Ή μμ
# --------------------------
echo "π EKS λ
Έλ κ·Έλ£Ή μμ μ€..."
aws eks delete-nodegroup --cluster-name $EKS_CLUSTER_NAME --nodegroup-name eks-node-group --region $AWS_REGION
sleep 60 # λ
Έλ κ·Έλ£Ή μμ λκΈ°
# --------------------------
# EKS ν΄λ¬μ€ν° μμ
# --------------------------
echo "π EKS ν΄λ¬μ€ν° μμ μ€..."
aws eks delete-cluster --name $EKS_CLUSTER_NAME --region $AWS_REGION
sleep 60 # ν΄λ¬μ€ν° μμ λκΈ°
# EKS 보μκ·Έλ£Ή μμ
if [ -n "$EKS_SECURITY_GROUP_ID" ]; then
echo "π EKS 보μ κ·Έλ£Ή μμ μ€..."
aws ec2 delete-security-group --group-id $EKS_SECURITY_GROUP_ID --region $AWS_REGION
echo "β
EKS 보μ κ·Έλ£Ή μμ μλ£: $EKS_SECURITY_GROUP_ID"
else
echo "β οΈ EKS 보μ κ·Έλ£Ήμ μ°Ύμ μ μμ. μ΄λ―Έ μμ λμμ μ μμ."
fi
# --------------------------
# ALB Controller Launch Template μμ
# --------------------------
echo "π ALB Controller Launch Template μμ μ€..."
if [ -n "$LAUNCH_TEMPLATE_ID" ]; then
aws ec2 delete-launch-template --launch-template-id $LAUNCH_TEMPLATE_ID --region $AWS_REGION
fi
# --------------------------
# ALB Controller IAM μ μ±
μμ
# --------------------------
echo "π ALB Controller IAM μ μ±
μμ μ€..."
ALB_POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='$ALB_POLICY_NAME'].Arn" --output text)
if [ -n "$ALB_POLICY_ARN" ]; then
aws iam detach-role-policy --role-name $ALB_ROLE_NAME --policy-arn $ALB_POLICY_ARN
aws iam delete-policy --policy-arn $ALB_POLICY_ARN
echo "β
ALB Controller IAM μ μ±
μμ μλ£"
else
echo "β οΈ ALB Controller IAM μ μ±
μ μ°Ύμ μ μμ. μ΄λ―Έ μμ λμμ μ μμ."
fi
# --------------------------
# NAT κ²μ΄νΈμ¨μ΄ μμ
# --------------------------
echo "π NAT κ²μ΄νΈμ¨μ΄ μμ μ€..."
aws ec2 delete-nat-gateway --nat-gateway-id $NAT_GW_ID --region $AWS_REGION
sleep 30 # NAT κ²μ΄νΈμ¨μ΄ μμ λκΈ°
# EIP ν΄μ
echo "π EIP ν΄μ μ€..."
aws ec2 release-address --allocation-id $EIP_ALLOC_ID --region $AWS_REGION
# --------------------------
# μΈν°λ· κ²μ΄νΈμ¨μ΄ μμ
# --------------------------
echo "π μΈν°λ· κ²μ΄νΈμ¨μ΄ μμ μ€..."
aws ec2 detach-internet-gateway --internet-gateway-id $IGW_ID --vpc-id $VPC_ID --region $AWS_REGION
aws ec2 delete-internet-gateway --internet-gateway-id $IGW_ID --region $AWS_REGION
# --------------------------
# IAM μν μμ
# --------------------------
echo "π IAM μν μμ μ€..."
aws iam detach-role-policy --role-name EKSRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
aws iam detach-role-policy --role-name EKSRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy
aws iam detach-role-policy --role-name EKSRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
aws iam detach-role-policy --role-name EKSRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSVPCResourceController
aws iam detach-role-policy --role-name EKSRole --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
aws iam delete-role --role-name EKSRole
aws iam detach-role-policy --role-name EKSNodeRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodePolicy
aws iam detach-role-policy --role-name EKSNodeRole --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryReadOnly
aws iam detach-role-policy --role-name EKSNodeRole --policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
aws iam delete-role --role-name EKSNodeRole
aws iam detach-role-policy --role-name ALBControllerRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy
aws iam detach-role-policy --role-name ALBControllerRole --policy-arn arn:aws:iam::aws:policy/AmazonEKSServicePolicy
aws iam delete-role --role-name ALBControllerRole
aws iam delete-role --role-name $ALB_ROLE_NAME || echo "β οΈ ALB Controller IAM μν μ΄ μ‘΄μ¬νμ§ μμ. μ΄λ―Έ μμ λμμ μ μμ."
# --------------------------
# RDS μμ
# --------------------------
echo "π RDS μΈμ€ν΄μ€ μμ μ€..."
aws rds delete-db-instance --db-instance-identifier $RDS_INSTANCE_ID --skip-final-snapshot --region $AWS_REGION
sleep 120 # RDS μμ λκΈ°
# RDS μλΈλ· κ·Έλ£Ή μμ
echo "π RDS μλΈλ· κ·Έλ£Ή μμ μ€..."
aws rds delete-db-subnet-group --db-subnet-group-name $RDS_SUBNET_GROUP_NAME --region $AWS_REGION
# RDS 보μ κ·Έλ£Ή μμ
echo "π RDS 보μ κ·Έλ£Ή μμ μ€..."
RDS_SECURITY_GROUP_ID=$(aws ec2 describe-security-groups --filters Name=group-name,Values=RDSSecurityGroup --query "SecurityGroups[0].GroupId" --output text)
aws ec2 delete-security-group --group-id $RDS_SECURITY_GROUP_ID --region $AWS_REGION
echo "β
RDS κ΄λ ¨ 리μμ€ μμ μλ£"
# --------------------------
# CloudWatch Logs μμ
# --------------------------
echo "π CloudWatch λ‘κ·Έ κ·Έλ£Ή μμ μ€..."
LOG_GROUP_NAME="/aws/eks/$EKS_CLUSTER_NAME/cluster"
aws logs delete-log-group --log-group-name $LOG_GROUP_NAME --region $AWS_REGION
echo "β
CloudWatch λ‘κ·Έ κ·Έλ£Ή μμ μλ£"
# --------------------------
# CloudWatch Logs μ μ±
μμ
# --------------------------
echo "π CloudWatch Logs IAM μ μ±
μμ μ€..."
CLOUDWATCH_POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='$CLOUDWATCH_POLICY_NAME'].Arn" --output text)
if [ -n "$CLOUDWATCH_POLICY_ARN" ]; then
aws iam detach-role-policy --role-name EKSRole --policy-arn $CLOUDWATCH_POLICY_ARN
aws iam delete-policy --policy-arn $CLOUDWATCH_POLICY_ARN
echo "β
CloudWatch Logs IAM μ μ±
μμ μλ£"
else
echo "β οΈ CloudWatch Logs IAM μ μ±
μ μ°Ύμ μ μμ. μ΄λ―Έ μμ λμμ μ μμ."
fi
# --------------------------
# EKS ν΄λ¬μ€ν° λ‘κΉ
λΉνμ±ν
# --------------------------
echo "π EKS ν΄λ¬μ€ν° λ‘κΉ
λΉνμ±ν μ€..."
aws eks update-cluster-config --name $EKS_CLUSTER_NAME --logging '{"clusterLogging":[{"types":["api","audit","authenticator","controllerManager","scheduler"],"enabled":false}]}' --region $AWS_REGION
echo "β
EKS ν΄λ¬μ€ν° λ‘κΉ
λΉνμ±ν μλ£"
echo "π λͺ¨λ RDS λ° CloudWatch κ΄λ ¨ 리μμ€ μμ μλ£!"
# --------------------------
# μλΈλ· μμ
# --------------------------
echo "π μλΈλ· μμ μ€..."
for SUBNET in $PUBLIC_SUBNET_ID $EKS_PRIVATE_SUBNET_A_ID $EKS_PRIVATE_SUBNET_B_ID; do
aws ec2 delete-subnet --subnet-id $SUBNET --region $AWS_REGION
done
echo "π RDS νλΌμ΄λΉ μλΈλ· μμ μ€..."
if [ -n "$RDS_PRIVATE_SUBNET_A_ID" ]; then
aws ec2 delete-subnet --subnet-id $RDS_PRIVATE_SUBNET_A_ID --region $AWS_REGION
echo "β
RDS Private Subnet A μμ μλ£: $RDS_PRIVATE_SUBNET_A_ID"
else
echo "β οΈ RDS Private Subnet Aλ₯Ό μ°Ύμ μ μμ. μ΄λ―Έ μμ λμμ μ μμ."
fi
if [ -n "$RDS_PRIVATE_SUBNET_B_ID" ]; then
aws ec2 delete-subnet --subnet-id $RDS_PRIVATE_SUBNET_B_ID --region $AWS_REGION
echo "β
RDS Private Subnet B μμ μλ£: $RDS_PRIVATE_SUBNET_B_ID"
else
echo "β οΈ RDS Private Subnet Bλ₯Ό μ°Ύμ μ μμ. μ΄λ―Έ μμ λμμ μ μμ."
fi
echo "π RDS νλΌμ΄λΉ μλΈλ· μμ μλ£!"
# --------------------------
# λΌμ°νΈ ν
μ΄λΈ μμ
# --------------------------
echo "π λΌμ°νΈ ν
μ΄λΈ μμ μ€..."
PUBLIC_ROUTE_TABLE_ID=$(aws ec2 describe-route-tables --filters Name=vpc-id,Values=$VPC_ID --query "RouteTables[0].RouteTableId" --output text)
PRIVATE_ROUTE_TABLE_ID=$(aws ec2 describe-route-tables --filters Name=vpc-id,Values=$VPC_ID --query "RouteTables[1].RouteTableId" --output text)
aws ec2 delete-route-table --route-table-id $PUBLIC_ROUTE_TABLE_ID --region $AWS_REGION
aws ec2 delete-route-table --route-table-id $PRIVATE_ROUTE_TABLE_ID --region $AWS_REGION
# --------------------------
# VPC μμ
# --------------------------
echo "π VPC μμ μ€..."
aws ec2 delete-vpc --vpc-id $VPC_ID --region $AWS_REGION
echo "β
λͺ¨λ AWS 리μμ€ μμ μλ£!"