Exposition d'applications avec des routes dans Red Hat OpenShift 4
Exposer les services de votre cluster Red Hat® OpenShift® on IBM Cloud® sur l'adresse IP externe du routeur en utilisant une route.
Ces informations sont destinées aux clusters qui exécutent Red Hat OpenShift version 4.
Vous hésitez entre l'utilisation d'Ingress ou de routes Red Hat OpenShift ? Consultez la rubrique Choix d'une solution d'équilibrage de charge.
Présentation
Par défaut, un contrôleur Ingress « Red Hat OpenShift » est déployé dans votre cluster; il sert de point de terminaison Ingress pour le trafic réseau externe.
Vous pouvez utiliser le contrôleur Ingress d' Red Hat OpenShift pour créer des routes pour vos applications. Les chemins d'accès sont attribués à un nom d'hôte public ou privé à partir du sous-domaine de contrôleur Ingress que les clients externes peuvent utiliser pour envoyer des demandes à votre application. Vous pouvez choisir de créer des routes non sécurisées ou sécurisées à l'aide du certificat TLS du contrôleur Ingress pour sécuriser votre nom d'hôte. Lorsque des requêtes externes atteignent votre nom d'hôte, le contrôleur Ingress fait office de proxy et transmet la requête à l'adresse IP privée sur laquelle votre application écoute.
Le type de contrôleur d'entrée qui est créé par défaut varie en fonction du fournisseur d'infrastructure de votre cluster et de la configuration de votre point de service.
- Clusters classiques / Clusters VPC avec point de terminaison de service dans le cloud public: votre cluster est créé par défaut avec un contrôleur Ingress public. Le contrôleur Ingress affecte des routes accessibles au public pour vos applications et écoute les demandes adressées à vos applications sur l'interface réseau de l'hôte public. Lorsqu'une demande est reçue, le contrôleur Ingress la dirige vers l'adresse IP privée que l'application écoute. Si vous souhaitez plutôt exposer vos applications de manière privée, vous devez d'abord créer un contrôleur Ingress privé, puis des routes privées.
- Clusters VPC disposant uniquement d'un point de terminaison de service cloud privé: votre cluster est créé par défaut avec un contrôleur Ingress privé. Le contrôleur Ingress affecte des routes privées pour vos applications et écoute l'interface du réseau hôte privé. Seuls les clients connectés à votre réseau VPC privé peuvent accéder aux applications qui sont exposées par une route privée. Si vous voulez exposer publiquement vos applications à la place, vous devez d'abord créer un contrôleur Ingress public, puis créer des routes publiques.
Si vous disposez d'un cluster multizone, un contrôleur Ingress à haute disponibilité est déployé sur votre cluster et un service de contrôleur Ingress est créé dans chaque zone. Deux noeuds worker sont requis par zone de sorte que les deux répliques
du contrôleur Ingress puissent être déployées et mises à jour correctement. Notez que le service de contrôleur d'entrée dans la première zone où vous avez des nœuds worker est toujours nommé router-default, et que les services
de contrôleur d'entrée dans les zones que vous ajoutez ultérieurement à votre cluster ont des noms tels que router-dal12.
- Pour afficher les services du contrôleur Ingress dans chaque zone de votre cluster, exécutez
oc get svc -n openshift-ingress. - Pour afficher le sous-domaine Ingress controller pour votre cluster et les adresses IP du service de contrôleur Ingress dans chaque zone, exécutez
ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>et recherchez le sous-domaine au format<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud.
Dans le tableau de bord de votre infrastructure VPC, les rapports d'équilibreur de charge VPC ne sont en bonne santé que les deux nœuds worker qui exécutent les gousses de réplique du contrôleur Ingress, car ces nœuds worker sont configurés en tant que programmes d'écoute pour l'équilibreur de charge VPC. Même si seuls les noeuds worker du programme d'écoute sont déclarés comme sains, le pool de noeuds worker des programmes d'écoute est tenu à jour par Red Hat OpenShift on IBM Cloud de sorte que tous les noeuds worker de votre cluster puissent toujours recevoir des demandes de l'équilibreur de charge VPC.
Flux de circulation dans un cluster classique à zone unique
Le diagramme suivant montre comment un routeur dirige le trafic réseau entre Internet et une application dans un cluster classique à zone unique :
-
Une demande envoyée à votre application utilise le nom d'hôte de la route que vous avez définie pour votre application.
-
Un service DNS résout le sous-domaine avec l'adresse IP publique portable du service de routeur.
-
Le routeur reçoit la demande et la transmet à l'adresse IP privée du pod d'application sur le réseau privé. L'adresse IP source du package de demande est remplacée par l'adresse IP publique du noeud worker sur lequel s'exécute le pod du routeur. Si plusieurs instances d'application sont déployées dans le cluster, le routeur achemine les demandes entre les pods d'application.
-
Lorsque l'application renvoie un paquet de réponses, elle utilise l'adresse IP du noeud worker où se trouve le routeur qui a transmis la demande du client. Le routeur envoie ensuite le paquet de réponses au client via le service d'équilibreur de charge.
Flux de circulation dans un cluster classique multizone
Le diagramme suivant montre comment un routeur dirige le trafic réseau entre Internet et une application dans un cluster classique à zones multiples :
-
Une demande envoyée à votre application utilise le nom d'hôte de la route que vous avez définie pour votre application.
-
Un service DNS résout le sous-domaine de route avec l'adresse IP publique portable d'un service de routeur qui a été signalé comme sain par l'équilibreur de charge multizone (MZLB). Le MZLB vérifie en continu les adresses IP publiques portables des services qui exposent le routeur dans chaque zone de votre cluster. Les demandes sont traitées par les services de routeur dans les différentes zones de façon circulaire.
-
En fonction de l'adresse IP résolue du service de routeur, le routeur reçoit la demande.
-
Le routeur transmet la demande à l'adresse IP privée du pod d'application via le réseau privé. L'adresse IP source du package de demande est remplacée par l'adresse IP publique du noeud worker sur lequel s'exécute le pod du routeur. Chaque routeur envoie les demandes vers les instances d'application au sein de sa propre zone et vers les instances d'application situées dans d'autres zones. De plus, si plusieurs instances d'application sont déployées dans une zone, le routeur alterne les demandes entre les pods d'application.
-
Lorsque l'application renvoie un paquet de réponses, elle utilise l'adresse IP du noeud worker où se trouve le routeur qui a transmis la demande du client. Le routeur envoie ensuite le paquet de réponses au client via le service d'équilibreur de charge.
Flux de circulation dans un cluster de VPC multizone avec un noeud final de service cloud public
Lorsque vous créez un cluster VPC multizone avec le noeud final de service de cloud public activé, un contrôleur Ingress public est créé par défaut. Le contrôleur Ingress affecte des routes accessibles au public pour vos applications et écoute les demandes adressées à vos applications sur l'interface réseau de l'hôte public.
Le diagramme suivant montre comment un contrôleur Ingress dirige le trafic réseau depuis Internet vers une application dans un cluster multizone, VPC.
-
Une demande envoyée à votre application utilise le nom d'hôte de la route que vous avez définie pour votre application.
-
Un service DNS résout le sous-domaine de routage vers le nom d'hôte de l'équilibreur de charge VPC affecté aux services du contrôleur Ingress. Dans les clusters VPC, les adresses IP externes de vos services de contrôleur d'entrée sont flottantes et sont conservées derrière un nom d'hôte attribué par VPC.
-
L'équilibreur de charge VPC résout le nom d'hôte VPC en une adresse IP externe disponible d'un service de contrôleur Ingress qui a été signalé comme étant en bonne santé. L'équilibreur de charge VPC vérifie en permanence les adresses IP externes des services qui exposent le contrôleur Ingress dans chaque zone de votre cluster.
-
En fonction de l'adresse IP résolue, l'équilibreur de charge VPC envoie la demande à un service de contrôleur Ingress.
-
Le contrôleur Ingress transmet la demande à l'adresse IP privée de l'application pod sur le réseau privé. L'adresse IP source du paquet de requête est remplacée par l'adresse IP du noeud worker sur lequel le contrôleur Ingress du contrôleur s'exécute. Chaque contrôleur Ingress envoie des demandes aux instances d'application dans sa propre zone et aux instances d'application dans d'autres zones. De plus, si plusieurs instances d'application sont déployées dans une même zone, le contrôleur Ingress alterne les demandes entre les pods d'application.
-
Lorsque l'application renvoie un paquet de réponses, elle utilise l'adresse IP du noeud worker où le contrôleur Ingress qui a transmis la demande client existe. Le contrôleur d'entrée envoie ensuite le paquet de réponses via l'équilibreur de charge VPC au client.
Flux de circulation dans un cluster de VPC multizone avec un noeud final de service cloud privé uniquement
Lorsque vous créez un cluster VPC multizone avec le point de terminaison de service de cloud privé uniquement, un contrôleur Ingress privé est créé par défaut. Le contrôleur Ingress affecte des routes privées pour vos applications et écoute l'interface du réseau hôte privé. Seuls les clients connectés à votre réseau VPC privé peuvent accéder aux applications qui sont exposées par une route privée.
Le diagramme suivant montre comment un contrôleur Ingress dirige le trafic réseau des réseaux privés vers une application dans un cluster multizone, VPC.
-
Un client connecté à votre réseau VPC privé envoie une demande à votre application à l'aide de la route privée de l'application. Par exemple, vous pourriez utiliser le VPN VPC, IBM Cloud Transit Gateway ou IBM Cloud Direct Link pour autoriser les demandes depuis un réseau sur site, un autre cloud privé virtuel ou une infrastructure classique IBM Cloud vers des applications qui s'exécutent dans votre cluster.
-
Un service DNS résout le sous-domaine de routage vers le nom d'hôte de l'équilibreur de charge VPC affecté aux services du contrôleur Ingress. Dans les clusters VPC, les adresses IP de vos services de contrôleur d'entrée sont flottantes et sont conservées derrière un nom d'hôte attribué par VPC. Notez que bien que l'enregistrement DNS du sous-domaine de route soit enregistré dans le système DNS public, les serveurs de résolution DNS sont accessibles à partir du cloud privé virtuel.
-
L'équilibreur de charge VPC privé résout le nom d'hôte VPC en une adresse IP privée disponible d'un service de contrôleur Ingress qui a été signalé comme étant en bon état de santé. L'équilibreur de charge VPC vérifie en permanence les adresses IP des services qui exposent le contrôleur Ingress dans chaque zone de votre cluster.
-
En fonction de l'adresse IP résolue, l'équilibreur de charge VPC envoie la demande à un service de contrôleur Ingress.
-
Le contrôleur Ingress transmet la demande à l'adresse IP privée de l'application pod sur le réseau privé. L'adresse IP source du paquet de requête est remplacée par l'adresse IP du noeud worker sur lequel le contrôleur Ingress du contrôleur s'exécute. Chaque contrôleur Ingress envoie des demandes aux instances d'application dans sa propre zone et aux instances d'application dans d'autres zones. De plus, si plusieurs instances d'application sont déployées dans une même zone, le contrôleur Ingress alterne les demandes entre les pods d'application.
-
Lorsque l'application renvoie un paquet de réponses, elle utilise l'adresse IP du noeud worker où le contrôleur Ingress qui a transmis la demande client existe. Le contrôleur d'entrée envoie ensuite le paquet de réponses via l'équilibreur de charge VPC et via le VPN IBM Cloud VPC, Transit Gatewayou Direct Link vers le client.
Types de route et terminaison TLS
Red Hat OpenShift propose quatre types de route en fonction du type de terminaison TLS requise par votre application. Chaque type de route est pris en charge pour les routes publiques et privées.
| Type de route | Cas d'utilisation |
|---|---|
| Simple | Si vous n'avez pas besoin de chiffrement TLS, créez une route simple pour gérer le trafic HTTP non chiffré. |
| Passe-système | Lorsque vous souhaitez que les connexions TLS passent du client à votre pod d'application sans interruption, créez une route passe-système. Le routeur n'est pas impliqué dans la terminaison TLS pour le trafic HTTPS chiffré, par conséquent, le pod d'application doit mettre fin à la connexion TLS. Ce type peut également être utilisé pour les noeuds finaux TLS HTTP/2 et non-HTTP. |
| Edge | Lorsque votre pod d'application est exposé sur un noeud final HTTP non chiffré, mais que vous devez gérer le trafic HTTPS chiffré, créez une route de périphérie. La connexion TLS entre le client et le service de routeur est arrêtée et la connexion entre le service de routeur et votre pod d'application est non chiffrée. Pour plus d'informations, voir la documentation de Red Hat OpenShift edge route. |
| Nouveau chiffrement | Lorsque votre pod d'application est exposé sur un noeud final HTTPS non chiffré, mais que vous devez gérer le trafic HTTPS chiffré, créez une route de nouveau chiffrement. La connexion TLS entre le client et le service de routeur est arrêtée et une nouvelle connexion TLS entre le service de routeur et votre pod d'application est créée. Pour plus d'informations, consultez la documentation de Red Hat OpenShift re-encrypt route. |
Si vous n'avez pas besoin d'utiliser un domaine personnalisé, vous pouvez utiliser un nom d'hôte de route fourni par IBMau format <service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud.
Contrôles de l'état de santé du contrôleur d'entrée Ingress
Autorisez l'accès via des règles réseau ou d'autres règles de pare-feu pour que vos services de contrôleur Ingress soient accessibles par le contrôle de santé du contrôleur Ingress.
Classique: si vous utilisez les stratégies réseau Calico pre-DNAT ou un autre pare-feu personnalisé pour bloquer le trafic entrant vers votre cluster, vous devez autoriser l'accès entrant sur le port 443 depuis les adresses IP source du moniteur de santé du domaine Ingress vers les adresses IP de vos services Ingress Controller, afin que le fournisseur de domaine puisse contrôler la santé des adresses enregistrées et ne renvoyer que des points d'extrémité sains.
VPC: si vous configurez des groupes de sécurité VPC ou des listes de contrôle d'accès (ACL) VPC pour sécuriser votre réseau en grappe, veillez à autoriser l'accès entrant sur le port 443 à partir des adresses IP source du moniteur de santé du domaine d'entrée vers les adresses IP de vos services de contrôleur d'entrée, afin que le fournisseur de domaine puisse contrôler la santé des adresses enregistrées et ne renvoyer que des points d'extrémité sains.
Configuration de routes publiques
Utilisez un contrôleur Ingress public pour exposer les applications de votre cluster.
La méthode de configuration des routes publiques varie en fonction du fournisseur d'infrastructure de votre cluster et de votre configuration de noeud final de service.
- Configuration de routes publiques dans des clusters classiques ou dans des clusters de VPC avec un noeud final de service cloud public
- Configuration de routes publiques dans des clusters de VPC avec un noeud final de service cloud privé uniquement
Configuration de routes publiques dans des clusters classiques ou dans des clusters de VPC avec un noeud final de service cloud public
Si votre cluster est créé sur une infrastructure classique, ou s'il est créé sur une infrastructure VPC et que vous avez activé le point de terminaison du service cloud public lors de sa création, votre cluster est créé par défaut avec un contrôleur Ingress public. Vous pouvez utiliser ce contrôleur Ingress pour créer des routes publiques pour votre application.
-
Créez un service Kubernetes
ClusterIPpour le déploiement de votre application. Le service fournit une adresse IP interne pour l'application sur laquelle le contrôleur Ingress peut envoyer du trafic.oc expose deploy <app_deployment_name> --name my-app-svc -
Choisissez un domaine pour votre application. Notez que les URL de route doivent comporter 130 caractères maximum IBM- domaine fourni: si vous n'avez pas besoin d'utiliser un domaine personnalisé, un nom d'hôte de route est généré automatiquement pour vous au format
<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. Domaine personnalisé : pour spécifier un domaine personnalisé, utilisez votre fournisseur DNS ou IBM Cloud® Internet Services.- Récupère l'adresse IP publique du service public de contrôleur Ingress dans chaque zone de la colonne ADRESSE IP EXTERNE. Notez que le service de contrôleur d'entrée dans la première zone où vous avez des nœuds worker
est toujours nommé
router-default, et que les services de contrôleur d'entrée dans les zones que vous ajoutez ultérieurement à votre cluster ont des noms tels querouter-dal12.
oc get svc -n openshift-ingress ``` 1. Créez un domaine personnalisé avec votre fournisseur DNS. Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que `*.example.com`. {: tip} 1. Mettez en correspondance votre domaine personnalisé avec l'adresse IP publique du contrôleur Ingress en ajoutant l'adresse IP en tant qu'enregistrement A. - Récupère l'adresse IP publique du service public de contrôleur Ingress dans chaque zone de la colonne ADRESSE IP EXTERNE. Notez que le service de contrôleur d'entrée dans la première zone où vous avez des nœuds worker
est toujours nommé
-
Configurez une route basée sur le type de terminaison TLS requise par votre application. Si vous ne disposez pas d'un nom de domaine personnalisé, n'incluez pas l'option «
--hostname». Un nom d'hôte de route est généré pour vous au format<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. Si vous avez enregistré un sous-domaine générique, spécifiez un sous-domaine unique dans chaque route que vous créez. Par exemple, vous pouvez spécifier--hostname svc1.example.comdans cette route, et--hostname svc2.example.comdans une autre route.- Simple :
oc expose service <app_service_name> [--hostname <subdomain>] ``` * Passe-système : ```sh {: pre} oc create route passthrough --service <app_service_name> [--hostname <subdomain>] ``` Vous devez gérer des connexions HTTP/2 ? Après avoir créé la route, exécutez `oc edit route <app_service_name>` et remplacez la valeur `targetPort` de la route par `https`. Vous pouvez tester la route en exécutant `curl -I --http2 https://<route> --insecure`. * Remarque : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur les routes périphériques « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-an-edge-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route edge --service <app_service_name> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` * Ré-chiffrement : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur la route de rechiffrement « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-a-reencrypt-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route reencrypt --service <app_service_name> --dest-ca-cert <destca.crt> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` -
Vérifiez que la route pour votre application est créée.
oc get routes -
Facultatif : Personnaliser les règles de routage par défaut à l'aide de configurations facultatives. Par exemple, vous pouvez utiliser des annotations « HAProxy » spécifiques à une route.
Configuration de routes publiques dans des clusters de VPC avec un noeud final de service cloud privé uniquement
Si votre cluster est créé sur une infrastructure VPC et que vous avez activé uniquement le noeud final de service de cloud privé lors de la création du cluster, votre cluster est créé avec un routeur privé par défaut. Pour exposer publiquement vos applications, vous devez d'abord créer une ressource publique IngressController et la configurer avec un sous-domaine. L'opérateur Ingress crée et configure automatiquement un nouveau contrôleur Ingress public basé sur l'IngressController, que vous pouvez utiliser pour créer des routes publiques pour vos applications.
Notez que même si vous créez une ressource IngressController dans les étapes suivantes, IngressController n'est requis que pour créer et configurer le contrôleur Ingress nécessaire pour vous. Une fois le contrôleur Ingress créé, vous utilisez le contrôleur Ingress directement pour créer des routes.
-
Préparez le domaine que vous souhaitez utiliser pour votre contrôleur Ingress.
- Domaine personnalisé : pour enregistrer un domaine personnalisé, travaillez en collaboration avec votre fournisseur DNS (Domain Name Service) ou votre DNS IBM Cloud.
Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que
*.example.com. Si vous utilisez un domaine personnalisé, vous devez également spécifier le certificat de domaine dans votre spécificationIngressController. Pour plus d'informations, voir Définition d'un certificat par défaut personnalisé - Domaine fourni par IBM :
- Répertoriez les sous-domaines qui existent dans votre cluster. Dans la colonne Sous-domaine de la sortie, copiez le sous-domaine dont la valeur
000<n>est la plus élevée.
Dans cet exemple de sortie, le sous-domaineibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_IDmycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.clouda la valeur000<n>la plus élevée de0002.Subdomain Load Balancer Hostname Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud ["1234abcd-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0000 mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["5678efgh-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0001 mycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.cloud ["9012ijkl-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0002 - Dans le sous-domaine que vous avez copié, remplacez la valeur
000<n>dans le sous-domaine par000<n+1>. Par exemple, le sous-domainemycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.cloudest remplacé parmycluster-a1b2cdef345678g9hi012j3kl4567890-0003.us-south.containers.appdomain.cloud. Vous enregistrez ce sous-domaine au cours d'étapes ultérieures.
- Répertoriez les sous-domaines qui existent dans votre cluster. Dans la colonne Sous-domaine de la sortie, copiez le sous-domaine dont la valeur
- Domaine personnalisé : pour enregistrer un domaine personnalisé, travaillez en collaboration avec votre fournisseur DNS (Domain Name Service) ou votre DNS IBM Cloud.
Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que
-
Créez un fichier YAML qui configure un contrôleur Ingress public avec le domaine choisi à l'étape 1.
apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: public namespace: openshift-ingress-operator spec: # defaultCertificate: If you are using a custom domain, specify the domain certificate # name: custom-certs-default replicas: 2 domain: <domain> endpointPublishingStrategy: loadBalancer: scope: External type: LoadBalancerService -
Créez la ressource IngressController dans l'espace de nom
openshift-ingress-operatorde votre cluster. Lorsque vous créez l'élément IngressController, un contrôleur d'entrée public est automatiquement créé et déployé dans l'espace de nomopenshift-ingressen fonction des paramètres IngressController. En outre, un service de contrôleur Ingress est créé pour exposer le contrôleur Ingress.oc create -f public.yaml -n openshift-ingress-operator -
Récupérez le nom d'hôte VPC contenu dans la zone EXTERNAL IP du service
router-public. Dans les clusters de VPC, les adresses IP externes des services de routeur sont flottantes et sont conservées derrière un nom d'hôte affecté par VPC.oc get svc router-public -n openshift-ingressExemple de sortie
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-public LoadBalancer 172.21.57.132 1234abcd-us-south.lb.appdomain.cloud 80/TCP,443/TCP,1940/TCP 3m -
Enregistrez le nom d'hôte VPC du service dans le domaine que vous avez choisi à l'étape 1. Cette étape garantit que les adresses IP de vos services de contrôleur d'entrée, qui sont conservées derrière le nom d'hôte VPC, sont enregistrées dans le domaine que vous avez choisi pour le contrôleur Ingress.
- Domaine personnalisé : collaborez avec votre fournisseur DNS pour ajouter le nom d'hôte VPC du service en tant qu'enregistrement CNAME qui est mappé à votre domaine personnalisé.
- Domaine fourni par IBM : créez une entrée DNS pour le nom d'hôte VPC du service. Lorsque vous exécutez la commande suivante, le sous-domaine que vous avez spécifié à l'étape 2 est automatiquement généré et est enregistré avec le service de contrôleur Ingress.
ibmcloud oc nlb-dns create vpc-gen2 --cluster <cluster_name_or_ID> --lb-host <router_VPC_hostname> ``` -
Facultatif : Si vous souhaitez utiliser l'affûtage de contrôleur Ingress pour que des routes spécifiques soient gérées par un contrôleur Ingress spécifique, par exemple les routes privées ne doivent être admises qu'à un routeur privé, vous pouvez utiliser des libellés de route ou des libellés d'espace de nom pour spécifier la méthode d'affûtage. Pour ajouter le sélecteur lors de la création, incluez-le dans
ingresscontrolleryaml sousspec. Par exemple, pour permettre à un contrôleur Ingress de gérer uniquement les entrées / routes avec le libellétype=sharded, vous pouvez ajouter unrouteSelector. Pour plus d'informations, voir Éclatement des données du contrôleur Ingress.routeSelector: matchLabels: type: sharded- Pour ajouter des sélecteurs à un contrôleur Ingress existant, obtenez une liste de contrôleurs Ingress.
oc get ingresscontroller -n openshift-ingress-operator ``` 1. Ajoutez les sélecteurs pour transgresser les contrôleurs dans lesquels vous souhaitez utiliser le partage. ```sh {: pre} oc patch -n openshift-ingress-operator IngressController/<name> --type='merge' -p '{"spec":{"routeSelector":{"matchLabels":{"type":"sharded"}}}}' ``` 1. Notez qu'aucun sélecteur n'est ajouté à l'IngressController par défaut, de sorte que toutes les routes sont toujours admises au contrôleur Ingress par défaut sur le cluster. Vous pouvez utiliser la route appropriée ou un sélecteur de libellé d'espace de nom pour modifier ce comportement. Par exemple, pour ajuster le routeur par défaut pour ignorer ingress / routes avec le libellé `type=sharded`, exécutez la commande de correctif suivante. ```sh {: pre} oc patch -n openshift-ingress-operator IngressController/default --type='merge' -p '{"spec":{"routeSelector":{"matchExpressions":[{"key":"type","operator":"NotIn","values":["sharded"]}]}}}' ``` Plusieurs routes et Ingresses du cluster dépendent du contrôleur de la sortie publique par défaut. Assurez-vous que les modifications sont correctes avant de modifier le contrôleur Ingress par défaut. Pour plus d'informations, voir [Éclatement des données du contrôleur Ingress](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/networking_overview/index#nw-ingress-sharding_configuring-ingress){: external}. {: note} -
Créez un service Kubernetes
ClusterIPpour le déploiement de votre application. Le service fournit une adresse IP interne pour l'application sur laquelle le contrôleur Ingress peut envoyer du trafic.oc expose deploy <app_deployment_name> --name <app_service_name> -n <app_project> -
Configurez une route basée sur le type de terminaison TLS requise par votre application. Si vous n'utilisez pas l'option «
--hostname», le nom d'hôte de la route est généré automatiquement au format<app_service_name>-<app_project>.<router-subdomain>.- Simple :
oc expose service <app_service_name> [--hostname <subdomain>] ``` * Passe-système : ```sh {: pre} oc create route passthrough --service <app_service_name> [--hostname <subdomain>] ``` Vous devez gérer des connexions HTTP/2 ? Après avoir créé la route, exécutez `oc edit route <app_service_name>` et remplacez la valeur `targetPort` de la route par `https`. Vous pouvez tester la route en exécutant `curl -I --http2 https://<route> --insecure`. * Remarque : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur les routes périphériques « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-an-edge-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route edge --service <app_service_name> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` * Ré-chiffrement : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur la route de rechiffrement « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-a-reencrypt-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route reencrypt --service <app_service_name> --dest-ca-cert <destca.crt> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` -
Vérifiez que la route configurée pour votre application est créée.
oc get routes -
Facultatif: personnalisez les règles de routage du contrôleur Ingress public avec des configurations facultatives. Par exemple, vous pouvez utiliser des annotations « HAProxy » spécifiques à une route.
-
Pour créer des routes pour d'autres applications en utilisant le même sous-domaine, vous pouvez répéter les étapes 7 à 10 de sorte que le chemin soit généré par le même contrôleur d'entrée public. Si vous souhaitez créer des routes pour d'autres applications à l'aide d'un sous-domaine différent, répétez toutes les étapes de cette section pour créer un nouveau contrôleur d'entrée public avec un domaine différent.
Configuration de routes privées
Utilisez un contrôleur Ingress privé pour exposer les applications de votre cluster sur le réseau privé.
La méthode de configuration des routes privées varie en fonction du fournisseur d'infrastructure de votre cluster et de votre configuration de noeud final de service.
- Configuration de routes privées dans des clusters classiques ou dans des clusters de VPC avec un noeud final de service cloud public
- Configuration de routes privées dans des clusters de VPC avec un noeud final de service cloud privé uniquement
Configuration de routes privées dans des clusters classiques ou dans des clusters de VPC avec un noeud final de service cloud public
Si votre cluster est créé sur une infrastructure classique, ou s'il est créé sur une infrastructure VPC et que vous avez activé le point de terminaison du service cloud public lors de sa création, votre cluster est créé par défaut avec uniquement un contrôleur Ingress public. Pour exposer vos applications en privé, vous devez d'abord créer une ressource IngressController privée et configurer le contrôleur avec un sous-domaine. L'opérateur Ingress crée et configure automatiquement un nouveau contrôleur Ingress privé, que vous pouvez utiliser pour créer des routes privées pour vos applications.
Notez que même si vous créez une ressource IngressController dans les étapes suivantes, la ressource IngressController n'est requise que pour créer et configurer le contrôleur Ingress nécessaire pour vous. Une fois le contrôleur Ingress créé, vous utilisez le routeur directement pour créer des routes.
-
Préparez le domaine que vous souhaitez utiliser pour votre contrôleur Ingress.
- Domaine personnalisé, clusters classiques ou VPC : pour enregistrer un domaine personnalisé, travaillez en collaboration avec votre fournisseur DNS (Domain Name Service) ou votre DNS IBM Cloud.
Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que
*.example.com. - Domaine fourni par IBM, clusters de VPC uniquement :
- Répertoriez les sous-domaines qui existent dans votre cluster. Dans la colonne Sous-domaine de la sortie, copiez le sous-domaine dont la valeur
000<n>est la plus élevée.
Dans cet exemple de sortie, le sous-domaineibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>mycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.clouda la valeur000<n>la plus élevée de0002.Subdomain Load Balancer Hostname Health Monitor SSL Cert Status SSL Cert Secret Name mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud ["1234abcd-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0000 mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud ["5678efgh-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0001 mycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.cloud ["9012ijkl-us-south.lb.appdomain.cloud"] None created mycluster-a1b2cdef345678g9hi012j3kl4567890-0002 - Dans le sous-domaine que vous avez copié, remplacez la valeur
000<n>dans le sous-domaine par000<n+1>. Par exemple, le sous-domainemycluster-a1b2cdef345678g9hi012j3kl4567890-0002.us-south.containers.appdomain.cloudest remplacé parmycluster-a1b2cdef345678g9hi012j3kl4567890-0003.us-south.containers.appdomain.cloud. Vous enregistrez ce sous-domaine au cours d'étapes ultérieures.
- Répertoriez les sous-domaines qui existent dans votre cluster. Dans la colonne Sous-domaine de la sortie, copiez le sous-domaine dont la valeur
- Domaine personnalisé, clusters classiques ou VPC : pour enregistrer un domaine personnalisé, travaillez en collaboration avec votre fournisseur DNS (Domain Name Service) ou votre DNS IBM Cloud.
Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que
-
Créez un fichier de configuration qui configure un contrôleur Ingress privé avec le domaine choisi à l'étape 1.
apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: private namespace: openshift-ingress-operator spec: replicas: 2 domain: <domain> endpointPublishingStrategy: loadBalancer: scope: Internal type: LoadBalancerService -
Créez la ressource IngressController dans l'espace de nom
openshift-ingress-operatorde votre cluster. Lorsque vous créez la ressource IngressController, un contrôleur Ingress privé est automatiquement créé et déployé dans l'espace de nomopenshift-ingressen fonction des paramètres IngressController. En outre, un service de contrôleur Ingress est créé pour exposer le contrôleur Ingress avec une adresse IP (clusters classiques) ou un nom d'hôte VPC (clusters VPC).oc create -f private.yaml -n openshift-ingress-operator -
Récupérez l'adresse IP ou le nom d'hôte VPC contenu dans la zone EXTERNAL IP du service
router-private.oc get svc router-private -n openshift-ingressExemple de sortie pour les clusters classiques :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-private LoadBalancer 172.21.57.132 10.XX.XX.XX 80/TCP,443/TCP,1940/TCP 3mExemple de sortie pour les clusters de VPC :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-private LoadBalancer 172.21.57.132 1234abcd-us-south.lb.appdomain.cloud 80/TCP,443/TCP,1940/TCP 3m -
Enregistrez l'adresse IP externe ou le nom d'hôte VPC du service auprès du domaine que vous avez choisi à l'étape 1.
- Domaine personnalisé, clusters classiques ou VPC : collaborez avec votre fournisseur DNS pour ajouter l'adresse IP externe ou le nom d'hôte VPC du service respectivement en tant qu'enregistrement A (clusters classiques) ou enregistrement CNAME (clusters de VPC) qui est mappé à votre domaine personnalisé.
- Domaine fourni par IBM, clusters de VPC uniquement : créez une entrée DNS pour le nom d'hôte VPC du service. Lorsque vous exécutez la commande suivante, le sous-domaine que vous avez spécifié à l'étape 2 est automatiquement généré et est enregistré avec le service de contrôleur Ingress.
ibmcloud oc nlb-dns create vpc-gen2 --cluster <cluster_name_or_ID> --lb-host <router_VPC_hostname> ``` -
Facultatif : Si vous souhaitez utiliser l'affûtage de contrôleur Ingress pour que des routes spécifiques soient gérées par un contrôleur Ingress spécifique, par exemple les routes privées ne doivent être admises qu'à un routeur privé, vous pouvez utiliser des libellés de route ou des libellés d'espace de nom pour spécifier la méthode d'affûtage. Pour ajouter le sélecteur lors de la création, incluez-le dans
ingresscontrolleryaml sousspec. Par exemple, pour permettre à un contrôleur Ingress de gérer uniquement les entrées / routes avec le libellétype=sharded, vous pouvez ajouter unrouteSelector. Pour plus d'informations, voir Éclatement des données du contrôleur Ingress.routeSelector: matchLabels: type: sharded- Pour ajouter des sélecteurs à un contrôleur Ingress existant, obtenez une liste de contrôleurs Ingress.
oc get ingresscontroller -n openshift-ingress-operator ``` 1. Ajoutez les sélecteurs pour transgresser les contrôleurs dans lesquels vous souhaitez utiliser le partage. ```sh {: pre} oc patch -n openshift-ingress-operator IngressController/<name> --type='merge' -p '{"spec":{"routeSelector":{"matchLabels":{"type":"sharded"}}}}' ``` 1. Notez qu'aucun sélecteur n'est ajouté à l'IngressController par défaut, de sorte que toutes les routes sont toujours admises au contrôleur Ingress par défaut sur le cluster. Vous pouvez utiliser la route appropriée ou un sélecteur de libellé d'espace de nom pour modifier ce comportement. Par exemple, pour ajuster le routeur par défaut pour ignorer ingress / routes avec le libellé `type=sharded`, exécutez la commande de correctif suivante. ```sh {: pre} oc patch -n openshift-ingress-operator IngressController/default --type='merge' -p '{"spec":{"routeSelector":{"matchExpressions":[{"key":"type","operator":"NotIn","values":["sharded"]}]}}}' ``` -
Créez un service Kubernetes
ClusterIPpour le déploiement de votre application. Le service fournit une adresse IP interne pour l'application sur laquelle le contrôleur Ingress peut envoyer du trafic.oc expose deploy <app_deployment_name> --name <app_service_name> -n <app_project> -
Configurez une route basée sur le type de terminaison TLS requise par votre application. Indiquez le nom d'hôte configuré à l'étape 5.
- Simple :
oc expose service <app_service_name> --hostname <subdomain> ``` * Passe-système : ```sh {: pre} oc create route passthrough --service <app_service_name> --hostname <subdomain> ``` Vous devez gérer des connexions HTTP/2 ? Après avoir créé la route, exécutez `oc edit route <app_service_name>` et remplacez la valeur `targetPort` de la route par `https`. Vous pouvez tester la route en exécutant `curl -I --http2 https://<route> --insecure`. * Remarque : si vous utilisez un domaine personnalisé, incluez les options `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur les routes périphériques « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-an-edge-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route edge --service <app_service_name> --hostname <subdomain> [--cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` * Ré-chiffrement : si vous utilisez un domaine personnalisé, incluez les options `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur la route de rechiffrement « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-a-reencrypt-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route reencrypt --service <app_service_name> --dest-ca-cert <destca.crt> --hostname <subdomain> [--cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` -
Vérifiez que la route configurée pour votre application est créée.
oc get routes -
Facultatif: personnalisez les règles de routage du contrôleur Ingress privé avec des configurations facultatives. Par exemple, vous pouvez utiliser des annotations « HAProxy » spécifiques à une route.
-
Pour créer des routes pour d'autres applications en utilisant le même sous-domaine, vous pouvez répéter les étapes 7 à 10 de sorte que le chemin soit généré par le même contrôleur Ingress privé. Si vous souhaitez créer des routes pour d'autres applications à l'aide d'un sous-domaine différent, répétez toutes les étapes de cette section pour créer un nouveau contrôleur Ingress privé.
Configuration de routes privées dans des clusters de VPC avec un noeud final de service cloud privé uniquement
Si votre cluster est créé sur l'infrastructure VPC et que vous avez activé le seul nœud final de service de cloud privé lors de la création du cluster, votre cluster est créé avec un contrôleur Ingress privé par défaut. Vous pouvez utiliser ce contrôleur Ingress pour créer des routes privées pour votre application.
-
Créez un service Kubernetes
ClusterIPpour le déploiement de votre application. Le service fournit une adresse IP interne pour l'application sur laquelle le contrôleur Ingress peut envoyer du trafic.oc expose deploy <app_deployment_name> --name my-app-svc -
Choisissez un domaine pour votre application.
- Domaine fourni par IBM : Si vous n'avez pas besoin d'un domaine personnalisé, un sous-domaine de routage est généré pour vous au format
<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. - Domaine personnalisé : pour spécifier un domaine personnalisé, utilisez votre fournisseur DNS ou IBM Cloud® Internet Services.
-
Récupère l'adresse IP externe du service de contrôleur Ingress privé dans chaque zone de la colonne ADRESSE IP EXTERNE. Notez que le service de contrôleur d'entrée dans la première zone où vous avez des nœuds worker est toujours nommé
router-default, et que les services de contrôleur d'entrée dans les zones que vous ajoutez ultérieurement à votre cluster ont des noms tels querouter-dal12.oc get svc -n openshift-ingress -
Créez un domaine personnalisé avec votre fournisseur DNS. Si vous souhaitez utiliser le même sous-domaine pour plusieurs services dans votre cluster, vous pouvez enregistrer un sous-domaine générique, tel que
*.example.com. -
Mettez en correspondance votre domaine personnalisé avec l'adresse IP privée des services du contrôleur Ingress en ajoutant les adresses IP en tant qu'enregistrements A.
-
- Domaine fourni par IBM : Si vous n'avez pas besoin d'un domaine personnalisé, un sous-domaine de routage est généré pour vous au format
-
Configurez une route en fonction de Type d'arrêt TLS requis par votre application. Si vous ne disposez pas d'un nom de domaine personnalisé, n'incluez pas l'option «
--hostname». Un sous-domaine de route est généré pour vous au format<service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. Si vous avez enregistré un sous-domaine générique, spécifiez un sous-domaine unique dans chaque route que vous créez. Par exemple, vous pouvez spécifier--hostname svc1.example.comdans cette route, et--hostname svc2.example.comdans une autre route.- Simple :
oc expose service <app_service_name> [--hostname <subdomain>] ``` * Passe-système : ```sh {: pre} oc create route passthrough --service <app_service_name> [--hostname <subdomain>] ``` Vous devez gérer des connexions HTTP/2 ? Après avoir créé la route, exécutez `oc edit route <app_service_name>` et remplacez la valeur `targetPort` de la route par `https`. Vous pouvez tester la route en exécutant `curl -I --http2 https://<route> --insecure`. * Remarque : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur les routes périphériques « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-an-edge-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route edge --service <app_service_name> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` * Ré-chiffrement : si vous utilisez un domaine personnalisé, incluez les options `--hostname`, `--cert` et `--key`, ainsi que, si vous le souhaitez, l'option `--ca-cert`. Pour plus d'informations sur les exigences relatives aux certificats « TLS », consultez la [documentation sur la route de rechiffrement « Red Hat OpenShift](https://docs.redhat.com/en/documentation/openshift_container_platform/4.21/html/ingress_and_load_balancing/routes#nw-ingress-creating-a-reencrypt-route-with-a-custom-certificate_secured-routes){: external} ». ```sh {: pre} oc create route reencrypt --service <app_service_name> --dest-ca-cert <destca.crt> [--hostname <subdomain> --cert <tls.crt> --key <tls.key> --ca-cert <ca.crt>] ``` -
Vérifiez que la route pour votre application est créée.
oc get routes -
Facultatif : Personnaliser les règles de routage par défaut à l'aide de configurations facultatives. Par exemple, vous pouvez utiliser des annotations « HAProxy » spécifiques à une route.
Déplacement de services de contrôleur d'entrée en travers des réseaux locaux virtuels dans des clusters classiques
Lorsque vous modifiez les connexions VLAN de vos nœuds de travail, ceux-ci sont connectés au nouveau VLAN et se voient attribuer de nouvelles adresses IP publiques ou privées. Toutefois, les services de contrôleur d'entrée ne peuvent pas migrer automatiquement vers le nouveau réseau local virtuel car ils reçoivent une adresse IP publique ou privée stable et portable à partir d'un sous-réseau appartenant à l'ancien réseau local virtuel. Lorsque vos noeuds worker et les contrôleurs d'entrée sont connectés à des réseaux locaux virtuels différents, les contrôleurs d'entrée ne peuvent pas acheminer le trafic réseau entrant vers des pods d'application sur vos noeuds worker. Pour déplacer les services de contrôleur Ingress vers un autre réseau local virtuel, vous devez créer le service de contrôleur Ingress sur le nouveau réseau local virtuel et supprimer le service de contrôleur Ingress sur l'ancien réseau local virtuel.
-
Créez un service de contrôleur Ingress sur le nouveau réseau local virtuel.
- Créez un fichier de configuration YAML pour un nouveau service de contrôleur Ingress. Indiquez la zone à laquelle le service de contrôleur d'entrée est déployé. Enregistrez le fichier sous
router-new-<zone>.yaml.- Service Public Ingress controller :
apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-zone: <zone> service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: public finalizers: - service.kubernetes.io/load-balancer-cleanup labels: app: router ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default router: router-default name: router-new-<zone> namespace: openshift-ingress spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: https selector: ingresscontroller.operator.openshift.io/deployment-ingresscontroller: default sessionAffinity: None type: LoadBalancer - Service de contrôleur Ingress privé :
apiVersion: v1 kind: Service metadata: annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-zone: <zone> service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: private finalizers: - service.kubernetes.io/load-balancer-cleanup labels: app: router ingresscontroller.operator.openshift.io/deployment-ingresscontroller: private router: router-private name: router-new-<zone> namespace: openshift-ingress spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: http - name: https port: 443 protocol: TCP targetPort: https selector: ingresscontroller.operator.openshift.io/deployment-ingresscontroller: private sessionAffinity: None type: LoadBalancer
- Service Public Ingress controller :
- Créez le nouveau service de contrôleur Ingress.
oc apply -f router-new-<zone>.yaml -n openshift-ingress ``` 1. Récupère l'adresse **ADRESSE IP EXTERNE** du nouveau service de contrôleur Ingress. Cette adresse IP provient d'un sous-réseau sur le nouveau VLAN. ```sh {: pre} oc get svc router-new -n openshift-ingress ``` Exemple de sortie pour un service public de contrôleur Ingress : ```sh {: screen} NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-new LoadBalancer 172.21.XX.XX 169.XX.XXX.XX 80:31049/TCP,443:30219/TCP 2m ``` 1. **Clusters multizones** : Si vous avez modifié les réseaux locaux virtuels pour les noeuds de travail dans plusieurs zones, répétez ces étapes pour créer un service de contrôleur Ingress sur les nouveaux réseaux locaux virtuels dans chaque zone. - Créez un fichier de configuration YAML pour un nouveau service de contrôleur Ingress. Indiquez la zone à laquelle le service de contrôleur d'entrée est déployé. Enregistrez le fichier sous
-
Notez le Nom d'hôte du contrôleur Ingress. Dans la sortie, recherchez le nom d'hôte formaté comme
<cluster_name>-<random_hash>-0001.<region>.containers.appdomain.cloud.ibmcloud oc nlb-dns ls -c <cluster_name_or_ID>Exemple de sortie
Hostname IP(s) Health Monitor SSL Cert Status SSL Cert Secret Name Secret Namespace mycluster-35366fb2d3d90fd50548180f69e7d12a-0001.us-east.containers.appdomain.cloud 169.XX.XXX.XX None created roks-ga-35366fb2d3d90fd50548180f69e7d12a-0001 default ... -
Ajoutez l'adresse IP du nouveau service de contrôleur Ingress que vous avez trouvé à l'étape 1 du nom d'hôte du contrôleur Ingress. Si vous avez créé des services pour plusieurs zones à l'étape 1, indiquez chaque adresse IP séparément dans les options répétées «
--ip».ibmcloud oc nlb-dns add -c <cluster_name_or_ID> --ip <new_IP> --nlb-host <subdomain>Votre service de contrôleur Ingress sur le nouveau réseau local virtuel est maintenant enregistré avec le domaine pour le contrôleur Ingress par défaut dans votre cluster, et peut acheminer les demandes entrantes vers les applications.
-
Récupère l'adresse IP de l'ancien service de contrôleur Ingress sur l'ancien réseau local virtuel. Clusters multizones : Si vous avez modifié les réseaux locaux virtuels pour les nœuds worker dans plusieurs zones, obtenez l'adresse IP du service de contrôleur Ingress dans chaque zone où les réseaux locaux virtuels ont été modifiés. Notez que le service de contrôleur d'entrée dans la première zone où vous avez des nœuds worker est toujours nommé
router-default, et que les services de contrôleur d'entrée dans les zones que vous ajoutez ultérieurement à votre cluster ont des noms tels querouter-dal12.oc get svc -n openshift-ingressExemple de sortie pour un cluster multizone :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-dal12 LoadBalancer 172.21.190.62 169.XX.XX.XX 80:32318/TCP,443:30915/TCP 51d router-default LoadBalancer 172.21.47.119 169.XX.XX.XX 80:31311/TCP,443:32561/TCP 78d router-internal-default ClusterIP 172.21.51.30 <none> 80/TCP,443/TCP,1936/TCP 78d -
Supprimez l'adresse IP de l'ancien service de contrôleur Ingress que vous avez trouvé à l'étape 2 à partir du nom d'hôte du contrôleur Ingress. Clusters multizones: incluez chaque adresse IP séparément dans les options «
--ip» répétées.ibmcloud oc nlb-dns rm classic -c <cluster_name_or_ID> --ip <old_IP> --nlb-host <hostname> -
Vérifiez que le nom d'hôte de votre contrôleur Ingress est maintenant enregistré avec la nouvelle adresse IP. Une fois que votre nom d'hôte de contrôleur Ingress est mis à jour avec l'adresse IP du nouveau service, aucune autre modification de votre contrôleur ou des routes n'est requise.
ibmcloud oc nlb-dns ls -c <cluster_name_or_ID> -
Supprimez le service de contrôleur Ingress sur l'ancien réseau local virtuel.
oc delete svc <old_router_svc> -n openshift-ingress -
Facultatif : si vous n'avez plus besoin des sous-réseaux sur les anciens VLAN, vous pouvez les retirer.
Gestion du port 80 sur le routeur par défaut OpenShift
Dans les clusters VPC créés à partir du 26 janvier 2026, le port 80 est bloqué par défaut pour tous les ALB. Les clusters créés avant cette date ne sont pas concernés.
Vous pouvez gérer le port 80 sur votre routeur par défaut OpenShift. Notez que toutes les modifications que vous apportez concernent tous les routeurs par défaut OpenShift de votre cluster.
-
Pour connaître l'état du port 80 sur votre routeur par défaut OpenShift, exécutez la commande suivante.
ibmcloud oc ingress security port80 get --cluster <cluster_name_or_ID> -
Pour activer le port 80 sur votre routeur par défaut OpenShift, exécutez la commande suivante.
ibmcloud oc ingress security port80 enable --cluster <cluster_name_or_ID> -
Pour désactiver le port 80 sur votre routeur par défaut OpenShift, exécutez la commande suivante.
ibmcloud oc ingress security port80 disable --cluster <cluster_name_or_ID>