第 6 章 教程: 使用 AWS WAF 和 AWS ALBs 来保护 Red Hat OpenShift Service on AWS 工作负载
AWS WAF 是一个 Web 应用程序防火墙,可让您监控转发到您受保护的 Web 应用程序资源的 HTTP 和 HTTPS 请求。
您可以使用 AWS Application Load Balancer (ALB)将 Web Application Firewall (WAF)添加到 Red Hat OpenShift Service on AWS 工作负载中。使用外部解决方案可防止 Red Hat OpenShift Service on AWS 资源因为处理 WAF 而导致拒绝服务的问题。
建议您使用更灵活的 CloudFront 方法,除非绝对必须使用基于 ALB 的解决方案。
6.1. 先决条件 复制链接链接已复制到粘贴板!
AWS 集群上的多个可用区(AZ) Red Hat OpenShift Service。
注意根据 AWS 文档,AWS ALB 在 AZ 之间至少需要两个 公共子网。因此,只有多个 AZ Red Hat OpenShift Service on AWS 集群可以与 ALBs 一起使用。
-
您可以访问 OpenShift CLI(
oc
)。 -
您可以访问 AWS CLI (
aws
)。
6.1.1. 环境设置 复制链接链接已复制到粘贴板!
准备环境变量:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. AWS VPC 和子网 复制链接链接已复制到粘贴板!
本节只适用于部署到现有 VPC 的集群。如果您没有将集群部署到现有的 VPC 中,请跳过本节并继续进行下面的安装部分。
将以下变量设置为 Red Hat OpenShift Service on AWS 部署的正确值:
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>) export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
$ export VPC_ID=<vpc-id>
1 $ export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>)
2 $ export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用集群的 VPC ID 替换,例如:
export VPC_ID=vpc-04c429b7dbc4680ba
。 - 2
- 使用空格分隔集群的专用子网 ID 列表替换,确保保留
()。
例如:export PUBLIC_SUBNET_IDS=(subnet-056fd6861ad332ba2 subnet-08ce3b4ec753fe74c subnet-071aa28228664972f)
。 - 3
- 使用空格分隔集群的专用子网 ID 列表替换,确保保留
()。
例如:export PRIVATE_SUBNET_IDS=(subnet-0b933d72a8d72c36a subnet-0817eb72070f1d3c2 subnet-0806e64159b66665a)
。
使用集群标识符向集群的 VPC 添加标签:
aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
$ aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的公共子网中添加标签:
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您的专用子网中添加标签:
aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow