22.2. Configuration d'un réseau supplémentaire

En tant qu'administrateur de cluster, vous pouvez configurer un réseau supplémentaire pour votre cluster. Les types de réseaux suivants sont pris en charge :

22.2.1. Approches de la gestion d'un réseau supplémentaire

Vous pouvez gérer le cycle de vie d'un réseau supplémentaire selon deux approches. Chaque approche est mutuellement exclusive et vous ne pouvez utiliser qu'une seule approche à la fois pour gérer un réseau supplémentaire. Dans les deux cas, le réseau supplémentaire est géré par un plugin CNI (Container Network Interface) que vous configurez.

Pour un réseau supplémentaire, les adresses IP sont fournies par un plugin CNI de gestion des adresses IP (IPAM) que vous configurez dans le cadre du réseau supplémentaire. Le plugin IPAM prend en charge une variété d'approches d'attribution d'adresses IP, y compris l'attribution DHCP et l'attribution statique.

  • Modifier la configuration du Cluster Network Operator (CNO) : Le CNO crée et gère automatiquement l'objet NetworkAttachmentDefinition. En plus de gérer le cycle de vie de l'objet, le CNO s'assure qu'un DHCP est disponible pour un réseau supplémentaire qui utilise une adresse IP attribuée par DHCP.
  • Appliquer un manifeste YAML : Vous pouvez gérer le réseau supplémentaire directement en créant un objet NetworkAttachmentDefinition. Cette approche permet le chaînage des plugins CNI.
Note

Lors du déploiement de nœuds OpenShift Container Platform avec plusieurs interfaces réseau sur Red Hat OpenStack Platform (RHOSP) avec OVN SDN, la configuration DNS de l'interface secondaire peut être prioritaire sur la configuration DNS de l'interface primaire. Dans ce cas, supprimez les serveurs de noms DNS pour l'identifiant de sous-réseau qui est attaché à l'interface secondaire :

$ openstack subnet set --dns-nameserver 0.0.0.0 <subnet_id>

22.2.2. Configuration pour une connexion réseau supplémentaire

Un réseau supplémentaire est configuré en utilisant l'API NetworkAttachmentDefinition dans le groupe d'API k8s.cni.cncf.io.

Important

Ne stockez pas d'informations sensibles ou secrètes dans l'objet NetworkAttachmentDefinition car ces informations sont accessibles à l'utilisateur de l'administration du projet.

La configuration de l'API est décrite dans le tableau suivant :

Tableau 22.1. NetworkAttachmentDefinition Champs de l'API

FieldTypeDescription

metadata.name

string

Nom du réseau supplémentaire.

metadata.namespace

string

L'espace de noms auquel l'objet est associé.

spec.config

string

La configuration du plugin CNI au format JSON.

22.2.2.1. Configuration d'un réseau supplémentaire par l'intermédiaire de l'opérateur de réseau du cluster

La configuration d'une connexion réseau supplémentaire est spécifiée dans le cadre de la configuration de l'opérateur de réseau de cluster (CNO).

Le fichier YAML suivant décrit les paramètres de configuration pour la gestion d'un réseau supplémentaire avec le CNO :

Cluster Network Operator configuration

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  # ...
  additionalNetworks: 1
  - name: <name> 2
    namespace: <namespace> 3
    rawCNIConfig: |- 4
      {
        ...
      }
    type: Raw

1
Un tableau d'une ou plusieurs configurations de réseau supplémentaires.
2
Le nom de la pièce jointe réseau supplémentaire que vous créez. Le nom doit être unique au sein de l'adresse namespace.
3
L'espace de noms dans lequel l'attachement au réseau doit être créé. Si vous ne spécifiez pas de valeur, l'espace de noms default est utilisé.
4
Une configuration du plugin CNI au format JSON.

22.2.2.2. Configuration d'un réseau supplémentaire à partir d'un manifeste YAML

La configuration d'un réseau supplémentaire est spécifiée dans un fichier de configuration YAML, comme dans l'exemple suivant :

