Kubernetes Goat项目在AWS EKS上的部署指南
🚀 前言:为什么选择AWS EKS部署Kubernetes Goat?
Kubernetes Goat是一个"故意设计为脆弱"的Kubernetes集群环境,专门用于学习和实践Kubernetes安全。在AWS EKS(Elastic Kubernetes Service)上部署Kubernetes Goat具有以下优势:
- 生产级环境:EKS提供企业级的Kubernetes托管服务
- 成本可控:按需付费,避免资源浪费
- 安全性:AWS提供网络隔离和安全组配置
- 可扩展性:轻松扩展节点和资源
本文将详细介绍两种在AWS EKS上部署Kubernetes Goat的方法:传统方法和CDK自动化方法。
📋 部署前准备
系统要求
| 工具 | 版本要求 | 安装方法 |
|---|---|---|
| eksctl | ≥ 0.121.0 | 官方安装指南 |
| kubectl | ≥ 1.24 | Kubernetes文档 |
| awscli | ≥ 2.0 | AWS CLI安装 |
| helm | ≥ 3.0 | Helm安装指南 |
AWS账户配置
# 配置AWS CLI
aws configure
# 验证配置
aws sts get-caller-identity
🛠️ 方法一:使用eksctl直接部署EKS集群
步骤1:创建EKS集群
# 创建包含2个t4g.medium节点的EKS集群
eksctl create cluster \
--name k8s-goat-cluster \
--region us-east-1 \
--node-type t4g.medium \
--nodes 2 \
--version 1.24
步骤2:配置kubectl访问
# 更新kubeconfig文件
aws eks update-kubeconfig \
--name k8s-goat-cluster \
--region us-east-1
# 验证集群连接
kubectl cluster-info
步骤3:部署Kubernetes Goat
# 克隆项目仓库
git clone https://gitcode.com/GitHub_Trending/ku/kubernetes-goat.git
cd kubernetes-goat
# 执行部署脚本
bash setup-kubernetes-goat.sh
部署过程详解
🚀 方法二:使用AWS CDK自动化部署
CDK部署架构
部署步骤
1. 环境准备
# 创建Python虚拟环境
python3 -m venv .venv
source .venv/bin/activate
# 安装依赖
pip install -r requirements.txt
2. 配置环境变量
创建.env文件:
account_number=1234567890
default_region=us-east-1
vpc-id=vpc-01234abcd
instance_type=t2.large
key_pair_name=kube-goat
whitelist_ip=0.0.0.0/0
3. 部署CDK栈
# 初始化CDK(首次部署)
cdk bootstrap
# 生成CloudFormation模板
cdk synth
# 部署基础设施
cdk deploy
4. 访问Kubernetes Goat
# SSH连接到EC2实例
ssh -i key_pair_name.pem ubuntu@<instance-public-ip>
# 访问Kubernetes Goat
cd /kubernetes-goat
bash access-kubernetes-goat.sh
🔧 部署验证和故障排除
验证部署状态
# 检查所有Pod状态
kubectl get pods --all-namespaces
# 检查服务状态
kubectl get services
# 查看部署日志
kubectl logs -l app=kubernetes-goat
常见问题解决
| 问题 | 解决方案 |
|---|---|
| EKS集群创建失败 | 检查IAM权限和配额限制 |
| kubectl连接失败 | 验证aws configure配置 |
| Pod处于Pending状态 | 检查节点资源和存储类 |
| 服务无法访问 | 检查安全组和网络ACL配置 |
📊 资源配置建议
节点规格推荐
| 使用场景 | 实例类型 | 节点数量 | 存储 |
|---|---|---|---|
| 个人学习 | t3.medium | 2 | 20GB |
| 团队培训 | m5.large | 3 | 50GB |
| 生产测试 | m5.xlarge | 4 | 100GB |
成本估算表
| 资源类型 | 规格 | 按需价格(us-east-1) |
|---|---|---|
| EKS控制平面 | 标准 | $0.10/小时 |
| EC2实例 | t3.medium | $0.0416/小时 |
| EBS存储 | gp3 20GB | $0.08/GB月 |
🧹 清理和资源释放
清理Kubernetes Goat
# 卸载Kubernetes Goat
bash teardown-kubernetes-goat.sh
删除EKS集群
# 删除EKS集群
eksctl delete cluster \
--name k8s-goat-cluster \
--region us-east-1
删除CDK部署
# 销毁CDK栈
cdk destroy
🎯 安全最佳实践
网络安全配置
# 示例安全组规则
- protocol: tcp
from_port: 22
to_port: 22
cidr_blocks: ["您的IP地址/32"]
- protocol: tcp
from_port: 1230
to_port: 1235
cidr_blocks: ["您的IP地址/32"]
IAM权限最小化
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"eks:CreateCluster",
"eks:DescribeCluster",
"eks:DeleteCluster"
],
"Resource": "*"
}
]
}
📝 总结
通过本文的详细指南,您已经掌握了在AWS EKS上部署Kubernetes Goat的两种方法:
- 传统eksctl方法:简单直接,适合快速部署测试环境
- CDK自动化方法:基础设施即代码,适合可重复的部署流程
无论选择哪种方法,都建议遵循安全最佳实践,合理配置网络访问权限,并在使用完成后及时清理资源以避免不必要的费用。
Kubernetes Goat在AWS EKS上的部署为您提供了一个真实的生产级环境来学习和实践Kubernetes安全,帮助您更好地理解和防御Kubernetes环境中的安全威胁。
下一步行动建议:
- 完成部署后,开始探索Kubernetes Goat中的各个安全场景
- 尝试不同的攻击向量和防御策略
- 将学到的知识应用到实际的生产环境中
- 定期更新Kubernetes Goat到最新版本以获取新的安全场景
Happy Hacking! 🚀
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



