다음을 통해 공유


테넌트 워크로드 배포를 위한 필수 조건

이 가이드에서는 다음을 만들기 위한 필수 구성 요소를 설명합니다.

  • VNF(가상 네트워크 함수) 워크로드용 VM(가상 머신)
  • CNF(클라우드 네이티브 네트워크 함수) 워크로드에 대한 Nexus Kubernetes 클러스터 배포

테넌트 워크로드 배포 흐름의 다이어그램.

네트워크 필수 구성 요소

워크로드 요구 사항에 따라 다양한 네트워크를 만들어야 합니다. 다음 고려 사항 목록은 완전하지 않습니다. 도움이 필요한 경우 적절한 지원 팀에 문의하세요.

  • 워크로드를 지원하는 데 필요한 네트워크 유형을 결정합니다.
    • L3(계층 3) 네트워크에는 VLAN 및 서브넷 할당이 필요합니다. 서브넷은 각 VM에 대한 IP 할당을 지원할 만큼 충분히 커야 합니다. 플랫폼은 내부 사용을 위해 처음 세 개의 사용 가능한 IP 주소를 예약합니다. 예를 들어 6개의 VM을 지원하려면 서브넷에 대한 최소 CIDR은 /28(14개의 사용 가능한 주소 – 3개의 예약된 주소 = 11개 주소 사용 가능)입니다.
    • L2(계층 2) 네트워크에는 단일 VLAN 할당만 필요합니다.
    • 트렁크된 네트워크에는 여러 VLAN 할당이 필요합니다.
  • 필요한 각 유형의 네트워크 수를 결정합니다.
  • 각 네트워크의 MTU 크기를 결정합니다(최댓값: 9,000).
  • 각 네트워크에 대한 BGP 피어링 정보와 네트워크가 서로 통신해야 하는지 여부를 결정합니다. 각 L3 격리 도메인에서 여러 L3 네트워크를 지원할 수 있으므로 서로 통신해야 하는 네트워크를 동일한 L3 격리 도메인으로 그룹화해야 합니다.
  • 플랫폼은 VM에서 다른 외부 엔드포인트에 연결할 수 있도록 프록시를 제공합니다. cloudservicesnetwork 인스턴스를 만들려면 엔드포인트를 프록시해야 하므로 엔드포인트 목록을 수집합니다. 엔드포인트 목록은 네트워크를 만든 후에 수정할 수 있습니다.

격리 도메인 만들기

격리 도메인을 사용하면 동일한 랙(랙 내 통신) 또는 다른 랙(랙 간 통신)에서 호스트되는 워크로드 간에 통신할 수 있습니다. 격리 도메인을 만드는 방법에 대한 자세한 내용은 여기에서 확인할 수 있습니다.

테넌트 워크로드용 네트워크 만들기

아래 섹션에서는 다음과 같은 네트워크를 만드는 방법을 설명합니다.

  • 계층 2 네트워크
  • 계층 3 네트워크
  • 트렁크 네트워크

L2 네트워크 만들기

필요한 경우 워크로드에 대한 L2 네트워크를 만듭니다. 필요한 각 L2 네트워크에 대해 지침을 반복하면 됩니다.

이 네트워크에 대한 VLAN을 구성하도록 만든 L2 격리 도메인의 리소스 ID를 수집합니다.

  az networkcloud l2network create --name "<YourL2NetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --l2-isolation-domain-id "<YourL2IsolationDomainId>"

L3 네트워크 만들기

필요한 경우 워크로드에 대한 L3 네트워크를 만듭니다. 필요한 각 L3 네트워크에 대해 지침을 반복합니다.

필요 항목:

  • 이 네트워크에 대한 VLAN을 구성하도록 만든 L3 격리 도메인의 resourceID 값입니다.
  • L3 격리 도메인에 있는 i-pv4-connected-prefix 값과 일치해야 하는 ipv4-connected-prefix 값입니다.
  • L3 격리 도메인에 있는 i-pv6-connected-prefix 값과 일치해야 하는 ipv6-connected-prefix 값입니다.
  • IPv4, IPv6 또는 DualStack(기본값)일 수 있는 ip-allocation-type 값입니다.
  • L3 격리 도메인에 있는 값과 일치해야 하는 vlan 값입니다.
  az networkcloud l3network create --name "<YourL3NetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --ip-allocation-type "<YourNetworkIpAllocation>" \
    --ipv4-connected-prefix "<YourNetworkIpv4Prefix>" \
    --ipv6-connected-prefix "<YourNetworkIpv6Prefix>" \
    --l3-isolation-domain-id "<YourL3IsolationDomainId>" \
    --vlan <YourNetworkVlan>