apiVersion: k8s.cni.cncf.io/v1
kind: NetworkAttachmentDefinition
metadata:
  name: <name> 1
spec:
  config: |- 2
    {
      ...
    }
1
Nom de la pièce jointe réseau supplémentaire que vous créez.
2
Une configuration du plugin CNI au format JSON.

22.2.3. Configurations pour des types de réseaux supplémentaires

Les champs de configuration spécifiques aux réseaux supplémentaires sont décrits dans les sections suivantes.

22.2.3.1. Configuration d'un réseau supplémentaire de ponts

L'objet suivant décrit les paramètres de configuration du plugin CNI bridge :

Tableau 22.2. Objet de configuration JSON du plugin CNI Bridge

FieldTypeDescription

cniVersion

string

La version de la spécification CNI. La valeur 0.3.1 est obligatoire.

name

string

La valeur du paramètre name que vous avez fourni précédemment pour la configuration CNO.

type

string

 

bridge

string

Indiquez le nom du pont virtuel à utiliser. Si l'interface du pont n'existe pas sur l'hôte, elle est créée. La valeur par défaut est cni0.

ipam

object

L'objet de configuration pour le plugin IPAM CNI. Le plugin gère l'attribution des adresses IP pour la définition des pièces jointes.

ipMasq

boolean

La valeur true permet d'activer le masquage IP pour le trafic qui quitte le réseau virtuel. L'adresse IP source de tout le trafic est remplacée par l'adresse IP du pont. Si le pont n'a pas d'adresse IP, ce paramètre n'a aucun effet. La valeur par défaut est false.

isGateway

boolean

La valeur true permet d'attribuer une adresse IP à la passerelle. La valeur par défaut est false.

isDefaultGateway

boolean

La valeur true permet de configurer le pont comme passerelle par défaut pour le réseau virtuel. La valeur par défaut est false. Si isDefaultGateway est défini sur true, isGateway est également défini sur true automatiquement.

forceAddress

boolean

Défini sur true pour permettre l'attribution d'une adresse IP précédemment attribuée au pont virtuel. Lorsque la valeur est false, une erreur se produit si une adresse IPv4 ou une adresse IPv6 provenant de sous-ensembles qui se chevauchent est attribuée au pont virtuel. La valeur par défaut est false.

hairpinMode

boolean

La valeur true permet au pont virtuel de renvoyer une trame Ethernet par le port virtuel sur lequel elle a été reçue. Ce mode est également connu sous le nom de reflective relay. La valeur par défaut est false.

promiscMode

boolean

La valeur true permet d'activer le mode promiscuous sur le pont. La valeur par défaut est false.

vlan

string

Spécifiez une balise de réseau local virtuel (VLAN) sous la forme d'une valeur entière. Par défaut, aucune balise VLAN n'est attribuée.

mtu

string

Fixe l'unité de transmission maximale (MTU) à la valeur spécifiée. La valeur par défaut est définie automatiquement par le noyau.

22.2.3.1.1. exemple de configuration de pont

L'exemple suivant configure un réseau supplémentaire nommé bridge-net:

{
  "cniVersion": "0.3.1",
  "name": "work-network",
  "type": "bridge",
  "isGateway": true,
  "vlan": 2,
  "ipam": {
    "type": "dhcp"
    }
}

22.2.3.2. Configuration d'un périphérique hôte réseau supplémentaire

Note

Spécifiez votre périphérique réseau en définissant un seul des paramètres suivants : device, hwaddr, kernelpath, ou pciBusID.

L'objet suivant décrit les paramètres de configuration du plugin CNI hôte-dispositif :

Tableau 22.3. Objet de configuration JSON du plugin CNI de l'appareil hôte

FieldTypeDescription

cniVersion

string

La version de la spécification CNI. La valeur 0.3.1 est obligatoire.

name

string

La valeur du paramètre name que vous avez fourni précédemment pour la configuration CNO.

type

string

Le nom du plugin CNI à configurer : host-device.

device

string

Facultatif : Le nom de l'appareil, par exemple eth0.

hwaddr

string

Facultatif : L'adresse MAC du matériel de l'appareil.

