Networking Operator
AWS의 Red Hat OpenShift Service에서 네트워킹별 Operator 관리
초록
1장. AWS Load Balancer Operator 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator는 Red Hat에서 지원하는 Operator로, AWS 클러스터의 SRE 관리 Red Hat OpenShift Service에 선택적으로 설치할 수 있습니다.
AWS Load Balancer Operator에서 생성한 로드 밸런서는 OpenShift 경로에 사용할 수 없으며 OpenShift 경로 의 전체 계층 7 기능이 필요하지 않은 개별 서비스 또는 인그레스 리소스에만 사용해야 합니다.
AWS Load Balancer Operator 는 AWS 클러스터의 Red Hat OpenShift Service에서 AWS Load Balancer 컨트롤러 를 설치, 관리 및 구성하는 데 사용됩니다.
AWS Load Balancer 컨트롤러는 Kubernetes Ingress 리소스를 생성할 때 AWS Application Load Balancer(ALB) 를 프로비저닝하고 LoadBalancer 유형의 Kubernetes 서비스 리소스를 생성할 때 AWS NLB(Network Load Balancer) 를 프로비저닝합니다.
기본 AWS in-tree 로드 밸런서 공급자와 비교하여 이 컨트롤러는 ALB 및 NLB 모두에 대한 고급 주석으로 개발됩니다. 일부 고급 사용 사례는 다음과 같습니다.
- ALB에서 네이티브 Kubernetes Ingress 오브젝트 사용
- ALB를 AWS Web Application Firewall(WAF) 서비스와 통합
- 사용자 정의 NLB 소스 IP 범위 지정
- 사용자 정의 NLB 내부 IP 주소 지정
1.1. AWS Load Balancer Operator 설치 준비 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator를 설치하기 전에 클러스터가 요구 사항을 충족하고 AWS VPC 리소스에 적절하게 태그를 지정했는지 확인합니다. 몇 가지 유용한 환경 변수를 구성하는 옵션도 있습니다.
1.1.1. 클러스터 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
클러스터가 3개의 퍼블릭 서브넷이 있는 기존 VPC를 사용하여 세 개의 가용성 영역에 배포해야 합니다.
이러한 요구 사항은 AWS Load Balancer Operator가 일부 PrivateLink 클러스터에 적합하지 않을 수 있음을 의미합니다. AWS NLB는 이러한 클러스터에 더 적합한 선택이 될 수 있습니다.
1.1.2. 임시 환경 변수 설정 링크 복사링크가 클립보드에 복사되었습니다!
리소스 식별자 및 구성 세부 정보를 유지하기 위해 임시 환경 변수를 설정하는 옵션이 있습니다. 임시 환경 변수를 사용하면 AWS Load Balancer Operator에 대한 설치 명령을 실행하는 프로세스가 간소화됩니다.
환경 변수를 사용하여 특정 값을 저장하지 않으려면 관련 설치 명령에서 해당 값을 수동으로 입력할 수 있습니다.
사전 요구 사항
-
AWS CLI(
aws)가 설치되어 있습니다. -
OC CLI(
oc)가 설치되어 있습니다.
프로세스
OpenShift CLI(
oc)를 사용하여 클러스터 관리자로 클러스터에 로그인합니다.oc login --token=<token> --server=<cluster_url>
$ oc login --token=<token> --server=<cluster_url>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 환경 변수를 설정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 명령은 이 터미널 세션에서 해당 값을 명령줄 인터페이스에 전달할 수 있는 환경 변수를 생성합니다.
다음 명령을 실행하여 변수 값이 올바르게 설정되었는지 확인합니다.
echo "Cluster name: ${CLUSTER_NAME}$ echo "Cluster name: ${CLUSTER_NAME} Region: ${REGION} OIDC Endpoint: ${OIDC_ENDPOINT} AWS Account ID: ${AWS_ACCOUNT_ID}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Cluster name: <cluster_id> Region: <region> OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id> AWS Account ID: <aws_id>
Cluster name: <cluster_id> Region: <region> OIDC Endpoint: oidc.op1.openshiftapps.com/<oidc_id> AWS Account ID: <aws_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 단계
- 동일한 터미널 세션을 사용하여 AWS Load Balancer Operator 설치를 계속하여 환경 변수가 손실되지 않도록 합니다.
1.1.3. AWS VPC 및 서브넷 태그 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator를 설치하기 전에 AWS VPC 리소스에 태그를 지정해야 합니다.
사전 요구 사항
-
AWS CLI(
aws)가 설치되어 있습니다. -
OC CLI(
oc)가 설치되어 있습니다.
프로세스
선택 사항: AWS VPC 리소스의 환경 변수를 설정합니다.
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>" export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"
$ export VPC_ID=<vpc-id> $ export PUBLIC_SUBNET_IDS="<public-subnet-a-id> <public-subnet-b-id> <public-subnet-c-id>" $ export PRIVATE_SUBNET_IDS="<private-subnet-a-id> <private-subnet-b-id> <private-subnet-c-id>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC를 태그하여 클러스터와 연결합니다.
aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 탄력적 로드 밸런싱 역할을 통해 변경 사항을 허용하도록 퍼블릭 서브넷에 태그를 지정하고, 내부 탄력적 로드 밸런싱 역할로 변경할 수 있도록 프라이빗 서브넷에 태그를 지정합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스크립트를 실행합니다.
bash ${SCRATCH}/tag-subnets.shbash ${SCRATCH}/tag-subnets.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스
- 여러 가용성 영역이 있는 AWS 클러스터에서 Red Hat OpenShift Service를 설정하려면 AWS 클러스터의 다중 AZ Red Hat OpenShift Service를 참조하십시오.
1.2. AWS Load Balancer Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift CLI(oc)를 사용하여 AWS Load Balancer Operator를 설치할 수 있습니다. 환경 설정에 사용한 것과 동일한 터미널 세션을 사용하여 환경 변수를 사용하도록 AWS Load Balancer Operator를 설치합니다.
프로세스
AWS Load Balancer Operator에 대한 클러스터 내에 새 프로젝트를 생성합니다.
oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 정책을 생성합니다.
적절한 IAM 정책을 다운로드합니다.
curl -o ${SCRATCH}/operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/refs/heads/main/hack/operator-permission-policy.json$ curl -o ${SCRATCH}/operator-permission-policy.json https://raw.githubusercontent.com/openshift/aws-load-balancer-operator/refs/heads/main/hack/operator-permission-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator에 대한 권한 정책을 생성합니다.
aws iam create-policy \ --policy-name aws-load-balancer-operator-policy \ --policy-document file://${SCRATCH}/operator-permission-policy.json \ --region ${REGION}$ aws iam create-policy \ --policy-name aws-load-balancer-operator-policy \ --policy-document file://${SCRATCH}/operator-permission-policy.json \ --region ${REGION}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서 Operator 정책 ARN을 기록해 둡니다. 이 프로세스를
$OPERATOR_POLICY_ARN이라고 합니다.
AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성합니다.
Operator 역할에 대한 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 신뢰 정책을 사용하여 Operator 역할을 생성합니다.
aws iam create-role --role-name "${CLUSTER_NAME}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/operator-trust-policy.json"$ aws iam create-role --role-name "${CLUSTER_NAME}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/operator-trust-policy.json"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서 Operator 역할 ARN을 기록해 둡니다. 이 프로세스를 나머지 프로세스에 대해
$OPERATOR_ROLE_ARN이라고 합니다.Operator 역할 및 정책을 연결합니다.
aws iam attach-role-policy --role-name "${CLUSTER_NAME}-alb-operator" \ --policy-arn $OPERATOR_POLICY_ARN$ aws iam attach-role-policy --role-name "${CLUSTER_NAME}-alb-operator" \ --policy-arn $OPERATOR_POLICY_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow
OperatorGroup및Subscription을 생성하여 AWS Load Balancer Operator를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Controller에 대한 AWS IAM 정책을 생성합니다.
적절한 IAM 정책을 다운로드합니다.
curl -o ${SCRATCH}/controller-permission-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.12.0/docs/install/iam_policy.json$ curl -o ${SCRATCH}/controller-permission-policy.json https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.12.0/docs/install/iam_policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 컨트롤러에 대한 권한 정책을 생성합니다.
aws iam create-policy \ --region ${REGION} \ --policy-name aws-load-balancer-controller-policy \ --policy-document file://${SCRATCH}/controller-permission-policy.json$ aws iam create-policy \ --region ${REGION} \ --policy-name aws-load-balancer-controller-policy \ --policy-document file://${SCRATCH}/controller-permission-policy.jsonCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서 컨트롤러 정책 ARN을 기록해 둡니다. 이 프로세스를
$CONTROLLER_POLICY_ARN이라고 합니다.
AWS Load Balancer Controller에 대한 AWS IAM 역할을 생성합니다.
Controller 역할에 대한 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 신뢰 정책을 사용하여 Controller 역할을 생성합니다.
CONTROLLER_ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER_NAME}-albo-controller" \ --assume-role-policy-document "file://${SCRATCH}/controller-trust-policy.json" \ --query Role.Arn --output text) echo ${CONTROLLER_ROLE_ARN}CONTROLLER_ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER_NAME}-albo-controller" \ --assume-role-policy-document "file://${SCRATCH}/controller-trust-policy.json" \ --query Role.Arn --output text) echo ${CONTROLLER_ROLE_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서 Controller 역할 ARN을 기록해 둡니다. 이 프로세스를
$CONTROLLER_ROLE_ARN이라고 합니다.컨트롤러 역할 및 정책을 연결합니다.
aws iam attach-role-policy \ --role-name "${CLUSTER_NAME}-albo-controller" \ --policy-arn ${CONTROLLER_POLICY_ARN}$ aws iam attach-role-policy \ --role-name "${CLUSTER_NAME}-albo-controller" \ --policy-arn ${CONTROLLER_POLICY_ARN}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
AWS Load Balancer 컨트롤러 인스턴스를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고여기에서 오류가 발생하면 1분 정도 기다린 후 다시 시도하면 Operator가 아직 설치를 완료하지 않은 것입니다.
Operator 및 컨트롤러 Pod가 둘 다 실행 중인지 확인합니다.
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get podsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 유사한 출력이 표시되지 않으면 잠시 기다렸다가 다시 시도하십시오.
출력 예
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
추가 리소스
1.3. Operator 설치 검증 링크 복사링크가 클립보드에 복사되었습니다!
기본 샘플 애플리케이션을 배포하고 수신 및 로드 밸런싱 서비스를 생성하여 AWS Load Balancer Operator 및 Controller가 올바르게 배포되었는지 확인합니다.
프로세스
새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow hello-openshift이미지를 기반으로 새hello-world애플리케이션을 생성합니다.oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Application Load Balancer(ALB)에 연결할
NodePort서비스를 구성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션용 AWS ALB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션의 AWS ALB 끝점에 대한 액세스를 테스트합니다.
참고ALB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는오류가 발생하면 기다렸다가 다시 시도하십시오.ALB_INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${ALB_INGRESS}"$ ALB_INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${ALB_INGRESS}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션용 AWS NLB(Network Load Balancer)를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션의 NLB 끝점에 대한 액세스를 테스트합니다.
참고NLB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는오류가 발생하면 기다렸다가 다시 시도하십시오.NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${NLB}"$ NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${NLB}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 샘플 애플리케이션 및 모든 리소스를
hello-world네임스페이스에서 삭제할 수 있습니다.oc delete project hello-world
$ oc delete project hello-worldCopy to Clipboard Copied! Toggle word wrap Toggle overflow
1.4. AWS Load Balancer Operator 제거 링크 복사링크가 클립보드에 복사되었습니다!
더 이상 AWS Load Balancer Operator를 사용할 필요가 없는 경우 Operator를 제거하고 관련 역할 및 정책을 삭제할 수 있습니다.
프로세스
Operator 서브스크립션을 삭제합니다.
oc delete subscription aws-load-balancer-operator -n aws-load-balancer-operator
$ oc delete subscription aws-load-balancer-operator -n aws-load-balancer-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 관련 AWS IAM 역할을 분리하고 삭제합니다.
aws iam detach-role-policy \ --role-name "<cluster-id>-alb-operator" \ --policy-arn <operator-policy-arn> aws iam delete-role \ --role-name "<cluster-id>-alb-operator"
$ aws iam detach-role-policy \ --role-name "<cluster-id>-alb-operator" \ --policy-arn <operator-policy-arn> $ aws iam delete-role \ --role-name "<cluster-id>-alb-operator"Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM 정책을 삭제합니다.
aws iam delete-policy --policy-arn <operator-policy-arn>
$ aws iam delete-policy --policy-arn <operator-policy-arn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2장. AWS의 Red Hat OpenShift Service의 DNS Operator 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service에서 DNS Operator는 CoreDNS 인스턴스를 배포 및 관리하여 클러스터 내부 Pod에 이름 확인 서비스를 제공하고 DNS 기반 Kubernetes 서비스 검색을 활성화하며 내부 cluster.local 이름을 확인합니다.
이 Operator는 기본적으로 AWS 클러스터의 Red Hat OpenShift Service에 설치됩니다.
2.1. DNS 전달 사용 링크 복사링크가 클립보드에 복사되었습니다!
DNS 전달을 사용하여 다음과 같은 방법으로 /etc/resolv.conf 파일의 기본 전달 구성을 덮어쓸 수 있습니다.
모든 영역에 대해 이름 서버(
spec.servers)를 지정합니다. 전달된 영역이 AWS의 Red Hat OpenShift Service에서 관리하는 인그레스 도메인인 경우 도메인에 대한 업스트림 이름 서버를 인증해야 합니다.중요하나 이상의 영역을 지정해야 합니다. 그렇지 않으면 클러스터가 기능을 손실할 수 있습니다.
-
업스트림 DNS 서버 목록 제공(
spec.upstreamResolvers). - 기본 전달 정책을 변경합니다.
기본 도메인의 DNS 전달 구성에는 /etc/resolv.conf 파일과 업스트림 DNS 서버에 지정된 기본 서버가 모두 있을 수 있습니다.
프로세스
이름이
default인 DNS Operator 오브젝트를 수정합니다.oc edit dns.operator/default
$ oc edit dns.operator/defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 명령을 실행한 후 Operator는
spec.servers를 기반으로 추가 서버 구성 블록을 사용하여dns-default라는 구성 맵을 생성하고 업데이트합니다.중요zones매개 변수의 값을 지정할 때 인트라넷과 같은 특정 영역으로만 전달해야 합니다. 하나 이상의 영역을 지정해야 합니다. 그렇지 않으면 클러스터가 기능을 손실할 수 있습니다.서버에 쿼리와 일치하는 영역이 없는 경우 이름 확인은 업스트림 DNS 서버로 대체됩니다.
DNS 전달 구성
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
rfc6335서비스 이름 구문을 준수해야 합니다.- 2
rfc1123서비스 이름 구문의 하위 도메인 정의를 준수해야 합니다. 클러스터 도메인인cluster.local은zones필드에 대해 유효하지 않은 하위 도메인입니다.- 3
forwardPlugin에 나열된 업스트림 리졸버를 선택하는 정책을 정의합니다. 기본값은Random입니다.RoundRobin및Sequential값을 사용할 수도 있습니다.- 4
forwardPlugin당 최대 15개의업스트림이 허용됩니다.- 5
upstreamResolvers를 사용하여 기본 전달 정책을 재정의하고 기본 도메인의 지정된 DNS 확인자(업스트림 확인자)로 DNS 확인을 전달할 수 있습니다. 업스트림 확인자를 제공하지 않으면 DNS 이름 쿼리는/etc/resolv.conf에 선언된 서버로 이동합니다.- 6
- 쿼리용으로 업스트림에 나열된
업스트림서버의 순서를 결정합니다. 이러한 값 중 하나를 지정할 수 있습니다.Random,RoundRobin또는Sequential. 기본값은Sequential입니다. - 7
- 생략하면 플랫폼은 원래 클라이언트 요청의 프로토콜인 기본값을 선택합니다. 클라이언트 요청이 UDP를 사용하는 경우에도 플랫폼에서 모든 업스트림 DNS 요청에
TCP를 사용하도록 지정하려면 TCP로 설정합니다. - 8
- DNS 요청을 업스트림 확인기로 전달할 때 사용할 전송 유형, 서버 이름 및 선택적 사용자 정의 CA 또는 CA 번들을 구성하는 데 사용됩니다.
- 9
- 두 가지 유형의
업스트림을 지정할 수 있습니다 :SystemResolvConf또는Network.SystemResolvConf는/etc/resolv.conf를 사용하도록 업스트림을 구성하고Network는Networkresolver를 정의합니다. 하나 또는 둘 다를 지정할 수 있습니다. - 10
- 지정된 유형이
Network인 경우 IP 주소를 제공해야 합니다.address필드는 유효한 IPv4 또는 IPv6 주소여야 합니다. - 11
- 지정된 유형이
네트워크인 경우 선택적으로 포트를 제공할 수 있습니다.port필드에는1에서65535사이의 값이 있어야 합니다. 업스트림에 대한 포트를 지정하지 않으면 기본 포트는 853입니다.
3장. AWS의 Red Hat OpenShift Service의 Ingress Operator 링크 복사링크가 클립보드에 복사되었습니다!
Ingress Operator는 IngressController API를 구현하며 AWS 클러스터 서비스에서 Red Hat OpenShift Service에 대한 외부 액세스를 활성화하는 구성 요소입니다.
이 Operator는 기본적으로 AWS 클러스터의 Red Hat OpenShift Service에 설치됩니다.
3.1. AWS Ingress Operator의 Red Hat OpenShift Service 링크 복사링크가 클립보드에 복사되었습니다!
AWS 클러스터에서 Red Hat OpenShift Service를 생성하면 클러스터에서 실행되는 Pod 및 서비스에 각각 자체 IP 주소가 할당됩니다. IP 주소는 내부에서 실행되지만 외부 클라이언트가 액세스할 수 없는 다른 pod 및 서비스에 액세스할 수 있습니다.
Ingress Operator를 사용하면 라우팅을 처리하기 위해 하나 이상의 HAProxy 기반 Ingress 컨트롤러를 배포하고 관리하여 외부 클라이언트가 서비스에 액세스할 수 있습니다.
Red Hat 사이트 안정성 엔지니어(SRE)는 AWS 클러스터에서 Red Hat OpenShift Service용 Ingress Operator를 관리합니다. Ingress Operator의 설정을 변경할 수는 없지만 기본 Ingress 컨트롤러 구성, 상태 및 로그 및 Ingress Operator 상태를 볼 수 있습니다.
3.2. 기본 Ingress 컨트롤러 보기 링크 복사링크가 클립보드에 복사되었습니다!
Ingress Operator는 AWS에서 Red Hat OpenShift Service의 핵심 기능이며 즉시 활성화됩니다.
AWS 설치 시 모든 새로운 Red Hat OpenShift Service에는 이름이 default인 ingresscontroller 가 있습니다. 추가 Ingress 컨트롤러를 추가할 수 있습니다. 기본 ingresscontroller가 삭제되면 Ingress Operator가 1분 이내에 자동으로 다시 생성합니다.
프로세스
기본 Ingress 컨트롤러를 확인합니다.
oc describe --namespace=openshift-ingress-operator ingresscontroller/default
$ oc describe --namespace=openshift-ingress-operator ingresscontroller/defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.3. Ingress Operator 상태 보기 링크 복사링크가 클립보드에 복사되었습니다!
Ingress Operator의 상태를 확인 및 조사할 수 있습니다.
프로세스
Ingress Operator 상태를 확인합니다.
oc describe clusteroperators/ingress
$ oc describe clusteroperators/ingressCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.4. Ingress 컨트롤러 로그 보기 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 컨트롤러의 로그를 확인할 수 있습니다.
프로세스
Ingress 컨트롤러 로그를 확인합니다.
oc logs --namespace=openshift-ingress-operator deployments/ingress-operator -c <container_name>
$ oc logs --namespace=openshift-ingress-operator deployments/ingress-operator -c <container_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.5. Ingress 컨트롤러 상태 보기 링크 복사링크가 클립보드에 복사되었습니다!
특정 Ingress 컨트롤러의 상태를 확인할 수 있습니다.
프로세스
Ingress 컨트롤러의 상태를 확인합니다.
oc describe --namespace=openshift-ingress-operator ingresscontroller/<name>
$ oc describe --namespace=openshift-ingress-operator ingresscontroller/<name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. 기본 Ingress 컨트롤러 기능 관리 링크 복사링크가 클립보드에 복사되었습니다!
다음 표에서는 Ingress Operator에서 관리하는 기본 Ingress 컨트롤러의 구성 요소와 Red Hat 사이트 안정성 엔지니어링(SRE)이 AWS 클러스터의 Red Hat OpenShift Service에서 이 구성 요소를 유지 관리하는지 여부를 자세히 설명합니다.
| Ingress 구성 요소 | 관리 대상 | 기본 설정 |
|---|---|---|
| Ingress 컨트롤러 스케일링 | SRE | 제공됨 |
| Ingress Operator 스레드 수 | SRE | 제공됨 |
| Ingress 컨트롤러 액세스 로깅 | SRE | 제공됨 |
| Ingress 컨트롤러 분할 | SRE | 제공됨 |
| Ingress 컨트롤러 경로 허용 정책 | SRE | 제공됨 |
| Ingress 컨트롤러 와일드카드 경로 | SRE | 제공됨 |
| Ingress 컨트롤러 X-Forwarded 헤더 | SRE | 제공됨 |
| Ingress 컨트롤러 경로 압축 | SRE | 제공됨 |
4장. AWS의 Red Hat OpenShift Service의 Ingress Node Firewall Operator 링크 복사링크가 클립보드에 복사되었습니다!
Ingress Node Firewall Operator는 AWS의 Red Hat OpenShift Service에서 노드 수준 인그레스 트래픽을 관리하기 위한 상태 비저장 eBPF 기반 방화벽을 제공합니다.
4.1. Ingress 노드 방화벽 Operator 링크 복사링크가 클립보드에 복사되었습니다!
Ingress Node Firewall Operator는 방화벽 구성에서 지정 및 관리하는 노드에 데몬 세트를 배포하여 노드 수준에서 Ingress 방화벽 규칙을 제공합니다. 데몬 세트를 배포하려면 IngressNodeFirewallConfig CR(사용자 정의 리소스)을 생성합니다. Operator는 IngressNodeFirewallConfig CR을 적용하여 nodeSelector 와 일치하는 모든 노드에서 실행되는 수신 노드 방화벽 데몬 세트를 생성합니다.
IngressNodeFirewall CR의 규칙을 구성하고 nodeSelector 를 사용하여 클러스터에 적용하고 값을 "true"로 설정합니다.
Ingress Node Firewall Operator는 상태 비저장 방화벽 규칙만 지원합니다.
기본 XDP 드라이버를 지원하지 않는 NIC(네트워크 인터페이스 컨트롤러)는 더 낮은 성능에서 실행됩니다.
AWS 4.14 이상에서 Red Hat OpenShift Service에서 Ingress Node Firewall Operator를 실행해야 합니다.
4.2. Ingress Node Firewall Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 AWS CLI 또는 웹 콘솔에서 Red Hat OpenShift Service를 사용하여 Ingress Node Firewall Operator를 설치할 수 있습니다.
4.2.1. CLI를 사용하여 Ingress Node Firewall Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 CLI를 사용하여 Operator를 설치할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. - 관리자 권한이 있는 계정이 있습니다.
프로세스
openshift-ingress-node-firewall네임스페이스를 생성하려면 다음 명령을 입력합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorGroupCR을 생성하려면 다음 명령을 입력합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress Node Firewall Operator에 등록합니다.
Ingress Node Firewall Operator에 대한
서브스크립션CR을 생성하려면 다음 명령을 입력합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Operator가 설치되었는지 확인하려면 다음 명령을 입력합니다.
oc get ip -n openshift-ingress-node-firewall
$ oc get ip -n openshift-ingress-node-firewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.0-202211122336 Automatic true
NAME CSV APPROVAL APPROVED install-5cvnz ingress-node-firewall.4.0-202211122336 Automatic trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 버전을 확인하려면 다음 명령을 입력합니다.
oc get csv -n openshift-ingress-node-firewall
$ oc get csv -n openshift-ingress-node-firewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.0-202211122336 Ingress Node Firewall Operator 4.0-202211122336 ingress-node-firewall.4.0-202211102047 Succeeded
NAME DISPLAY VERSION REPLACES PHASE ingress-node-firewall.4.0-202211122336 Ingress Node Firewall Operator 4.0-202211122336 ingress-node-firewall.4.0-202211102047 SucceededCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.2.2. 웹 콘솔을 사용하여 Ingress Node Firewall Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 웹 콘솔을 사용하여 Operator를 설치할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. - 관리자 권한이 있는 계정이 있습니다.
프로세스
Ingress Node Firewall Operator를 설치합니다.
- AWS 웹 콘솔의 Red Hat OpenShift Service에서 Ecosystem → Software Catalog 를 클릭합니다.
- 사용 가능한 Operator 목록에서 Ingress Node Firewall Operator 를 선택한 다음 설치를 클릭합니다.
- Operator 설치 페이지의 설치된 네임스페이스 에서 Operator 권장 네임스페이스를 선택합니다.
- 설치를 클릭합니다.
Ingress Node Firewall Operator가 성공적으로 설치되었는지 확인합니다.
- 에코시스템 → 설치된 Operator 페이지로 이동합니다.
Ingress Node Firewall Operator 가 openshift-ingress-node-firewall 프로젝트에 InstallSucceeded 상태로 나열되어 있는지 확인합니다.
참고설치 중에 Operator는 실패 상태를 표시할 수 있습니다. 나중에 InstallSucceeded 메시지와 함께 설치에 성공하면 이 실패 메시지를 무시할 수 있습니다.
Operator에 InstallSucceeded 상태가 없는 경우 다음 단계를 사용하여 문제를 해결합니다.
- Operator 서브스크립션 및 설치 계획 탭의 상태 아래에서 실패 또는 오류가 있는지 검사합니다.
-
워크로드 → Pod 페이지로 이동하여
openshift-ingress-node-firewall프로젝트에서 Pod 로그를 확인합니다. YAML 파일의 네임스페이스를 확인합니다. 주석이 없는 경우 다음 명령을 사용하여 주석
workload.openshift.io/allowed=management를 Operator 네임스페이스에 추가할 수 있습니다.oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=management
$ oc annotate ns/openshift-ingress-node-firewall workload.openshift.io/allowed=managementCopy to Clipboard Copied! Toggle word wrap Toggle overflow 참고단일 노드 OpenShift 클러스터의 경우
openshift-ingress-node-firewall네임스페이스에workload.openshift.io/allowed=management주석이 필요합니다.
4.3. Ingress Node Firewall Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
- Ingress Node Firewall Operator가 설치되어 있습니다.
프로세스
Ingress Node Firewall Operator를 배포하려면 Operator의 데몬 세트를 배포할 IngressNodeFirewallConfig 사용자 정의 리소스를 생성합니다. 방화벽 규칙을 적용하여 하나 이상의 IngressNodeFirewall CRD를 노드에 배포할 수 있습니다.
-
ingressnodefirewallconfig라는openshift-ingress-node-firewall네임스페이스에IngressNodeFirewallConfig를 생성합니다. 다음 명령을 실행하여 Ingress Node Firewall Operator 규칙을 배포합니다.
oc apply -f rule.yaml
$ oc apply -f rule.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.1. Ingress 노드 방화벽 구성 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 노드 방화벽 구성 오브젝트의 필드는 다음 표에 설명되어 있습니다.
| 필드 | 유형 | 설명 |
|---|---|---|
|
|
|
CR 오브젝트의 이름입니다. 방화벽 규칙 오브젝트의 이름은 |
|
|
|
Ingress Firewall Operator CR 오브젝트의 네임스페이스입니다. |
|
|
| 지정된 노드 라벨을 통해 노드를 대상으로 지정하는 데 사용되는 노드 선택 제약 조건입니다. 예를 들면 다음과 같습니다. spec:
nodeSelector:
node-role.kubernetes.io/worker: ""
참고
|
|
|
| Node Ingress Firewall Operator에서 eBPF Manager Operator를 사용하거나 eBPF 프로그램을 관리하지 않는지를 지정합니다. 이 기능은 기술 프리뷰 기능입니다. Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오. |
시작하기 위해 Operator는 모든 노드에서 데몬 세트를 생성하기 위해 IngressNodeFirewallConfig 를 사용합니다. 이를 생성한 후 추가 방화벽 규칙 오브젝트를 생성할 수 있습니다.
4.3.2. Ingress Node Firewall Operator 구성 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 전체 Ingress 노드 방화벽 구성이 지정됩니다.
Ingress 노드 방화벽 구성 개체를 만드는 방법의 예
Operator는 CR 오브젝트를 사용하고 nodeSelector 와 일치하는 모든 노드에 Ingress 노드 방화벽 데몬 세트를 생성합니다.
4.3.3. Ingress 노드 방화벽 규칙 오브젝트 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 노드 방화벽 규칙 오브젝트의 필드는 다음 표에 설명되어 있습니다.
| 필드 | 유형 | 설명 |
|---|---|---|
|
|
| CR 오브젝트의 이름입니다. |
|
|
|
이 오브젝트의 필드는 방화벽 규칙을 적용할 인터페이스를 지정합니다. 예: |
|
|
|
|
|
|
|
|
4.3.3.1. Ingress 오브젝트 구성 링크 복사링크가 클립보드에 복사되었습니다!
ingress 오브젝트의 값은 다음 표에 정의되어 있습니다.
| 필드 | 유형 | 설명 |
|---|---|---|
|
|
| CIDR 블록을 설정할 수 있습니다. 다른 주소 제품군에서 여러 CIDR을 구성할 수 있습니다. 참고
다른 CIDR을 사용하면 동일한 주문 규칙을 사용할 수 있습니다. CIDR이 겹치는 동일한 노드 및 인터페이스에 |
|
|
|
Ingress 방화벽
규칙을 적용하거나 참고 Ingress 방화벽 규칙은 잘못된 구성을 차단하는 확인 Webhook를 사용하여 확인합니다. 확인 Webhook를 사용하면 API 서버와 같은 중요한 클러스터 서비스를 차단할 수 없습니다. |
4.3.3.2. Ingress 노드 방화벽 규칙 오브젝트 예 링크 복사링크가 클립보드에 복사되었습니다!
다음 예제에서는 전체 Ingress 노드 방화벽 구성이 지정됩니다.
Ingress 노드 방화벽 구성의 예
- 1
- <label_name> 및 <label_value>는 노드에 있어야 하며
ingressfirewallconfigCR을 실행할 노드에 적용되는nodeselector레이블 및 값과 일치해야 합니다. <label_value>는true또는false일 수 있습니다.nodeSelector레이블을 사용하면 별도의 노드 그룹을 대상으로 하여ingressfirewallconfigCR을 사용하는 데 다른 규칙을 적용할 수 있습니다.
4.3.3.3. 제로 신뢰 Ingress 노드 방화벽 규칙 오브젝트 예 링크 복사링크가 클립보드에 복사되었습니다!
제로 트러스트 Ingress 노드 방화벽 규칙은 다중 인터페이스 클러스터에 추가 보안을 제공할 수 있습니다. 예를 들어 제로 신뢰 Ingress 노드 방화벽 규칙을 사용하여 SSH를 제외한 특정 인터페이스에서 모든 트래픽을 삭제할 수 있습니다.
다음 예에서는 제로 신뢰 Ingress 노드 방화벽 규칙 세트의 전체 구성이 지정됩니다.
사용자는 적절한 기능을 보장하기 위해 애플리케이션이 허용 목록에 사용하는 모든 포트를 추가해야 합니다.
제로 트러스트 Ingress 노드 방화벽 규칙의 예
eBPF Manager Operator 통합은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
4.4. Ingress Node Firewall Operator 통합 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 노드 방화벽은 eBPF 프로그램을 사용하여 일부 주요 방화벽 기능을 구현합니다. 기본적으로 이러한 eBPF 프로그램은 Ingress 노드 방화벽과 관련된 메커니즘을 사용하여 커널에 로드됩니다. 대신 eBPF Manager Operator를 사용하여 이러한 프로그램을 로드 및 관리하도록 Ingress Node Firewall Operator를 구성할 수 있습니다.
이 통합을 활성화하면 다음과 같은 제한 사항이 적용됩니다.
- Ingress Node Firewall Operator는 XDP를 사용할 수 없는 경우 TCX를 사용하고 TCX는 bpfman과 호환되지 않습니다.
-
Ingress Node Firewall Operator 데몬 세트 Pod는 방화벽 규칙이 적용될 때까지
ContainerCreating상태로 유지됩니다. - Ingress Node Firewall Operator 데몬 세트 Pod는 privileged로 실행됩니다.
4.5. eBPF Manager Operator를 사용하도록 Ingress Node Firewall Operator 구성 링크 복사링크가 클립보드에 복사되었습니다!
Ingress 노드 방화벽은 eBPF 프로그램을 사용하여 일부 주요 방화벽 기능을 구현합니다. 기본적으로 이러한 eBPF 프로그램은 Ingress 노드 방화벽과 관련된 메커니즘을 사용하여 커널에 로드됩니다.
클러스터 관리자는 eBPF Manager Operator를 사용하여 이러한 프로그램을 로드 및 관리하도록 Ingress Node Firewall Operator를 구성하여 추가 보안 및 관찰 기능을 추가할 수 있습니다.
사전 요구 사항
-
OpenShift CLI(
oc)가 설치되어 있습니다. - 관리자 권한이 있는 계정이 있습니다.
- Ingress Node Firewall Operator가 설치되어 있어야 합니다.
- eBPF Manager Operator가 설치되어 있습니다.
프로세스
ingress-node-firewall-system네임스페이스에 다음 라벨을 적용합니다.oc label namespace openshift-ingress-node-firewall \ pod-security.kubernetes.io/enforce=privileged \ pod-security.kubernetes.io/warn=privileged --overwrite$ oc label namespace openshift-ingress-node-firewall \ pod-security.kubernetes.io/enforce=privileged \ pod-security.kubernetes.io/warn=privileged --overwriteCopy to Clipboard Copied! Toggle word wrap Toggle overflow ingressnodefirewallconfig라는IngressNodeFirewallConfig오브젝트를 편집하고ebpfProgramManagerMode필드를 설정합니다.Ingress Node Firewall Operator 구성 오브젝트
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음과 같습니다.
<ebpf_mode> : Ingress Node Firewall Operator에서 eBPF Manager Operator를 사용하여 eBPF 프로그램을 관리할지 여부를 지정합니다.true또는false여야 합니다. 설정되지 않은 경우 eBPF Manager가 사용되지 않습니다.
4.6. Ingress Node Firewall Operator 규칙 보기 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
다음 명령을 실행하여 현재 모든 규칙을 확인합니다.
oc get ingressnodefirewall
$ oc get ingressnodefirewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 반환된 <
resource>이름 중 하나를 선택하고 다음 명령을 실행하여 규칙 또는 구성을 확인합니다.oc get <resource> <name> -o yaml
$ oc get <resource> <name> -o yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
4.7. Ingress Node Firewall Operator 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 설치된 Ingress Node Firewall CRD(사용자 정의 리소스 정의)를 나열합니다.
oc get crds | grep ingressnodefirewall
$ oc get crds | grep ingressnodefirewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z
NAME READY UP-TO-DATE AVAILABLE AGE ingressnodefirewallconfigs.ingressnodefirewall.openshift.io 2022-08-25T10:03:01Z ingressnodefirewallnodestates.ingressnodefirewall.openshift.io 2022-08-25T10:03:00Z ingressnodefirewalls.ingressnodefirewall.openshift.io 2022-08-25T10:03:00ZCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Ingress Node Firewall Operator의 상태를 확인합니다.
oc get pods -n openshift-ingress-node-firewall
$ oc get pods -n openshift-ingress-node-firewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21h
NAME READY STATUS RESTARTS AGE ingress-node-firewall-controller-manager 2/2 Running 0 5d21h ingress-node-firewall-daemon-pqx56 3/3 Running 0 5d21hCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 필드는 Operator 상태에 대한 정보를 제공합니다.
READY,STATUS,AGE,RESTARTS. Ingress Node Firewall Operator가 할당된 노드에 데몬 세트를 배포할 때STATUS필드는Running입니다.다음 명령을 실행하여 모든 수신 방화벽 노드 Pod의 로그를 수집합니다.
oc adm must-gather – gather_ingress_node_firewall
$ oc adm must-gather – gather_ingress_node_firewallCopy to Clipboard Copied! Toggle word wrap Toggle overflow 로그는 /s
os_commands/ebpff .에 있는 eBPF보고서에서 사용할 수 있습니다. 이러한 보고서에는 수신 방화벽 XDP가 패킷 처리를 처리하고 통계를 업데이트하고 이벤트를 발송할 때 사용되거나 업데이트된 조회 테이블이 포함됩니다.bpftool출력이 포함된 sos 노드의
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.