트렁크 네트워크 만들기

필요한 경우 VM에 대해 트렁크 네트워크를 만듭니다. 필요한 각 트렁크 네트워크에 대해 지침을 반복합니다.

이전에 만든 L2 및 L3 격리 도메인의 resourceId 값을 수집하여 이 네트워크에 대한 VLAN을 구성합니다. 필요한 만큼 L2 및 L3 격리 도메인을 포함할 수 있습니다.

  az networkcloud trunkednetwork create --name "<YourTrunkedNetworkName>" \
    --resource-group "<YourResourceGroupName>" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId>" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --interface-name "<YourNetworkInterfaceName>" \
    --isolation-domain-ids \
      "<YourL3IsolationDomainId1>" \
      "<YourL3IsolationDomainId2>" \
      "<YourL2IsolationDomainId1>" \
      "<YourL2IsolationDomainId2>" \
      "<YourL3IsolationDomainId3>" \
    --vlans <YourVlanList>

클라우드 서비스 네트워크 만들기

Operator Nexus VM(가상 머신) 또는 Operator Nexus Kubernetes 클러스터를 만들려면 클라우드 서비스 네트워크가 있어야 합니다. 이 네트워크가 없으면 VM 또는 클러스터를 만들 수 없습니다.

클라우드 서비스 네트워크에서는 필수 플랫폼 엔드포인트에 자동으로 액세스할 수 있지만 애플리케이션에 필요한 경우 docker.io 같은 다른 엔드포인트를 추가해야 합니다. 클라우드 서비스 네트워크 프록시를 구성하는 것은 원하는 엔드포인트에 성공적으로 연결되도록 하는 중요한 단계입니다. 이를 위해 초기 생성 중에 또는 --additional-egress-endpoints 매개 변수를 사용하여 업데이트로 송신 엔드포인트를 클라우드 서비스 네트워크에 추가할 수 있습니다. URL 엔드포인트에 대한 와일드카드는 편리해 보일 수 있지만 보안상의 이유로 권장되지는 않습니다. 예를 들어 docker.io 호스트된 리포지토리에서 이미지 끌어오기를 허용하도록 프록시를 구성하려면 엔드포인트로 .docker.io을(를) 지정할 수 있습니다.

송신 엔드포인트는 RFC 1034, RFC 1035 및 RFC 1123에 설명된 도메인 이름 구조 및 호스트 이름 사양을 준수해야 합니다. 유효한 도메인 이름에는 영숫자 문자, 하이픈(시작 또는 끝이 아님)이 포함되며 하위 도메인을 점으로 구분할 수 있습니다. 엔드포인트는 단일 FQDN 또는 하위 도메인(.이(가) 있는 도메인 접두사) 일 수 있습니다. 다음은 도메인 및 호스트 이름에 대한 규정 준수 명명 규칙을 보여 주는 몇 가지 예입니다.

  • contoso.com: .com 최상위 도메인에서 두 번째 수준 도메인으로 사용되는 기본 도메인입니다.
  • sales.contoso.com: .com 최상위 도메인에서 세 번째 수준 도메인으로 사용되는 contoso.com 하위 도메인입니다.
  • web-server-1.contoso.com: 하이픈을 사용하여 단어와 숫자를 구분하는 특정 웹 서버의 호스트 이름입니다.
  • api.v1.contoso.com: 기본 도메인 contoso.com 위에 두 개의 하위 도메인(v1api)을 통합합니다.
  • .api.contoso.com: 여러 세 번째 수준 도메인을 포함하는 api.contoso.com의 하위 도메인에 대한 와일드카드입니다.
  az networkcloud cloudservicesnetwork create --name "<YourCloudServicesNetworkName>" \
    --resource-group "<YourResourceGroupName >" \
    --subscription "<YourSubscription>" \
    --extended-location name="<ClusterCustomLocationId >" type="CustomLocation" \
    --location "<ClusterAzureRegion>" \
    --additional-egress-endpoints "[{\"category\":\"<YourCategory >\",\"endpoints\":[{\"<domainName1 >\":\"< endpoint1 >\",\"port\":<portnumber1 >}]}]"