kernelpath

string

Facultatif : Le chemin d'accès au périphérique du noyau Linux, tel que /sys/devices/pci0000:00/0000:00:1f.6.

pciBusID

string

Facultatif : L'adresse PCI du périphérique réseau, par exemple 0000:00:1f.6.

22.2.3.2.1. exemple de configuration d'un dispositif hôte

L'exemple suivant configure un réseau supplémentaire nommé hostdev-net:

{
  "cniVersion": "0.3.1",
  "name": "work-network",
  "type": "host-device",
  "device": "eth1"
}

22.2.3.3. Configuration d'un réseau supplémentaire IPVLAN

L'objet suivant décrit les paramètres de configuration du plugin IPVLAN CNI :

Tableau 22.4. Objet de configuration JSON du plugin CNI IPVLAN

FieldTypeDescription

cniVersion

string

La version de la spécification CNI. La valeur 0.3.1 est obligatoire.

name

string

La valeur du paramètre name que vous avez fourni précédemment pour la configuration CNO.

type

string

Le nom du plugin CNI à configurer : ipvlan.

mode

string

Le mode de fonctionnement du réseau virtuel. La valeur doit être l2, l3 ou l3s. La valeur par défaut est l2.

master

string

L'interface Ethernet à associer à l'attachement réseau. Si l'adresse master n'est pas spécifiée, c'est l'interface de la route réseau par défaut qui est utilisée.

mtu

integer

Fixe l'unité de transmission maximale (MTU) à la valeur spécifiée. La valeur par défaut est définie automatiquement par le noyau.

ipam

object

L'objet de configuration pour le plugin IPAM CNI. Le plugin gère l'attribution des adresses IP pour la définition des pièces jointes.

Ne pas spécifier dhcp. La configuration d'IPVLAN avec DHCP n'est pas supportée car les interfaces IPVLAN partagent l'adresse MAC avec l'interface hôte.

22.2.3.3.1. exemple de configuration ipvlan

L'exemple suivant configure un réseau supplémentaire nommé ipvlan-net:

{
  "cniVersion": "0.3.1",
  "name": "work-network",
  "type": "ipvlan",
  "master": "eth1",
  "mode": "l3",
  "ipam": {
    "type": "static",
    "addresses": [
       {
         "address": "192.168.10.10/24"
       }
    ]
  }
}

22.2.3.4. Configuration d'un réseau supplémentaire MACVLAN

L'objet suivant décrit les paramètres de configuration du plugin CNI macvlan :

Tableau 22.5. Objet de configuration JSON du plugin CNI MACVLAN

FieldTypeDescription

cniVersion

string

La version de la spécification CNI. La valeur 0.3.1 est obligatoire.

name

string

La valeur du paramètre name que vous avez fourni précédemment pour la configuration CNO.

type

string

Le nom du plugin CNI à configurer : macvlan.

mode

string

Configure la visibilité du trafic sur le réseau virtuel. Doit être soit bridge, passthru, private, ou vepa. Si aucune valeur n'est fournie, la valeur par défaut est bridge.

master

string

L'interface réseau de l'hôte à associer à l'interface macvlan nouvellement créée. Si aucune valeur n'est spécifiée, l'interface de la route par défaut est utilisée.

mtu

string

L'unité de transmission maximale (MTU) à la valeur spécifiée. La valeur par défaut est définie automatiquement par le noyau.

ipam

object

L'objet de configuration pour le plugin IPAM CNI. Le plugin gère l'attribution des adresses IP pour la définition des pièces jointes.

Note

Si vous spécifiez la clé master pour la configuration du plugin, utilisez une interface réseau physique différente de celle qui est associée à votre plugin réseau principal afin d'éviter tout conflit éventuel.

22.2.3.4.1. exemple de configuration macvlan

L'exemple suivant configure un réseau supplémentaire nommé macvlan-net:

{
  "cniVersion": "0.3.1",
  "name": "macvlan-net",
  "type": "macvlan",
  "master": "eth1",
  "mode": "bridge",
  "ipam": {
    "type": "dhcp"
    }
}

