7.2. Configuration d’une adresse IP sortante
En tant qu’administrateur de cluster, vous pouvez configurer le plugin réseau OVN-Kubernetes Container Network Interface (CNI) pour attribuer une ou plusieurs adresses IP sortantes à un espace de noms, ou à des pods spécifiques dans un espace de noms.
La configuration des IP de sortie n’est pas prise en charge pour ROSA avec des clusters HCP pour le moment.
Dans un cluster d’infrastructure fourni par l’installateur, n’attribuez pas d’adresses IP de sortie au nœud d’infrastructure qui héberge déjà l’entrée VIP. La solution Red Hat Knowledgebase POD de l’espace de noms activé IP de sortie ne peut pas accéder à l’itinéraire OCP dans un cluster IPI lorsque l’IP de sortie est assigné au nœud infra qui héberge déjà le VIP entrant.
7.2.1. Egress IP Adresse de conception et de mise en œuvre architecturale Copier lienLien copié sur presse-papiers!
Le Red Hat OpenShift Service sur AWS egress IP fonctionnalité vous permet de vous assurer que le trafic d’un ou plusieurs pods dans un ou plusieurs espaces de noms dispose d’une adresse IP source cohérente pour les services en dehors du réseau de clusters.
À titre d’exemple, vous pourriez avoir un pod qui interroge périodiquement une base de données qui est hébergée sur un serveur en dehors de votre cluster. Afin d’appliquer les exigences d’accès pour le serveur, un dispositif de filtrage de paquets est configuré pour permettre le trafic uniquement à partir d’adresses IP spécifiques. Afin de vous assurer que vous pouvez autoriser de manière fiable l’accès au serveur à partir de cette pod spécifique, vous pouvez configurer une adresse IP de sortie spécifique pour le pod qui fait les demandes au serveur.
L’adresse IP de sortie attribuée à un espace de noms est différente d’un routeur de sortie, qui est utilisé pour envoyer du trafic vers des destinations spécifiques.
Dans ROSA avec des clusters HCP, les pods d’application et les gousses de routeur d’entrée s’exécutent sur le même nœud. Lorsque vous configurez une adresse IP sortante pour un projet d’application dans ce scénario, l’adresse IP n’est pas utilisée lorsque vous envoyez une demande à un itinéraire à partir du projet d’application.
L’attribution d’adresses IP egress aux nœuds de plan de contrôle avec la fonction EgressIP n’est pas prise en charge.
Les exemples suivants illustrent l’annotation des nœuds sur plusieurs fournisseurs de cloud public. Les annotations sont indentées pour la lisibilité.
Exemple d’annotation cloud.network.openshift.io/egress-ipconfig sur AWS
Les sections suivantes décrivent la capacité d’adresse IP pour les environnements de cloud public pris en charge à utiliser dans le calcul de votre capacité.
7.2.1.1. Limites de capacité d’adresse IP d’Amazon Web Services (AWS) Copier lienLien copié sur presse-papiers!
Dans AWS, les contraintes sur les attributions d’adresses IP dépendent du type d’instance configuré. Consultez les adresses IP par interface réseau par type d’instance pour plus d’informations.
7.2.1.2. Affectation des IP de sortie aux pods Copier lienLien copié sur presse-papiers!
Afin d’attribuer une ou plusieurs adresses IP de sortie à un espace de noms ou à des pods spécifiques dans un espace de noms, les conditions suivantes doivent être remplies:
- Au moins un nœud dans votre cluster doit avoir l’étiquette k8s.ovn.org/egress-assignable: "".
- Il existe un objet EgressIP qui définit une ou plusieurs adresses IP à utiliser comme adresse IP source pour le trafic qui quitte le cluster à partir de pods dans un espace de noms.
Lorsque vous créez des objets EgressIP avant d’étiqueter n’importe quel nœud dans votre cluster pour l’affectation IP egress, Red Hat OpenShift Service sur AWS peut attribuer chaque adresse IP egress au premier nœud avec l’étiquette k8s.ovn.org/egress-assignable: "".
Afin de s’assurer que les adresses IP sortantes sont largement distribuées entre les nœuds du cluster, appliquez toujours l’étiquette aux nœuds que vous avez l’intention d’héberger les adresses IP sortantes avant de créer des objets EgressIP.
7.2.1.3. Affectation des IP de sortie aux nœuds Copier lienLien copié sur presse-papiers!
Lors de la création d’un objet EgressIP, les conditions suivantes s’appliquent aux nœuds qui sont étiquetés avec l’étiquette k8s.ovn.org/egress-assignable:
- L’adresse IP de sortie n’est jamais attribuée à plus d’un nœud à la fois.
- L’adresse IP sortante est également équilibrée entre les nœuds disponibles qui peuvent héberger l’adresse IP de sortie.
Lorsque le tableau spec.EgressIPs dans un objet EgressIP spécifie plus d’une adresse IP, les conditions suivantes s’appliquent:
- Aucun nœud n’hébergera jamais plus d’une des adresses IP spécifiées.
- Le trafic est à peu près égal entre les adresses IP spécifiées pour un espace de noms donné.
- En cas d’indisponibilité d’un nœud, les adresses IP de sortie qui lui sont attribuées sont automatiquement réaffectées, sous réserve des conditions décrites précédemment.
Lorsqu’un pod correspond au sélecteur pour plusieurs objets EgressIP, il n’y a aucune garantie sur laquelle des adresses IP de sortie spécifiées dans les objets EgressIP sont attribuées en tant qu’adresse IP sortante du pod.
De plus, si un objet EgressIP spécifie plusieurs adresses IP egress, il n’y a aucune garantie sur laquelle des adresses IP egress pourraient être utilisées. À titre d’exemple, si un pod correspond à un sélecteur pour un objet EgressIP avec deux adresses IP sortantes, 10.10.20.1 et 10.10.20.2, soit pour chaque connexion TCP ou conversation UDP.
7.2.1.4. Diagramme architectural d’une configuration d’adresse IP sortante Copier lienLien copié sur presse-papiers!
Le diagramme suivant représente une configuration d’adresse IP sortante. Le diagramme décrit quatre pods dans deux espaces de noms différents fonctionnant sur trois nœuds dans un cluster. Les nœuds sont attribués aux adresses IP du bloc 192.168.126.0/18 CIDR sur le réseau hôte.
Les deux Node 1 et Node 3 sont étiquetés avec k8s.ovn.org/egress-assignable: "" et donc disponible pour l’attribution des adresses IP egress.
Les lignes pointillées dans le diagramme représentent le flux de trafic de pod1, pod2, et pod3 voyageant à travers le réseau de la gousse pour sortir le cluster du Node 1 et du Node 3. Lorsqu’un service externe reçoit du trafic de l’un des pods sélectionnés par l’exemple d’objet EgressIP, l’adresse IP source est soit 192.168.126.10 ou 192.168.126.102. Le trafic est à peu près égal entre ces deux nœuds.
Les ressources suivantes du diagramme sont illustrées en détail:
- Les objets d’espace de noms
Les espaces de noms sont définis dans le manifeste suivant:
Les objets d’espace de noms
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - EgressIP objet
L’objet EgressIP suivant décrit une configuration qui sélectionne tous les pods dans n’importe quel espace de noms avec l’étiquette env définie sur Prod. Les adresses IP de sortie pour les pods sélectionnés sont 192.168.126.10 et 192.168.126.102.
EgressIP objet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Dans le cas de la configuration de l’exemple précédent, Red Hat OpenShift Service sur AWS attribue les deux adresses IP aux nœuds disponibles. Le champ d’état indique si et où les adresses IP de sortie sont attribuées.
7.2.2. EgressIP objet Copier lienLien copié sur presse-papiers!
Le YAML suivant décrit l’API pour l’objet EgressIP. La portée de l’objet est à l’échelle du cluster; il n’est pas créé dans un espace de noms.
- 1
- Le nom de l’objet EgressIPs.
- 2
- Gamme d’une ou de plusieurs adresses IP.
- 3
- Il y a un ou plusieurs sélecteurs pour que les espaces de noms associent les adresses IP sortantes avec.
- 4
- Facultatif: Un ou plusieurs sélecteurs pour les pods dans les espaces de noms spécifiés pour associer les adresses IP de sortie avec. L’application de ces sélecteurs permet la sélection d’un sous-ensemble de pods dans un espace de noms.
Le YAML suivant décrit la strophe du sélecteur d’espace de noms:
Espace de noms sélecteur stanza
namespaceSelector: matchLabels: <label_name>: <label_value>
namespaceSelector:
matchLabels:
<label_name>: <label_value>
- 1
- Il y a une ou plusieurs règles correspondantes pour les espaces de noms. Lorsque plus d’une règle de correspondance est fournie, tous les espaces de noms correspondants sont sélectionnés.
Le YAML suivant décrit la strophe optionnelle pour le sélecteur de pod:
Gousse sélecteur stanza
podSelector: matchLabels: <label_name>: <label_value>
podSelector:
matchLabels:
<label_name>: <label_value>
- 1
- Facultatif: Une ou plusieurs règles correspondantes pour les pods dans les espaces de noms qui correspondent aux règles de namespaceSelector spécifiées. Lorsque spécifié, seuls les pods qui correspondent sont sélectionnés. D’autres pods dans l’espace de noms ne sont pas sélectionnés.
Dans l’exemple suivant, l’objet EgressIP associe les adresses IP 192.168.126.11 et 192.168.126.102 avec des pods qui ont l’étiquette de l’application définie sur le Web et qui se trouvent dans les espaces de noms qui ont l’étiquette env définie pour produire:
Exemple d’objet EgressIP
Dans l’exemple suivant, l’objet EgressIP associe les adresses IP 192.168.127.30 et 192.168.127.40 à des pods qui n’ont pas l’étiquette d’environnement en cours de développement:
Exemple d’objet EgressIP
7.2.3. Étiqueter un nœud pour héberger les adresses IP de sortie Copier lienLien copié sur presse-papiers!
Il est possible d’appliquer l’étiquette k8s.ovn.org/egress-assignable=" sur un nœud de votre cluster afin que Red Hat OpenShift Service sur AWS puisse attribuer une ou plusieurs adresses IP de sortie au nœud.
Conditions préalables
- Installez le ROSA CLI (rosa).
- Connectez-vous au cluster en tant qu’administrateur de cluster.
Procédure
Afin d’étiqueter un nœud afin qu’il puisse héberger une ou plusieurs adresses IP sortantes, entrez la commande suivante:
rosa edit machinepool <machinepool_name> --cluster=<cluster_name> --labels "k8s.ovn.org/egress-assignable="
$ rosa edit machinepool <machinepool_name> --cluster=<cluster_name> --labels "k8s.ovn.org/egress-assignable="
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ImportantCette commande remplace toutes les étiquettes de nœuds passionnantes sur votre machinepool. Incluez l’une des étiquettes souhaitées dans le champ --labels pour vous assurer que vos étiquettes de nœud existantes persistent.