8.7. Configuration de la politique de réseau
En tant qu'administrateur de cluster ou de projet, vous pouvez configurer des politiques de réseau pour un projet.
8.7.1. A propos de la politique de réseau Copier lienLien copié sur presse-papiers!
Dans un cluster utilisant un plugin réseau qui prend en charge la politique réseau de Kubernetes, l'isolation du réseau est entièrement contrôlée par les objets NetworkPolicy. Dans OpenShift Container Platform 4.12, OpenShift SDN prend en charge l'utilisation de la politique réseau dans son mode d'isolation réseau par défaut.
La politique de réseau ne s'applique pas à l'espace de noms du réseau hôte. Les pods dont le réseau d'hôtes est activé ne sont pas affectés par les règles de la politique de réseau.
Par défaut, tous les modules d'un projet sont accessibles aux autres modules et aux points d'extrémité du réseau. Pour isoler un ou plusieurs pods dans un projet, vous pouvez créer des objets NetworkPolicy dans ce projet pour indiquer les connexions entrantes autorisées. Les administrateurs de projet peuvent créer et supprimer des objets NetworkPolicy dans leur propre projet.
Si un pod est associé à des sélecteurs dans un ou plusieurs objets NetworkPolicy, il n'acceptera que les connexions autorisées par au moins un de ces objets NetworkPolicy. Un module qui n'est sélectionné par aucun objet NetworkPolicy est entièrement accessible.
Les exemples suivants d'objets NetworkPolicy illustrent la prise en charge de différents scénarios :
Refuser tout le trafic :
Pour qu'un projet soit refusé par défaut, ajoutez un objet
NetworkPolicyqui correspond à tous les pods mais n'accepte aucun trafic :Copy to Clipboard Copied! Toggle word wrap Toggle overflow N'autoriser que les connexions provenant du contrôleur d'entrée de la plate-forme OpenShift Container :
Pour qu'un projet n'autorise que les connexions provenant du contrôleur d'ingestion de la plate-forme OpenShift Container, ajoutez l'objet
NetworkPolicysuivant.Copy to Clipboard Copied! Toggle word wrap Toggle overflow N'accepte que les connexions provenant de pods au sein d'un projet :
Pour que les pods acceptent les connexions d'autres pods du même projet, mais rejettent toutes les autres connexions de pods d'autres projets, ajoutez l'objet suivant
NetworkPolicy:Copy to Clipboard Copied! Toggle word wrap Toggle overflow N'autoriser le trafic HTTP et HTTPS qu'en fonction des étiquettes de pods :
Pour permettre uniquement l'accès HTTP et HTTPS aux pods avec un label spécifique (
role=frontenddans l'exemple suivant), ajoutez un objetNetworkPolicysimilaire à ce qui suit :Copy to Clipboard Copied! Toggle word wrap Toggle overflow Accepter les connexions en utilisant des sélecteurs d'espace de noms et de pods :
Pour faire correspondre le trafic réseau en combinant les sélecteurs d'espace de noms et de pods, vous pouvez utiliser un objet
NetworkPolicysimilaire à ce qui suit :Copy to Clipboard Copied! Toggle word wrap Toggle overflow
NetworkPolicy sont additifs, ce qui signifie que vous pouvez combiner plusieurs objets NetworkPolicy pour répondre à des exigences complexes en matière de réseau.
Par exemple, pour les objets NetworkPolicy définis dans les exemples précédents, vous pouvez définir les politiques allow-same-namespace et allow-http-and-https dans le même projet. Cela permet aux pods portant l'étiquette role=frontend d'accepter toutes les connexions autorisées par chaque politique. C'est-à-dire des connexions sur n'importe quel port à partir de pods dans le même espace de noms, et des connexions sur les ports 80 et 443 à partir de pods dans n'importe quel espace de noms.
8.7.1.1. Utilisation de la stratégie réseau allow-from-router Copier lienLien copié sur presse-papiers!
Utilisez l'adresse NetworkPolicy pour autoriser le trafic externe quelle que soit la configuration du routeur :
- 1
policy-group.network.openshift.io/ingress:""prend en charge à la fois Openshift-SDN et OVN-Kubernetes.
8.7.1.2. Utilisation de la stratégie réseau allow-from-hostnetwork Copier lienLien copié sur presse-papiers!
Ajoutez l'objet suivant allow-from-hostnetwork NetworkPolicy pour diriger le trafic des pods du réseau hôte :
8.7.2. Exemple d'objet NetworkPolicy Copier lienLien copié sur presse-papiers!
Un exemple d'objet NetworkPolicy est annoté ci-dessous :
- 1
- Le nom de l'objet NetworkPolicy.
- 2
- Un sélecteur qui décrit les pods auxquels la politique s'applique. L'objet de politique ne peut sélectionner que des pods dans le projet qui définit l'objet NetworkPolicy.
- 3
- Un sélecteur qui correspond aux pods à partir desquels l'objet de politique autorise le trafic entrant. Le sélecteur correspond aux pods situés dans le même espace de noms que la NetworkPolicy.
- 4
- Liste d'un ou plusieurs ports de destination sur lesquels le trafic doit être accepté.
8.7.3. Création d'une politique de réseau à l'aide de l'interface de ligne de commande Copier lienLien copié sur presse-papiers!
Pour définir des règles granulaires décrivant le trafic réseau entrant ou sortant autorisé pour les espaces de noms de votre cluster, vous pouvez créer une stratégie réseau.
Si vous vous connectez avec un utilisateur ayant le rôle cluster-admin, vous pouvez créer une stratégie de réseau dans n'importe quel espace de noms du cluster.
Conditions préalables
-
Votre cluster utilise un plugin réseau qui prend en charge les objets
NetworkPolicy, tel que le fournisseur de réseau OpenShift SDN avecmode: NetworkPolicy. Ce mode est le mode par défaut pour OpenShift SDN. -
Vous avez installé l'OpenShift CLI (
oc). -
Vous êtes connecté au cluster avec un utilisateur disposant des privilèges
admin. - Vous travaillez dans l'espace de noms auquel s'applique la politique de réseau.
Procédure
Créer une règle de politique :
Créer un fichier
<policy_name>.yaml:touch <policy_name>.yaml
$ touch <policy_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow où :
<policy_name>- Spécifie le nom du fichier de stratégie réseau.
Définissez une politique de réseau dans le fichier que vous venez de créer, comme dans les exemples suivants :
Refuser l'entrée de tous les pods dans tous les espaces de noms
Il s'agit d'une politique fondamentale, qui bloque tout réseau inter-pods autre que le trafic inter-pods autorisé par la configuration d'autres politiques de réseau.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Autoriser l'entrée de tous les pods dans le même espace de noms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Autoriser le trafic entrant vers un pod à partir d'un espace de noms particulier
Cette politique autorise le trafic vers les pods étiquetés
pod-aà partir des pods fonctionnant surnamespace-y.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Pour créer l'objet de stratégie de réseau, entrez la commande suivante :
oc apply -f <policy_name>.yaml -n <namespace>
oc apply -f <policy_name>.yaml -n <namespace>Copy to Clipboard Copied! Toggle word wrap Toggle overflow où :
<policy_name>- Spécifie le nom du fichier de stratégie réseau.
<namespace>- Facultatif : Spécifie l'espace de noms si l'objet est défini dans un espace de noms différent de l'espace de noms actuel.
Exemple de sortie
networkpolicy.networking.k8s.io/deny-by-default created
networkpolicy.networking.k8s.io/deny-by-default createdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Si vous vous connectez à la console web avec les privilèges cluster-admin, vous avez le choix de créer une politique de réseau dans n'importe quel espace de noms du cluster directement dans YAML ou à partir d'un formulaire dans la console web.
8.7.4. Configuration de l'isolation des multitenants à l'aide d'une stratégie de réseau Copier lienLien copié sur presse-papiers!
Vous pouvez configurer votre projet pour l'isoler des pods et des services dans d'autres espaces de noms de projets.
Conditions préalables
-
Votre cluster utilise un plugin réseau qui prend en charge les objets
NetworkPolicy, tel que le fournisseur de réseau OpenShift SDN avecmode: NetworkPolicy. Ce mode est le mode par défaut pour OpenShift SDN. -
You installed the OpenShift CLI (
oc). -
Vous êtes connecté au cluster avec un utilisateur disposant des privilèges
admin.
Procédure
Créez les objets
NetworkPolicysuivants :Une police nommée
allow-from-openshift-ingress.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Notepolicy-group.network.openshift.io/ingress: ""est l'étiquette de sélecteur d'espace de noms préférée pour OpenShift SDN. Vous pouvez utiliser l'étiquette de sélecteur d'espace de nomsnetwork.openshift.io/policy-group: ingress, mais il s'agit d'une étiquette héritée.Une police nommée
allow-from-openshift-monitoring:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Une police nommée
allow-same-namespace:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Une police nommée
allow-from-kube-apiserver-operator:Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pour plus de détails, voir Nouveau contrôleur de webhook
kube-apiserver-operatorvalidant l'état de santé du webhook.
Facultatif : Pour confirmer que les politiques de réseau existent dans votre projet actuel, entrez la commande suivante :
oc describe networkpolicy
$ oc describe networkpolicyCopy to Clipboard Copied! Toggle word wrap Toggle overflow Exemple de sortie
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.7.5. Créer des politiques de réseau par défaut pour un nouveau projet Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous pouvez modifier le modèle de nouveau projet pour inclure automatiquement les objets NetworkPolicy lorsque vous créez un nouveau projet.
8.7.6. Modifier le modèle pour les nouveaux projets Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous pouvez modifier le modèle de projet par défaut afin que les nouveaux projets soient créés en fonction de vos besoins.
Pour créer votre propre modèle de projet personnalisé :
Procédure
-
Connectez-vous en tant qu'utilisateur disposant des privilèges
cluster-admin. Générer le modèle de projet par défaut :
oc adm create-bootstrap-project-template -o yaml > template.yaml
oc adm create-bootstrap-project-template -o yaml > template.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
Utilisez un éditeur de texte pour modifier le fichier
template.yamlgénéré en ajoutant des objets ou en modifiant des objets existants. Le modèle de projet doit être créé dans l'espace de noms
openshift-config. Chargez votre modèle modifié :oc create -f template.yaml -n openshift-config
$ oc create -f template.yaml -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow Modifiez la ressource de configuration du projet à l'aide de la console Web ou de la CLI.
En utilisant la console web :
-
Naviguez jusqu'à la page Administration
Cluster Settings. - Cliquez sur Configuration pour afficher toutes les ressources de configuration.
- Trouvez l'entrée pour Project et cliquez sur Edit YAML.
-
Naviguez jusqu'à la page Administration
Utilisation de la CLI :
Modifier la ressource
project.config.openshift.io/cluster:oc edit project.config.openshift.io/cluster
$ oc edit project.config.openshift.io/clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Mettez à jour la section
specpour inclure les paramètresprojectRequestTemplateetname, et définissez le nom de votre modèle de projet téléchargé. Le nom par défaut estproject-request.Ressource de configuration de projet avec modèle de projet personnalisé
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Après avoir enregistré vos modifications, créez un nouveau projet pour vérifier que vos modifications ont bien été appliquées.
8.7.6.1. Ajouter des politiques de réseau au nouveau modèle de projet Copier lienLien copié sur presse-papiers!
En tant qu'administrateur de cluster, vous pouvez ajouter des politiques de réseau au modèle par défaut pour les nouveaux projets. OpenShift Container Platform créera automatiquement tous les objets NetworkPolicy spécifiés dans le modèle du projet.
Conditions préalables
-
Votre cluster utilise un fournisseur de réseau CNI par défaut qui prend en charge les objets
NetworkPolicy, tel que le fournisseur de réseau OpenShift SDN avec l'optionmode: NetworkPolicy. Ce mode est le mode par défaut pour OpenShift SDN. -
You installed the OpenShift CLI (
oc). -
Vous devez vous connecter au cluster avec un utilisateur disposant des privilèges
cluster-admin. - Vous devez avoir créé un modèle de projet personnalisé par défaut pour les nouveaux projets.
Procédure
Modifiez le modèle par défaut pour un nouveau projet en exécutant la commande suivante :
oc edit template <project_template> -n openshift-config
$ oc edit template <project_template> -n openshift-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow Remplacez
<project_template>par le nom du modèle par défaut que vous avez configuré pour votre cluster. Le nom du modèle par défaut estproject-request.Dans le modèle, ajoutez chaque objet
NetworkPolicyen tant qu'élément du paramètreobjects. Le paramètreobjectsaccepte une collection d'un ou plusieurs objets.Dans l'exemple suivant, la collection de paramètres
objectscomprend plusieurs objetsNetworkPolicy.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Facultatif : Créez un nouveau projet pour confirmer que vos objets de stratégie de réseau ont été créés avec succès en exécutant les commandes suivantes :
Créer un nouveau projet :
oc new-project <projet> $ oc new-project <projet>
oc new-project <projet> $ oc new-project <projet>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- Remplacez
<project>par le nom du projet que vous créez.
Confirmez que les objets de stratégie de réseau du nouveau modèle de projet existent dans le nouveau projet :
oc get networkpolicy
$ oc get networkpolicy NAME POD-SELECTOR AGE allow-from-openshift-ingress <none> 7s allow-from-same-namespace <none> 7sCopy to Clipboard Copied! Toggle word wrap Toggle overflow