22.2.4. Configuration de l'attribution d'adresses IP pour un réseau supplémentaire

Le module de gestion des adresses IP (IPAM) Container Network Interface (CNI) fournit des adresses IP aux autres modules CNI.

Vous pouvez utiliser les types d'attribution d'adresses IP suivants :

  • Affectation statique.
  • Attribution dynamique par le biais d'un serveur DHCP. Le serveur DHCP que vous spécifiez doit être accessible depuis le réseau supplémentaire.
  • Affectation dynamique via le plugin CNI de Whereabouts IPAM.

22.2.4.1. Configuration de l'attribution d'une adresse IP statique

Le tableau suivant décrit la configuration pour l'attribution d'une adresse IP statique :

Tableau 22.6. ipam objet de configuration statique

FieldTypeDescription

type

string

Le type d'adresse IPAM. La valeur static est obligatoire.

addresses

array

Un tableau d'objets spécifiant les adresses IP à attribuer à l'interface virtuelle. Les adresses IPv4 et IPv6 sont prises en charge.

routes

array

Un tableau d'objets spécifiant les routes à configurer dans le pod.

dns

array

Facultatif : Un tableau d'objets spécifiant la configuration DNS.

Le tableau addresses nécessite des objets avec les champs suivants :

Tableau 22.7. ipam.addresses[] réseau

FieldTypeDescription

address

string

Une adresse IP et un préfixe de réseau que vous spécifiez. Par exemple, si vous spécifiez 10.10.21.10/24, le réseau supplémentaire se voit attribuer une adresse IP de 10.10.21.10 et le masque de réseau est 255.255.255.0.

gateway

string

Passerelle par défaut vers laquelle acheminer le trafic réseau sortant.

Tableau 22.8. ipam.routes[] réseau

FieldTypeDescription

dst

string

La plage d'adresses IP au format CIDR, par exemple 192.168.17.0/24 ou 0.0.0.0/0 pour la route par défaut.

gw

string

La passerelle où le trafic réseau est acheminé.

Tableau 22.9. ipam.dns objet

FieldTypeDescription

nameservers

array

Un tableau d'une ou plusieurs adresses IP auxquelles envoyer les requêtes DNS.

domain

array

Le domaine par défaut à ajouter à un nom d'hôte. Par exemple, si le domaine est défini sur example.com, une requête DNS pour example-host est réécrite en example-host.example.com.

search

array

Un tableau de noms de domaine à ajouter à un nom d'hôte non qualifié, tel que example-host, lors d'une requête de recherche DNS.

Exemple de configuration de l'attribution d'une adresse IP statique

{
  "ipam": {
    "type": "static",
      "addresses": [
        {
          "address": "191.168.1.7/24"
        }
      ]
  }
}

22.2.4.2. Configuration de l'attribution dynamique d'adresses IP (DHCP)

Le JSON suivant décrit la configuration pour l'attribution dynamique d'adresses IP avec DHCP.

Renouvellement des baux DHCP

Un pod obtient son bail DHCP d'origine lors de sa création. Le bail doit être renouvelé périodiquement par un serveur DHCP minimal déployé sur le cluster.

Pour déclencher le déploiement du serveur DHCP, vous devez créer un attachement réseau shim en modifiant la configuration de l'opérateur réseau du cluster, comme dans l'exemple suivant :

Exemple de définition de l'attachement au réseau de cales

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: dhcp-shim
    namespace: default
    type: Raw
    rawCNIConfig: |-
      {
        "name": "dhcp-shim",
        "cniVersion": "0.3.1",
        "type": "bridge",
        "ipam": {
          "type": "dhcp"
        }
      }
  # ...

Tableau 22.10. ipam Objet de configuration DHCP

FieldTypeDescription

type

string

Le type d'adresse IPAM. La valeur dhcp est obligatoire.

Exemple de configuration de l'attribution dynamique d'une adresse IP (DHCP)

{
  "ipam": {
    "type": "dhcp"
  }
}

22.2.4.3. Configuration de l'attribution dynamique d'adresses IP avec Whereabouts