클라우드 서비스 네트워크를 설정한 후 이를 사용하여 지정한 송신 엔드포인트에 연결할 수 있는 VM 또는 클러스터를 만들 수 있습니다. 프록시는 HTTPS에서만 작동합니다.

참고 항목

VNF 이미지를 올바르게 끌어올 수 있도록 하려면 ACR URL이 운영자 Nexus 가상 머신과 함께 사용할 클라우드 서비스 네트워크의 송신 허용 목록에 있는지 확인합니다.

또한 ACR에 전용 데이터 엔드포인트를 사용하도록 설정한 경우 모든 새 데이터 엔드포인트를 송신 허용 목록에 추가해야 합니다. ACR에 대해 가능한 모든 엔드포인트를 찾으려면 여기의 지침을 따르세요.

프록시를 사용하여 가상 머신 외부에서 연결

이 클라우드 서비스 네트워크를 사용하여 Operator Nexus VM 또는 Operator Nexus Kubernetes 클러스터를 만든 후에는 테넌트 프록시를 사용하고 가상 머신 외부에 도달하기 위해 VM 내에서 적절한 환경 변수를 추가로 설정해야 합니다. 이 테넌트 프록시는 패키지 관리 또는 소프트웨어 설치와 같이 가상 머신 외부의 리소스에 액세스해야 하는 경우에 유용합니다.

프록시를 사용하려면 다음 환경 변수를 설정해야 합니다.

export HTTPS_PROXY=http://169.254.0.11:3128
export https_proxy=http://169.254.0.11:3128

프록시 환경 변수를 설정하면 가상 머신이 구성된 송신 엔드포인트에 연결할 수 있습니다.

참고 항목

프록시를 사용하여 가상 머신 외부의 리소스에 액세스할 때 보안상의 이유로 HTTP가 지원되지 않습니다. 패키지를 관리하거나 이 클라우드 서비스 네트워크를 사용하여 Operator Nexus VM 또는 Operator Nexus Kubernetes 클러스터에 소프트웨어를 설치할 때 보안 통신에 HTTPS를 사용해야 합니다.

Important

프록시를 사용하는 경우 no_proxy 환경 변수를 올바르게 설정하는 것도 중요합니다. 이 변수는 프록시를 통해 액세스해서는 안 되는 도메인 또는 IP 주소를 지정하는 데 사용할 수 있습니다. 제대로 설정하지 않으면 Kubernetes API 서버 또는 클러스터 IP와 같은 서비스에 액세스하는 동안 문제가 발생할 수 있습니다. Kubernetes API 서버의 IP 주소 또는 도메인 이름과 no_proxy 변수에 클러스터 IP 주소를 포함해야 합니다.

Nexus Kubernetes 클러스터 가용성 영역

Nexus Kubernetes 클러스터를 만들 때 클러스터를 특정 랙에 예약하거나 여러 랙에 배포할 수 있습니다. 이 기법을 활용하면 리소스 사용률 및 내결함성이 향상됩니다.

Nexus Kubernetes 클러스터를 만들 때 영역을 지정하지 않으면 Azure Operator Nexus 플랫폼은 기본 선호도 방지 규칙을 자동으로 구현하여 VM을 랙 및 운영 체제 미설치 노드에 분산하며 보장되지 않습니다. 또한 이 규칙은 동일한 클러스터의 VM이 이미 있는 노드에서 클러스터 VM을 예약하지 못하도록 방지하는 것을 목표로 하지만 최선의 접근 방식이며 이를 보장할 수는 없습니다.

Azure Operator Nexus 인스턴스에서 사용 가능한 영역 목록을 가져오려면 다음 명령을 사용할 수 있습니다.

    az networkcloud cluster show \
      --resource-group <Azure Operator Nexus on-premises cluster resource group> \
      --name <Azure Operator Nexus on-premises cluster name> \
      --query computeRackDefinitions[*].availabilityZone