이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭에서 전역 서브넷을 만들고 외부 부하 분산기(ELB)에 해당 서브넷을 사용하는 방법을 안내합니다.
전역 서브넷을 사용하면 GDC 조직의 여러 영역에서 외부 부하 분산 작업을 사용할 수 있는 서브넷을 구성할 수 있습니다. 부하 분산은 네트워크 트래픽을 여러 서버에 분산하여 애플리케이션과 서비스의 성능, 안정성, 가용성을 개선하는 이점을 제공합니다. 부하 분산을 위한 전역 서브넷에 대한 자세한 내용은 부하 분산을 위한 서브넷 정보를 참고하세요.
이 페이지는 애플리케이션 운영자 그룹 내에서 조직의 부하 분산을 관리하려는 개발자를 위한 페이지입니다. 자세한 내용은 GDC 오프라인 환경 문서 대상을 참고하세요.
시작하기 전에
전역 서브넷을 만들고 ELB에 맞게 구성하려면 다음이 필요합니다.
- 부하 분산기를 구성할 프로젝트를 소유해야 합니다. 자세한 내용은 프로젝트 만들기를 참고하세요.
필요한 ID 및 액세스 역할:
- 조직 IAM 관리자에게 부하 분산기 관리자(
load-balancer-admin
) 역할을 부여해 달라고 요청하세요. - 조직 IAM 관리자에게 전역 부하 분산기 관리자 (
global-load-balancer-admin
) 역할을 부여해 달라고 요청하세요. - 조직 IAM 관리자에게 서브넷 조직 관리자 (
subnet-org-admin
) 역할을 부여해 달라고 요청하세요. - 조직 IAM 관리자에게 서브넷 프로젝트 관리자(
subnet-project-admin
) 역할을 부여해 달라고 요청하세요.
자세한 내용은 사전 정의된 역할 설명을 참고하세요.
- 조직 IAM 관리자에게 부하 분산기 관리자(
상위 전역 서브넷 만들기
이 섹션에서 만드는 상위 전역 서브넷은 ELB IP 주소가 소싱되는 IP 주소 풀 역할을 합니다. 서브넷에 ipam.gdc.goog/network-segment: data
라벨이 포함되어야 합니다. spec.parentReference.name
필드를 사용하여 서브넷 상위를 지정할 수 있습니다.
이 상위 서브넷의 CIDR을 구성하는 방법에는 두 가지가 있습니다.
정적 CIDR 구성과 동적 CIDR 구성의 차이점에 관한 자세한 내용은 정적 및 동적 CIDR 구성을 참고하세요.
정적 CIDR 구성을 사용하여 서브넷 만들기
IP 주소 공간을 정확하게 제어해야 하는 경우 고정 CIDR 구성을 사용합니다.
이 서브넷의 유형은 Branch
입니다. 루트, 브랜치, 리프 서브넷 유형에 대한 자세한 내용은 서브넷 계층 구조를 참고하세요.
정적 CIDR 구성으로 전역 상위 서브넷을 만들려면 선택한 CIDR 블록을 spec.ipv4Request.cidr
필드에 추가합니다.
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
name: ELB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
cidr: STATIC_CIDR
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
다음을 바꿉니다.
GLOBAL_API_SERVER
: 전역 관리 API 서버의 kubeconfig 경로입니다. 자세한 내용은 전역 및 영역별 API 서버를 참고하세요. API 서버의 kubeconfig 파일을 아직 생성하지 않은 경우 로그인에서 자세한 내용을 확인하세요.ELB_PARENT_SUBNET_NAME
: ELB의 전역 상위 서브넷에 대해 선택한 이름입니다.STATIC_CIDR
: 이 상위 서브넷에 할당하려는 특정 CIDR 블록(예:10.0.10.0/27
)입니다.PARENT_NAME
: 이 새 서브넷이 생성되는 기존 상위 서브넷의 이름입니다.
ELB와 함께 작동하도록 이 서브넷을 구성하려면 ELB용 리프 서브넷을 만들어야 합니다.
동적 CIDR 구성을 사용하여 서브넷 만들기
동적 CIDR 구성은 사용 가능한 CIDR 블록을 상위 서브넷에서 지정된 크기로 자동 할당합니다. 이렇게 하면 특히 대규모 환경에서 IP 주소 관리가 간소화됩니다.
이 서브넷의 유형은 Branch
입니다. 루트, 브랜치, 리프 서브넷 유형에 대한 자세한 내용은 서브넷 계층 구조를 참고하세요.
동적 CIDR이 있는 전역 상위 서브넷을 만들려면 선택한 프리픽스 길이로 spec.ipv4Request.prefixLength
필드를 구성합니다.
kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
labels:
ipam.gdc.goog/network-segment: data
name: ELB_PARENT_SUBNET_NAME
namespace: platform
spec:
ipv4Request:
prefixLength: PREFIX_LENGTH
parentReference:
name: PARENT_NAME
namespace: platform
propagationStrategy: None
type: Branch
EOF
다음을 바꿉니다.
ELB_PARENT_SUBNET_NAME
: ELB 상위 서브넷의 선택한 이름(예:lb-global-lancer-elb-subnet
)입니다.STATIC_CIDR
: 사용할 특정 CIDR 블록(예:10.0.10.0/27
) 이 변수는 정적 CIDR 구성에만 적용됩니다.PARENT_NAME
: 이 새 서브넷이 생성되는 기존 상위 서브넷의 이름입니다(예:default-vpc-workload-cidr
).PREFIX_LENGTH
: 동적으로 할당된 CIDR(예:27
)의 선택된 프리픽스 길이입니다. 이 변수는 동적 CIDR 구성에만 적용됩니다.
ELB와 함께 작동하도록 이 서브넷을 구성하려면 ELB용 리프 서브넷을 만들어야 합니다.
ELB용 리프 서브넷 만들기
전역 상위 서브넷을 설정한 후에는 전역 ELB 서비스에 단일 IP 주소를 할당하는 리프 서브넷을 만들어야 합니다. 이 리프 서브넷의 type
필드 값은 Leaf
이어야 하며 ForwardingRule
, BackendService
, Backend
과 같은 부하 분산기 리소스와 동일한 프로젝트 네임스페이스에 있어야 합니다.
리프 서브넷을 만들고 ELB에 연결하려면 다음 단계를 따르세요.
단일 IP 주소를 할당하기 위한 것이므로
prefixLength
값이32
인 리프 서브넷을 만듭니다.parentReference
값은 이전에 생성된 상위 전역 서브넷을 참조합니다.kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/allocation-preference: default ipam.gdc.goog/network-segment: data name: ELB_IP_SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_REF namespace: platform type: Leaf EOF
다음을 바꿉니다.
ELB_IP_SUBNET_NAME
: 선택한 리프 서브넷의 이름입니다(예:lb-project-elb-ip
).PROJECT_NAMESPACE
: ELB 객체가 있는 프로젝트에 해당하는 Kubernetes 네임스페이스입니다(예:lb-project
).PARENT_REF
: 이 리프 서브넷이 IP 주소를 가져오는 상위 서브넷의 이름입니다(예: 이전에 만든 상위 전역 서브넷).
할당된 IP 주소를 보유하는 새로 생성된 리프 서브넷을 ELB의
ForwardingRuleExternal
리소스와 연결합니다.ForwardingRuleExternal
리소스에서spec.cidrRef.name
필드를 업데이트하여 이전 단계에서 만든 리프 서브넷의 이름을 참조합니다.kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ForwardingRuleExternal metadata: name: FRI_NAME namespace: PROJECT_NAMESPACE spec: ports: - port: PORT protocol: PROTOCOL backendServiceRef: name: BES_NAME cidrRef: name: LEAF_SUBNET_NAME EOF
다음을 바꿉니다.
FRI_NAME
:ForwardingRuleExternal
객체에 선택한 이름입니다(예:nginx-elb-static-fr
).PORT
: ELB가 수신 트래픽을 수신하는 포트 번호입니다(예:80
).PROTOCOL
: ELB가 사용하는 네트워크 프로토콜입니다(예:TCP
또는UDP
).BES_NAME
: 이ForwardingRuleExternal
리소스와 연결된BackendService
의 이름입니다(예:nginx-bes
).LEAF_SUBNET_NAME
: 이전 단계에서 만든 리프 서브넷의 이름입니다(예:lb-project-elb-ip
).