Vous pouvez créer des segments enfants pour activer IPAM avancé, le routage et NAT pour les charges de travail Kubernetes avec Antrea. Les segments enfants sont conçus pour prendre en charge les fonctionnalités Antrea, telles que l'IPAM flexible des espaces routables et la sortie Antrea.

Note : Cette fonctionnalité est disponible uniquement via l'API.

Le diagramme suivant montre comment les segments enfants sont connectés à d'autres composants.

Un segment parent est un segment NSX standard. Aucune configuration n'est requise pour faire d'un segment un segment parent. Un segment enfant est associé à un ou plusieurs segments parents et un ID de VLAN est attribué à chacun de ses parents. Un segment parent envoie uniquement un trafic de segment enfant balisé avec l'ID de VLAN spécifique.

Propriétés des segments enfant et parent :
  • Un segment enfant peut être associé à plusieurs segments parents.
  • Un segment parent peut comporter de nombreux segments enfants.
  • Chaque segment enfant lié à un parent doit avoir un ID de VLAN distinct, et deux segments enfants connectés au même parent ne peuvent pas partager un ID de VLAN.
  • Un segment enfant se connectant à plusieurs parents peut utiliser des ID de VLAN identiques ou différents pour ces connexions.
  • Un segment enfant ne peut pas être le parent d'un autre segment enfant.
  • Un segment enfant peut être un segment de superposition ou un segment VLAN.
  • Les machines virtuelles (VM) peuvent se connecter à des segments enfants. Dans ce cas, un port de segment est créé, comme lorsqu'une machine virtuelle est connectée à un segment standard.
  • Aucun port de segment n'est créé sur le segment enfant pour la connexion parent-enfant.
  • Les segments enfants et les segments parents sont indépendants. Cela signifie :
    • Qu’ils peuvent se connecter à des passerelles de niveau 1 ou de niveau 0 identiques ou différentes.
    • Qu’ils peuvent avoir différentes configurations ou profils de commutation.
    • Les configurations sur un segment parent ne sont pas héritées par ses segments enfants.
    • Un groupe qui inclut un segment parent n'inclut pas automatiquement ses segments enfants.
    • Les services configurés sur un segment parent, tel qu'un pare-feu distribué, ne s'étendent pas aux segments enfants.

Pour les machines virtuelles connectées à un segment enfant, toutes les fonctionnalités liées au segment sont prises en charge. Pour le trafic de conteneur passant par un segment enfant, le tableau suivant répertorie les fonctionnalités prises en charge et non prises en charge :

Fonctionnalité Pris en charge
Pare-feu distribué Non
Profil de segment de détection IP Non
Profil de segment de détection MAC Non
Profil de segmentation de sécurité de segment Non
Profil de segment SpoofGuard Non
Profil de segment QoS Non
Mise en miroir de ports Non
IPFix Non
Association de liaison montante Oui
Configuration de la mise en miroir (étendue de liaison montante) Oui
NSGroup Non
Latence Non

Utilisation du segment enfant avec Antrea

Chaque sous-réseau routable (par exemple, pools d'adresses IP pour les espaces routables, pools d'adresses IP externes pour les sorties) configurés dans Antrea est mappé à un segment enfant et les segments des machines virtuelles du nœud Kubernetes sont les parents du segment enfant. OVS (Open vSwitch) sur la machine virtuelle du nœud Kubernetes balisera le trafic avec l'ID de VLAN correct avant d'envoyer les paquets via la VNIC.

Workflow de création d'une connexion entre un segment parent et un segment enfant :
  • Créez le segment parent. Vous pouvez utiliser l'API ou l'interface utilisateur de NSX Manager.
  • Créez le segment enfant. Vous pouvez utiliser l'API ou l'interface utilisateur de NSX Manager.
  • Utilisez l'API pour créer une carte de liaison de connexion sur le segment enfant en spécifiant le chemin du segment parent et l'ID de VLAN.
Workflow de suppression d'un segment enfant :
  • Utilisez l'API pour supprimer tous les mappages de liaison de connexion existants du segment enfant.
  • Supprimez le segment enfant. Vous pouvez utiliser l'API ou l'interface utilisateur de NSX Manager.
Workflow de suppression d'un segment parent :
  • Utilisez l'API pour supprimer tous les mappages de liaison de connexion existants qui connectent ce segment parent à tous ses segments enfants.
  • Supprimez le segment parent. Vous pouvez utiliser l'API ou l'interface utilisateur de NSX Manager.

