Les ressources de NSX-T Data Center que vous devez configurer incluent une zone de transport de superposition, un routeur logique de niveau 0, un commutateur logique pour connecter les machines virtuelles du nœud, des blocs d'adresses IP pour les nœuds Kubernetes et un pool d'adresses IP pour SNAT.

Important : Si vous exécutez avec NSX-T Data Center 2.4 ou version ultérieure, vous devez configurer les ressources NSX-T à l'aide de l'onglet Mise en réseau et sécurité avancées.

Dans le fichier de configuration NCP ncp.ini, les ressources NSX-T Data Center sont spécifiées à l'aide de leurs UUID ou de leurs noms.

Zone de transport de superposition

Connectez-vous à NSX Manager et accédez à Système > Infrastructure > Zones de transport. Recherchez la zone de transport de superposition utilisée pour la mise en réseau de conteneur ou créez-en une.

Spécifiez une zone de transport de superposition pour un cluster en définissant l'option overlay_tz dans la section [nsx_v3] de ncp.ini. Cette étape est facultative. Si vous ne définissez pas overlay_tz, NCP récupère automatiquement l'ID de zone de transport de superposition à partir du routeur de niveau 0.

Routage logique de niveau 0

Connectez-vous à NSX Manager et accédez à Mise en réseau et sécurité avancées > Mise en réseau > Routeurs. Recherchez le routeur utilisé pour la mise en réseau de conteneur ou créez-en un.

Spécifiez un routeur logique de niveau 0 pour un cluster en définissant l'option tier0_router dans la section [nsx_v3] de ncp.ini.

Note : Le routeur doit être créé en mode actif-en veille.

Commutateur logique

Les cartes réseau virtuelles utilisées par le nœud pour le trafic de données doivent être connectées à un commutateur logique de superposition. Il n'est pas obligatoire que l'interface de gestion du nœud soit connectée à NSX-T Data Center, bien que cela facilite la configuration. Vous pouvez créer un commutateur logique en vous connectant à NSX Manager et en accédant à Mise en réseau et sécurité avancées > Mise en réseau > Commutation > Commutateurs. Sur le commutateur, créez des ports logiques et attachez-y les cartes réseau virtuelles du nœud. Les ports logiques doivent avoir les balises suivantes :
  • balise : <cluster_name>, étendue : ncp/cluster
  • balise : <node_name>, étendue : ncp/node_name
La valeur <cluster_name> doit correspondre à la valeur de l'option cluster dans la section [coe] de ncp.ini.

Blocs d'adresses IP pour des espaces Kubernetes

Connectez-vous à NSX Manager et accédez à Mise en réseau et sécurité avancées > Mise en réseau > IPAM pour créer un ou plusieurs blocs d'adresses IP. Spécifiez le bloc d'adresses IP au format CIDR.

Spécifiez les blocs d'adresses IP pour les espaces Kubernetes en définissant l'option container_ip_blocks dans la section [nsx_v3] de ncp.ini.

Vous pouvez également créer des blocs d'adresses IP spécifiquement pour des espaces de noms non SNAT (pour Kubernetes) ou des clusters (pour PCF).

Spécifiez les blocs d'adresses IP non SNAT en définissant l'option no_snat_ip_blocks dans la section [nsx_v3] de ncp.ini.

Si vous créez des blocs d'adresses IP non SNAT alors que NCP est en cours d'exécution, vous devez redémarrer NCP. Sinon, NCP continuera d'utiliser les blocs d'adresses IP partagés jusqu'à leur épuisement.

Note : Lorsque vous créez un bloc d'adresses IP, le préfixe ne doit pas être supérieur à la valeur du paramètre subnet_prefix dans le fichier de configuration de NCP ncp.ini. Pour plus d'informations, consultez ConfigMap pour ncp.ini dans ncp-rc.yml.

Pool d'adresses IP pour SNAT

Un pool d'adresses IP dans NSX Manager sert à allouer des adresses IP qui seront utilisées pour la traduction d'adresses IP d'espace à l'aide de règles SNAT et pour l'exposition de contrôleurs d'entrée à l'aide de règles SNAT/DNAT, comme des adresses IP flottantes OpenStack. Ces adresses IP sont également appelées adresses IP externes.

Plusieurs clusters Kubernetes utilisent le même pool d'adresses IP externes. Chaque instance NCP utilise un sous-ensemble de ce pool pour le cluster Kubernetes qu'il gère. Par défaut, le même préfixe de sous-réseau pour les sous-réseaux d'espace sera utilisé. Pour utiliser une taille de sous-réseau différente, mettez à jour l'option external_subnet_prefix dans la section [nsx_v3] dans ncp.ini.

Vous pouvez spécifier des pools d'adresses IP pour SNAT en définissant l'option external_ip_pools dans la section [nsx_v3] de ncp.ini.

Vous pouvez spécifier un pool d'adresses IP différent en modifiant le fichier de configuration et en redémarrant NCP.

