Ingress - NGINX dans IBM Cloud
Ingress est une méthode de découverte des services Kubernetes qui expose les services de votre cluster au réseau public ou privé en transmettant les demandes à vos applications et en équilibrant les charges de travail du trafic réseau. Ingress gère l'accès externe à vos services en fonction d'un ensemble de règles de routage que vous configurez et qui sont appliquées à l'ensemble du trafic entrant.
Lorsque vous mettez à disposition un cluster IBM Cloud Kubernetes Service, IBM fournit tous les composants requis pour utiliser Ingress. Ensuite, lorsque vous êtes prêt à démarrer, vous créez une ressource Ingress pour spécifier comment ces composants fonctionnent ensemble.
Pour plus d'informations sur Kubernetes Ingress, voir la documentationKubernetes.
Composants Ingress fournis par IBM
Tous les composants requis pour utiliser Ingress sont fournis pour vous lorsque vous créez un cluster. Vous spécifiez ces composants lorsque vous créez votre ressource Ingress.
- Ingress domain
- Classe Ingress
- Des équilibreurs de charge d'application (ALB)
- Certificat TLS
Ingress domain
Le domaine d'entrée par défaut est utilisé pour former un URL unique pour chaque application dans votre cluster, et c'est le domaine qui est référencé par les adresses IP de tous les ALB dans votre cluster. Lorsque vous créez un cluster, un sous-domaine Ingress unique est automatiquement créé et enregistré en tant que domaine par défaut. Vous pouvez remplacer le domaine par défaut par n'importe quel domaine existant dans votre cluster.
Vous pouvez également créer ou ajouter votre propre domaine enregistré auprès du fournisseur de domaine interne de IBM Cloud ou d'un fournisseur externe de IBM Cloud Internet Services.
Les ALB privés ne font pas référence au sous-domaine Ingress fourni par IBM et nécessitent un domaine personnalisé.
Le sous-domaine est enregistré sous la forme suivante.
<cluster_name>-<globally_unique_account_HASH>-0000.<region>.containers.appdomain.cloud
Le tableau ci-dessous décrit chaque partie du sous-domaine.
| Composant de sous-domaine | Description |
|---|---|
<cluster_name> |
Nom de votre cluster.
|
<globally_unique_account_HASH> |
Une valeur de hachage unique globale est créée pour votre compte IBM Cloud. Tous les sous-domaines que vous créez pour les équilibreurs de charge de réseau inclus dans les clusters de votre compte utilisent cette valeur de hachage unique globale. |
0000 |
Agit comme un compteur pour chaque sous-domaine créé dans votre cluster. |
<region> |
Région dans laquelle le cluster est créé. |
containers.appdomain.cloud |
Sous-domaine des sous-domaines IBM Cloud Kubernetes Service. |
Pour former une URL unique pour chaque application, les chemins d'accès à vos services d'application sont ajoutés à la route publique. Par exemple, voir l' URLde l'application suivante.
mycluster-a1b2cdef345678g9hi012j3kl4567890-0000.us-south.containers.appdomain.cloud/myapp1
Classe Ingress
La classe Ingress détermine le type de contrôleur Ingress utilisé. IBM fournit deux classes Ingress, l'une publique (public-iks-k8s-nginx) et l'autre privée (private-iks-k8s-nginx). Ces deux classes mettent en œuvre
le contrôleur d'entrée NGINX. Lorsque vous créez votre ressource Ingress, la classe Ingress que vous spécifiez détermine si vos applications sont exposées en public ou en privé.
Vous pouvez utiliser une classe Ingress personnalisée en créant votre propre ressource IngressClass.
Des équilibreurs de charge d'application (ALB)
Les ALB écoutent les demandes de service entrantes HTTP, HTTPS, ou TCP et transmettent ensuite ces demandes à l'app pod approprié selon les règles que vous définissez dans la ressource Ingress. Lorsque vous créez un cluster standard avec une infrastructure classique ou VPC, un équilibreur de charge d'application public et un équilibreur de charge d'application privé sont automatiquement créés pour vous dans chaque zone.
Équilibreurs de charge d'application dans les clusters classiques
Lorsque vous créez un cluster classique, un équilibreur de charge d'application public et un équilibreur de charge d'application privé sont automatiquement créés pour vous dans chaque zone. Les équilibreurs de charge d'application publics et privés dans les clusters classiques se voient affecter une adresse IP statique qui ne change pas pour la durée de vie du cluster.
Les équilibreurs de charge d'application publics partagent le même sous-domaine Ingress IBMqui est enregistré pour vous lorsque vous mettez à disposition un cluster, et chaque adresse IP individuelle de l'équilibreur de charge d'application
public est liée à ce sous-domaine. Pour trouver l'adresse IP d'un équilibreur de charge d'application public, exécutez ibmcloud ks ingress alb ls et vérifiez la zone Adresse IP de l'équilibreur de charge d'application dans la sortie.
Les équilibreurs de charge d'application privés dans les clusters classiques n'utilisent pas le sous-domaine Ingress fourni par IBMet ne sont pas activés automatiquement. Vous devez d'abord activer les équilibreurs de charge d'application
privés dans l'interface de ligne de commande, puis spécifier la classe private-iks-k8s-nginx dans votre ressource Ingress. Une fois les équilibreurs de charge d'application privés activés, vous pouvez trouver les adresses
IP privées en exécutant ibmcloud ks ingress alb ls et en vérifiant la zone ALB IP dans la sortie.
Si un pod d'équilibreur de charge d'application public ou privé est replanifié, il conserve la même adresse IP. Toutefois, le retrait d'une zone avec un équilibreur de charge d'application ou le retrait de tous les noeuds worker sur un réseau local virtuel dans cette zone entraîne le retrait de l'adresse IP de cet équilibreur de charge d'application.
Équilibreurs de charge d'application dans VPC
Lorsque vous créez un cluster VPC, un équilibreur de charge d'application public et un équilibreur de charge d'application privé sont automatiquement créés pour vous dans chaque zone. En outre, un équilibreur de charge VPC public est automatiquement créé en dehors de votre cluster dans votre VPC. Lorsque vous activez des équilibreurs de charge d'application privés dans votre cluster VPC, un équilibreur de charge VPC privé est également créé.
Les adresses IP des équilibreurs de charge d'application dans les clusters de VPC ne sont pas statiques et peuvent changer au fil du temps. Par conséquent, les équilibreurs de charge VPC placent l'adresse IP publique ou privée de vos équilibreurs de charge d'application derrière un nom d'hôte statique. Des noms d'hôte distincts sont appliqués pour les équilibreurs de charge d'application publics ou privés. Notez que le nom d'hôte de l'équilibreur de charge d'application est distinct du sous-domaine Ingress du cluster.
Pour trouver le nom d'hôte d'un équilibreur de charge d'application dans un cluster de VPC, exécutez ibmcloud ks ingress alb ls. Les noms d'hôte privés sont répertoriés uniquement si les équilibreurs de charge d'application
privés sont activés.
Exigences de noeud worker pour les équilibreurs de charge d'application
Au moins deux noeuds worker sont requis par zone dans votre cluster pour que les équilibreurs de charge d'application puissent fonctionner avec la haute disponibilité et recevoir des mises à jour périodiques. Les règles d'anti-affinité sur les pods d'équilibreur de charge d'application garantissent qu'un seul pod est planifié sur chaque noeud worker. Lorsque des mises à jour automatiques sont appliquées aux pods ALB, le pod est rechargé. Si vous ne disposez que d'un seul noeud worker et donc d'un seul pod d'équilibreur de charge d'application, le pod n'est pas automatiquement mis à jour pour éviter les interruptions de trafic et les mises à jour s'appliquent uniquement lorsque vous supprimez manuellement le pod et que vous replanifiez un nouveau pod. Le fait d'avoir au moins deux noeuds worker par zone permet d'éviter ce scénario.
Notez que si une zone tombe en panne, vous risquez de rencontrer des défaillances intermittentes au niveau des requêtes adressées à l'ALB Ingress dans cette zone.
Certificat par défaut TLS
Lorsque vous créez un cluster, un certificat TLS par défaut est créé et vous pouvez l'utiliser avec le sous-domaine Ingress fourni par IBM. Vous pouvez spécifier le certificat TLS par défaut ou un certificat personnalisé que vous fournissez dans la ressource Ingress.
Envisagez d'utiliser Secrets Manager pour gérer de manière centralisée et mettre à jour automatiquement vos certificats de sous-domaines Ingress et autres secrets.
La configuration d'Ingress avec des certificats TLS implique la création ou l'importation de secrets. Si vous souhaitez utiliser l'API d'ingestion IBM Cloud pour effectuer ces étapes, vous devez disposer d'une instance Secrets Manager par
défaut. Sinon, vous pouvez utiliser les commandes kubectl pour copier vos certificats.
Initiation à Ingress
Lorsque vous êtes prêt à utiliser Ingress dans votre cluster, créez une ressource Ingress pour configurer vos composants Ingress, définissez des règles pour les demandes de routage et spécifiez le chemin d'accès aux services d'application. Une ressource Ingress distincte est requise pour chaque espace de nom qui contient une application ou un service que vous souhaitez exposer.