7장. 튜토리얼: AWS WAF 및 AWS ALB를 사용하여 ROSA 워크로드를 보호
AWS WAF는 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링할 수 있는 웹 애플리케이션 방화벽입니다.
AWS Application Load Balancer(ALB)를 사용하여 AWS(ROSA) 워크로드의 Red Hat OpenShift Service에WAF(Web Application Firewall)를 추가할 수 있습니다. 외부 솔루션을 사용하면 ROSA 리소스가 WAF 처리로 인해 서비스 거부가 발생하지 않도록 보호합니다.
ALB 기반 솔루션을 사용해야 하는 경우를 제외하고 더 유연한 CloudFront 방법을 사용하는 것이 좋습니다.
7.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AZ(여러 가용성 영역) ROSA(HCP 또는 Classic) 클러스터.
참고AWS ALB에는 AWS 문서에 따라 AZ에 두 개 이상의 퍼블릭 서브넷이 필요합니다. 이러한 이유로 ALB와 함께 여러 AZ ROSA 클러스터만 사용할 수 있습니다.
-
OpenShift CLI(
oc
)에 액세스할 수 있습니다. -
AWS CLI(
aws
)에 액세스할 수 있습니다.
7.1.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 기존 VPC에 배포된 클러스터에만 적용됩니다. 클러스터를 기존 VPC에 배포하지 않은 경우 이 섹션을 건너뛰고 아래의 설치 섹션을 진행합니다.
다음 변수를 ROSA 배포의 적절한 값으로 설정합니다.
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로 공백으로 구분된 목록으로 교체하여
()
를 유지해야 합니다. 예:PUBLIC_SUBNET_IDS=(subnet-056fd6861ad332ba2 subnet-08ce3b4ec753fe74c subnet-071a28228664972f)
. - 3
- 을 클러스터의 프라이빗 서브넷 ID로 공백으로 구분된 목록으로 교체하여
()
를 유지해야 합니다. 예:PRIVATE_SUBNET_IDS=(subnet-0b933d72a8d72c36a subnet-0817eb72070f1d3c2 subnet-0806e64159b66665a)
.
클러스터 ID가 있는 클러스터의 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