Restriction d'un pool d'adresses IP SNAT à des espaces de noms Kubernetes ou à des organisations PCF spécifiques

Vous pouvez spécifier l'espace de noms Kubernetes ou l'organisation PCF auquel les adresses IP sont allouées à partir du pool d'adresses IP SNAT en ajoutant les balises suivantes au pool d'adresses IP.
  • Pour un espace de noms Kubernetes : scope: ncp/owner, tag: ns:<namespace_UUID>
  • Pour une organisation PCF : scope: ncp/owner, tag: org:<org_UUID>
Vous pouvez obtenir l'UUID de l'espace de noms ou de l'organisation à l'aide de l'une des commandes suivantes :
kubectl get ns -o yaml
cf org <org_name> --guid
Notez les points suivants :
  • Chaque balise doit spécifier un UUID. Vous pouvez créer plusieurs balises pour le même pool.
  • Si vous modifiez les balises après l'allocation d'adresses IP à des espaces de noms ou organisations selon les anciennes balises, ces adresses IP sont récupérées uniquement après la modification des configurations SNAT des services Kubernetes ou des applications PCF, ou le redémarrage de NCP.
  • Les balises de propriétaire de l'espace de noms et de l'organisation PCF sont facultatives. Sans ces balises, les adresses IP du pool IP SNAT peuvent être allouées à n'importe quel espace de noms ou organisation PCF.

Configuration d'un pool d'adresses IP SNAT pour un service

Vous pouvez configurer un pool d'adresses IP SNAT pour un service spécifique en ajoutant une annotation au service. Par exemple,
    apiVersion: v1
    kind: Service
    metadata:
      name: svc-example
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
      selector:
        app: example
    ...

Le pool d'adresses IP spécifié par ncp/snat_pool doit avoir la balise scope: ncp/owner, tag: cluster:<cluster_name>.

NCP configurera la règle SNAT pour ce service. L'adresse IP source de la règle correspond à l'ensemble des espaces de serveur principal. L'adresse IP de destination est l'adresse IP SNAT allouée à partir du pool d'adresses IP externe spécifié. Si une erreur se produit lorsque NCP configure la règle SNAT, le service sera annoté avec ncp/error.snat : <error>. Les erreurs possibles sont :
  • IP_POOL_NOT_FOUND - le pool d'adresses IP SNAT est introuvable dans NSX Manager.
  • IP_POOL_EXHAUSTED - le pool d'adresses IP SNAT est saturé.
  • IP_POOL_NOT_UNIQUE - le pool spécifié par ncp/snat_pool fait référence à plusieurs pools dans NSX Manager.
  • SNAT_POOL_ACCESS_DENY - la balise de propriétaire du pool ne correspond pas à l'espace de nom du service qui envoie la demande d'allocation.
  • SNAT_RULE_OVERLAPPED - une nouvelle règle SNAT est créée, mais l'espace de service SNAT appartient également à un autre service SNAT, autrement dit, il existe plusieurs règles SNAT pour le même espace.
  • POOL_ACCESS_DENIED : le pool d'adresses IP spécifié par ncp/snat_pool ne dispose pas de la balise scope: ncp/owner, tag: cluster:<cluster_name> ou la balise de propriétaire du pool ne correspond pas à l'espace de noms du service qui envoie la demande d'allocation.
Notez les points suivants :
  • Le pool spécifié par ncp/snat_pool doit déjà exister dans NSX-T Data Center avant que le service ne soit configuré.
  • Dans NSX-T Data Center, la priorité de la règle SNAT pour le service est supérieure à celle du projet.
  • Si un espace est configuré avec plusieurs règles SNAT, une seule fonctionnera.
  • Vous pouvez spécifier un pool d'adresses IP différent en modifiant l'annotation et en redémarrant NCP.

Configuration d'un pool d'adresses IP SNAT pour un espace de noms

Vous pouvez configurer un pool d'adresses IP SNAT pour un espace de noms en ajoutant une annotation à l'espace de noms. Par exemple,
    apiVersion: v1
    kind: Namespace
    metadata:
      name: ns-sample
      annotations:
        ncp/snat_pool: <external IP pool ID or name>
    ...
NCP configurera la règle SNAT pour cet espace de noms. L'adresse IP source de la règle correspond à l'ensemble des espaces de serveur principal. L'adresse IP de destination est l'adresse IP SNAT allouée à partir du pool d'adresses IP externe spécifié. Si une erreur se produit lorsque NCP configure la règle SNAT, l'espace de noms sera annoté avec ncp/error.snat : <error>. Les erreurs possibles sont :
  • IP_POOL_NOT_FOUND - le pool d'adresses IP SNAT est introuvable dans NSX Manager.
  • IP_POOL_EXHAUSTED - le pool d'adresses IP SNAT est saturé.
  • IP_POOL_NOT_UNIQUE - le pool spécifié par ncp/snat_pool fait référence à plusieurs pools dans NSX Manager.
  • POOL_ACCESS_DENIED : le pool d'adresses IP spécifié par ncp/snat_pool ne dispose pas de la balise scope: ncp/owner, tag: cluster:<cluster_name> ou la balise de propriétaire du pool ne correspond pas à l'espace de noms qui envoie la demande d'allocation.
