テナント ワークロードをデプロイするための前提条件

このガイドでは、以下を作成するための前提条件について説明します。

  • 仮想ネットワーク機能 (VNF) ワークロード用の仮想マシン (VM)。
  • クラウドネイティブ ネットワーク機能 (CNF) ワークロード用の Nexus Kubernetes クラスターのデプロイ。

テナント ワークロードのデプロイ フローの図。

ネットワーク前提条件

ワークロードのニーズに基づいてさまざまなネットワークを作成する必要があります。 次の考慮事項の一覧はすべてを網羅したものではありません。 サポートについては、適切なサポート チームにお問い合わせください。

  • ワークロードをサポートするために必要なネットワークの種類を決定します。
    • レイヤー 3 (L3) ネットワークには、VLAN とサブネットの割り当てが必要です。 サブネットは、各 VM への IP 割り当てをサポートするのに十分な大きさである必要があります。 プラットフォームでは、最初の 3 つの使用可能な IP アドレスを内部で使用できるよう確保しています。 たとえば、6 つの VM をサポートする場合、サブネットの最小 CIDR は /28 です (14 個の使用可能なアドレス – 3 個の予約済みアドレス = 11 個を使用可能) です。
    • レイヤ 2 (L2) ネットワークで必要な VLAN 割り当ては 1 つのみです。
    • トランクされたネットワークには、複数の 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 ネットワークごとに、この手順を繰り返します。

必要なもの:

  • 作成した L3 分離ドメインの resourceID 値。このネットワークの VLAN を構成するために使用します。
  • ipv4-connected-prefix 値。これは、L3 分離ドメイン内の i-pv4-connected-prefix 値と一致している必要があります。
  • ipv6-connected-prefix 値。これは、L3 分離ドメイン内の i-pv6-connected-prefix 値と一致している必要があります。
  • ip-allocation-type 値。これは、IPv4IPv6、または DualStack (既定値) のいずれかです。
  • vlan 値。これは、L3 分離ドメイン内の値と一致している必要があります。
  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 に作成します。 必要なトランク ネットワークごとに、この手順を繰り返します。

このネットワーク用の VLAN を構成するために、前に作成した L2 および L3 分離ドメインの resourceId 値を収集します。 必要な数だけ、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 トップレベル ドメインの下の第 2 レベル ドメインとして機能します。
  • sales.contoso.com: contoso.com のサブドメイン。.com トップレベル ドメインの下の第 3 レベル ドメインとして機能します。
  • web-server-1.contoso.com: 特定の Web サーバーのホスト名。ハイフンを使って単語と数字を区切ります。
  • api.v1.contoso.com: 基本ドメイン contoso.com の上に 2 つのサブドメイン (v1api) を組み込みます。
  • .api.contoso.com: 複数の第 3 レベル ドメインをカバーしている、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 でのみ機能することに注意してください。

Note

VNF イメージを正しくプルできるようにするには、ACR URL が、Operator 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

プロキシ環境変数を設定すると、構成したエグレス エンドポイントに仮想マシンが到達できるようになります。

Note

プロキシを使って仮想マシンの外部のリソースにアクセスする場合、セキュリティ上の理由により、HTTP はサポートされていません。 このクラウド サービス ネットワークを使ってパッケージを管理する場合、または Operator Nexus VM または Operator Nexus Kubernetes クラスターにソフトウェアをインストールする場合は、セキュリティで保護された通信のために HTTPS を使う必要があります。

重要

プロキシを使用する場合は、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