Le plugin Whereabouts CNI permet l'attribution dynamique d'une adresse IP à un réseau supplémentaire sans utiliser de serveur DHCP.

Le tableau suivant décrit la configuration pour l'attribution dynamique d'adresses IP avec Whereabouts :

Tableau 22.11. ipam objet de configuration de la localisation

FieldTypeDescription

type

string

Le type d'adresse IPAM. La valeur whereabouts est obligatoire.

range

string

Une adresse IP et une plage d'adresses en notation CIDR. Les adresses IP sont attribuées à partir de cette plage d'adresses.

exclude

array

Facultatif : Une liste de zéro ou plusieurs adresses IP et plages d'adresses en notation CIDR. Les adresses IP situées dans une plage d'adresses exclue ne sont pas attribuées.

Exemple de configuration de l'attribution dynamique d'adresses IP à l'aide de Whereabouts

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/27",
    "exclude": [
       "192.0.2.192/30",
       "192.0.2.196/32"
    ]
  }
}

22.2.5. Création d'un rattachement réseau supplémentaire avec l'opérateur de réseau de cluster

Le Cluster Network Operator (CNO) gère les définitions de réseaux supplémentaires. Lorsque vous spécifiez un réseau supplémentaire à créer, le CNO crée automatiquement l'objet NetworkAttachmentDefinition.

Important

Ne modifiez pas les objets NetworkAttachmentDefinition gérés par le Cluster Network Operator. Cela risquerait de perturber le trafic sur votre réseau supplémentaire.

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Connectez-vous en tant qu'utilisateur disposant des privilèges cluster-admin.

Procédure

  1. Facultatif : Créez l'espace de noms pour les réseaux supplémentaires :

    oc create namespace <namespace_name> $ oc create namespace <namespace_name>
  2. Pour modifier la configuration du CNO, entrez la commande suivante :

    $ oc edit networks.operator.openshift.io cluster
  3. Modifiez le CR que vous êtes en train de créer en ajoutant la configuration pour le réseau supplémentaire que vous êtes en train de créer, comme dans l'exemple de CR suivant.

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    spec:
      # ...
      additionalNetworks:
      - name: tertiary-net
        namespace: namespace2
        type: Raw
        rawCNIConfig: |-
          {
            "cniVersion": "0.3.1",
            "name": "tertiary-net",
            "type": "ipvlan",
            "master": "eth1",
            "mode": "l2",
            "ipam": {
              "type": "static",
              "addresses": [
                {
                  "address": "192.168.1.23/24"
                }
              ]
            }
          }
  4. Enregistrez vos modifications et quittez l'éditeur de texte pour valider vos modifications.

Vérification

  • Confirmez que le CNO a créé l'objet NetworkAttachmentDefinition en exécutant la commande suivante. Il peut y avoir un délai avant que le CNO ne crée l'objet.

    oc get network-attachment-definitions -n <namespace>

    où :

    <namespace>
    Spécifie l'espace de noms pour l'attachement réseau que vous avez ajouté à la configuration CNO.

    Exemple de sortie

    NAME                 AGE
    test-network-1       14m

22.2.6. Création d'une pièce jointe réseau supplémentaire par l'application d'un manifeste YAML

Conditions préalables

  • Installez le CLI OpenShift (oc).
  • Connectez-vous en tant qu'utilisateur disposant des privilèges cluster-admin.

Procédure

  1. Créez un fichier YAML avec votre configuration réseau supplémentaire, comme dans l'exemple suivant :

    apiVersion: k8s.cni.cncf.io/v1
    kind: NetworkAttachmentDefinition
    metadata:
      name: next-net
    spec:
      config: |-
        {
          "cniVersion": "0.3.1",
          "name": "work-network",
          "type": "host-device",
          "device": "eth1",
          "ipam": {
            "type": "dhcp"
          }
        }
  2. Pour créer le réseau supplémentaire, entrez la commande suivante :

    oc apply -f <file>.yaml

    où :

    <file>
    Spécifie le nom du fichier contenant le manifeste YAML.