API

Les appels d'API suivants peuvent être utilisés pour gérer les segments enfants. Pour plus d'informations, reportez-vous au Guide de NSX API (accédez à Documentation NSX et utilisez le volet de navigation de gauche pour localiser le guide des API).

GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps
DELETE /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
DELETE /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
GET /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PATCH /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}
PUT /policy/api/v1/orgs/{org-id}/projects/{project-id}/infra/tier-1s/{tier-1-id}/segments/{segment-id}/segment-connection-binding-maps/{map-id}

Lors de la création d'un mappage de liaison de connexion, l'ID de mappage que vous spécifiez dans l'API PUT doit être unique. Exemple d'utilisation de PUT /policy/api/v1/infra/segments/{segment-id}/segment-connection-binding-maps/{map-id} pour créer une carte de liaison :

Demande API :
PUT https://<nsx-manager>/policy/api/v1/infra/segments/test2/segment-connection-binding-maps/map-id-1
{
    "vlan_traffic_tag": "1002",
    "segment_path": "/infra/segments/openshift-segment"
}
Réponse de l'API :
{
  "vlan_traffic_tag" : 1002,
  "segment_path" : "/infra/segments/openshift-segment",
  "resource_type" : "SegmentConnectionBindingMap",
  "id" : "map-id-1",
  "display_name" : "map-id-1",
  "path" : "/infra/segments/test2/segment-connection-binding-maps/map-id-1",
  "relative_path" : "map-id-1",
  "parent_path" : "/infra/segments/test2",
  "remote_path" : "",
  "unique_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "realization_id" : "7ac8c0fb-a0e1-471a-bed6-d15f1b85e0c6",
  "owner_id" : "210584d9-6329-452e-bb01-0133945ab675",
  "marked_for_delete" : false,
  "overridden" : false,
  "_system_owned" : false,
  "_protection" : "NOT_PROTECTED",
  "_create_time" : 1712718210160,
  "_create_user" : "admin",
  "_last_modified_time" : 1712718210160,
  "_last_modified_user" : "admin",
  "_revision" : 0
}

Traceflow

Traceflow prend en charge les scénarios suivants liés aux segments enfants :
  • La source est un conteneur sur un segment enfant et la destination est un conteneur sur un segment enfant.
  • La source est un conteneur sur un segment enfant et la destination est un port normal.
  • La source est un port parent. Il n'existe aucun segment enfant, car les conteneurs Antrea s'exécutent dans une machine virtuelle.

Pour effectuer un Traceflow d'un paquet qui passera par un segment enfant, vous devez utiliser l'API. Pour configurer un Traceflow, utilisez l'appel d'API PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>. Par exemple,

PUT https://<mgr-ip>/policy/api/v1/infra/traceflows/<traceflow-id>
{
  "segment_port_path": "/infra/segments/parent/ports/default:658c6c45-286f-4a23-832f-a646253b200b",
  "connected_segment_path_as_source": "/infra/segments/child",
  "packet": {
    "eth_header": {
      "src_mac": "00:50:56:ad:28:d5",
      "dst_mac": "00:50:56:ad:c0:a4",
      "eth_type": 2048
    },
    "ip_header": {
      "src_ip": "192.168.100.10",
      "dst_ip": "192.168.100.20",
      "protocol": 1,
      "ttl": 64,
      "flags": 0
    },
    "transport_header": {
      "icmp_echo_request_header": {
        "id": 0,
        "sequence": 0
      }
    },
    "payload": "",
    "resource_type": "FieldsPacketData",
    "frame_size": 128,
    "routed": false,
    "transport_type": "UNICAST"
  },
  "timeout": 10,
  "is_transient": true
}

Notez que le paramètre connected_segment_path_as_source pointe vers le segment enfant. Si ce paramètre n'est pas défini, le paquet ne transite pas par le segment enfant.

Pour plus d'informations, reportez-vous au Guide de NSX API (accédez à Documentation NSX et utilisez le volet de navigation de gauche pour localiser le guide des API).

Statistiques de segments enfant et parent

Les statistiques d'un segment enfant incluent uniquement les statistiques des machines virtuelles connectées au segment. Elles n'incluront pas de statistiques pour les conteneurs Antrea.

Pour un segment parent, les statistiques d'entrée incluent des statistiques pour les conteneurs Antrea. Les statistiques de sortie n'incluront pas de statistiques pour les conteneurs Antrea.