Notez les points suivants :
  • Vous pouvez spécifier un seul pool d'adresses IP SNAT dans l'annotation.
  • Le pool d'adresses IP SNAT n'a pas besoin d'être configuré dans ncp.ini.
  • Le pool d'adresses IP spécifié par ncp/snat_pool doit avoir la balise scope: ncp/owner, tag: cluster:<cluster_name>.
  • Le pool d'adresses IP spécifié par ncp/snat_pool peut également disposer d'une balise d'espace de noms scope: ncp/owner, tag: ns:<namespace_UUID>.
  • Si l'annotation ncp/snat_pool est manquante, l'espace de noms utilisera le pool d'adresses IP SNAT pour le cluster.
  • Vous pouvez spécifier un pool d'adresses IP différent en modifiant l'annotation et en redémarrant NCP.

Configuration d'un pool d'adresses IP SNAT pour une application PAS

Par défaut, NCP configure une adresse IP SNAT pour une organisation PAS (Pivotal Application Service). Vous pouvez configurer une adresse IP SNAT pour une application spécifique en créant une application avec un fichier manifest.xml qui contient les informations du pool d'adresses IP SNAT. Par exemple,
    applications:
      - name: frontend
        memory: 32M
        disk_quota: 32M
        buildpack: go_buildpack
        env:
          GOPACKAGENAME: example-apps/cats-and-dogs/frontend
          NCP_SNAT_POOL: <external IP pool ID or name>
    ...
NCP configurera la règle SNAT pour cette application. L'adresse IP source de la règle est l'ensemble des adresses IP des instances et son adresse IP de destination est l'adresse IP SNAT allouée à partir d'un pool d'adresses IP externe. Notez les points suivants :
  • Le pool spécifié par NCP_SNAT_POOL doit déjà exister dans NSX-T Data Center avant que l'application ne soit transmise.
  • La priorité d'une règle SNAT pour une application est supérieure à celle d'une règle SNAT pour une organisation.
  • Une application peut être configurée avec une seule adresse IP SNAT.
  • Vous pouvez spécifier un pool d'adresses IP différent en modifiant la configuration et en redémarrant NCP.

Configuration SNAT pour PCF version 3

Avec PCF version 3, vous pouvez configurer SNAT de l'une des deux manières suivantes :

  • Lors de la création de l'application, configurez NCP_SNAT_POOL dans manifest.yml.
    Par exemple, l'application est appelée bread et manifest.yml contient les informations suivantes :
    applications:
    - name: bread
      stack: cflinuxfs2
      random-route: true
      env:
        NCP_SNAT_POOL: AppSnatExternalIppool
      processes:
      - type: web
        disk_quota: 1024M
        instances: 2
        memory: 512M
        health-check-type: port
      - type: worker
        disk_quota: 1024M
        health-check-type: process
        instances: 2
        memory: 256M
        timeout: 15
    Exécutez les commandes suivantes :
    cf v3-push bread
    cf v3-apply-manifest -f manifest.yml
    cf v3-apps
    cf v3-restart bread
  • Configurez NCP_SNAT_POOL à l'aide de la commande cf v3-set-env.
    Exécutez les commandes suivantes (en supposant que l'application est appelée app3) :
    cf v3-set-env app3 NCP_SNAT_POOL AppSnatExternalIppool
    (optional) cf v3-stage app3 -package-guid <package-guid> (You can get package-guid with "cf v3-packages app3".)
    cf v3-restart app3

(Facultatif) (pour Kubernetes uniquement) Sections de marqueur de pare-feu

Pour permettre à l'administrateur de créer des règles de pare-feu et que celles-ci n'interfèrent pas avec les sections de pare-feu créées par NCP et basées sur des stratégies réseau, connectez-vous à NSX Manager, accédez à Sécurité > Pare-feu distribué > Général et créez deux sections de pare-feu.

Spécifiez les sections de pare-feu de marqueur en définissant les options bottom_firewall_section_marker et top_firewall_section_marker dans la section [nsx_v3] de ncp.ini.

La section de pare-feu inférieure doit se trouver sous la section de pare-feu supérieure. Une fois ces sections de pare-feu créées, toutes les sections de pare-feu créées par NCP pour une isolation sont créées au-dessus de la section de pare-feu inférieure, et toutes les sections de pare-feu créées par NCP pour une stratégie sont créées en dessous de la section de pare-feu supérieure. Si ces sections de marqueur ne sont pas créées, toutes les règles d'isolation sont créées en bas et toutes les sections de stratégie sont créées en haut. L'utilisation de plusieurs sections de pare-feu de marqueur possédant la même valeur par cluster n'est pas prise en charge et provoque une erreur.