Comment configurer un contrôleur d'entrée NGINX sur DigitalOcean Kubernetes

0
75

Le service Kubernetes géré de DigitalOcean simplifie le provisionnement et la maintenance des clusters Kubernetes. La plate-forme fournit une base prête à l'emploi pour les charges de travail conteneurisées avec une prise en charge en un clic des applications complémentaires courantes.

Dans cet article, nous allons montrer comment utiliser l'un de ces modules complémentaires pour configurer un contrôleur NGINX Ingress dans votre cluster. Les entrées fournissent un mécanisme pour acheminer le trafic externe vers vos services en fonction de règles telles que le nom d'hôte, le chemin et les en-têtes. NGINX Ingress est l'un des contrôleurs Ingress les plus populaires. il utilise le serveur Web NGINX comme proxy inverse qui dirige le trafic entrant vers le bon service Kubernetes.

Mise en route

Vous devez créer un cluster Kubernetes dans votre compte DigitalOcean avant de suivre ce tutoriel. Nous supposerons également que vous connaissez les bases de l'utilisation de Kubernetes, Kubectl et du panneau de configuration cloud de DigitalOcean.

Commencez par vous connecter à votre panneau de configuration DigitalOcean, en cliquant sur “Kubernetes” lien dans la barre latérale gauche, et en sélectionnant votre cluster sur la page qui s'affiche. Cliquez ensuite sur “Place de marché” pour afficher la liste des applications 1-Click disponibles.

Que sont les applications 1-Click ?

Les applications Kubernetes 1-Click de DigitalOcean fournissent des installations préconfigurées pour les applications en cluster les plus courantes. Les applications sont testées par DigitalOcean afin de garantir qu'elles fonctionnent avec chaque version de Kubernetes disponible.

Les applications disponibles utilisent le tableau Helm officiel de leur fournisseur. Les graphiques sont complétés par les paramètres par défaut fournis par DigitalOcean dans un référentiel GitHub open source. Le panneau de configuration DigitalOcean vous permet d'installer les cartes disponibles en un seul clic, offrant un moyen facile de se mettre en route avec les utilitaires essentiels. Vous n'avez pas besoin d'installer manuellement Helm et de configurer des référentiels de graphiques.

Installation de NGINX Ingress avec le 1- Cliquez sur App

Vous pouvez maintenant utiliser cette technique pour ajouter NGINX Ingress à votre cluster. Trouvez l'application sur le marché en faisant défiler la liste ou en utilisant la barre de recherche. Cliquez sur le bouton bleu “Installer” sur la carte de l'application et accusez réception de l'invite de confirmation.

La procédure d'installation peut prendre plusieurs minutes. La progression sera affichée dans l'interface utilisateur Web. Un nouvel équilibreur de charge sera automatiquement ajouté à votre compte lors du processus de configuration de l'application. Cet équilibreur de charge sera facturé au tarif standard et doit être utilisé comme point d'entrée externe pour votre cluster.

Votre contrôleur Ingress sera prêt à l'emploi une fois l'installation terminée. Comme l'application 1-Click est basée sur un graphique Helm, vous pouvez vérifier que l'application a été ajoutée en répertoriant les versions Helm dans votre cluster :

$ helm list –all-namespaces NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION ingress-nginx ingress-nginx 1 2022-05-30 14:46:37.591626084 +0000 UTC déployé ingress-nginx-4.1.0-beta.1 1.2.0-beta.1

La version d'ingress-nginx a été ajouté par DigitalOcean. Il apparaît comme déployé afin que vous puissiez commencer à créer des ressources Ingress pour acheminer le trafic vers vos services.

Utilisation de votre contrôleur Ingress

Vous pouvez tester votre contrôleur Ingress en créant des ressources simples de déploiement, de service et d'entrée Kubernetes :

apiVersion : apps/v1 kind : Deployment metadata : name : demo-deployment spec : répliques : 1 sélecteur : matchLabels : app : modèle d'application de démonstration : metadata : labels : app : spécification d'application demo : containers : – name : demo-container image : httpd:derniers ports : – containerPort : 80   — apiVersion : type v1 : métadonnées du service : nom : spécification du service de démonstration : sélecteur : application : ports de l'application de démonstration : – port : 80   — apiVersion : networking.k8s.io/v1 kind : Ingress metadata : nom : demo-ingress spec : ingressClassName : règles nginx : – hôte : example.com http : chemins : – chemin :/pathType : préfixe backend : service : nom : demo-service port : numéro : 80

Appliquez ce manifeste à votre cluster à l'aide de Kubectl :

$ kubectl apply -f app.yaml

Le champ spec.ingressClassName: nginx dans la ressource Ingress signifie qu'il sera enregistré avec le contrôleur NGINX Ingress nouvellement installé. Chaque implémentation de contrôleur a son propre nom de classe afin que vous puissiez utiliser plusieurs contrôleurs dans un cluster.

Configurez ensuite un enregistrement DNS pour example.com qui pointe vers l'adresse IP externe de votre équilibreur de charge DigitalOcean. Vous pouvez le trouver en accédant à Mise en réseau > Équilibreurs de charge dans le panneau de configuration en ligne ou en exécutant la commande Kubectl suivante :

$ kubectl get service ingress-nginx-controller –namespace=ingress-nginx NOM TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ingress-nginx-controller LoadBalancer XXX.XXX.XXX.XXX 1.2.3.4 80:30547/TCP ,443:32027/TCP 1d

La visite de example.com devrait afficher la page Web Apache par défaut une fois que le changement DNS prend effet. Votre contrôleur Ingress reçoit la demande de l'équilibreur de charge. Il utilise vos ressources Ingress pour sélectionner un service approprié, ce qui fait que les requêtes adressées à example.com se retrouvent avec vos conteneurs Apache.

Vous pouvez désormais suivre la documentation Kubernetes pour créer des ressources Ingress qui expriment les règles de routage de service nécessaires pour vos applications réelles.

Ajout de HTTPS

Les points de terminaison sur les clusters de production doivent être protégés avec TLS. Vous pouvez configurer des certificats HTTPS automatisés en ajoutant Cert-Manager à votre cluster, aux côtés du contrôleur d'entrée NGINX.

Cert-Manager est disponible en tant qu'application 1-Click supplémentaire sur DigitalOcean Marketplace. Vous pouvez répéter la procédure utilisée précédemment : rendez-vous sur la page de présentation de votre cluster dans le panneau de configuration, cliquez sur le bouton “Place de marché” puis recherchez et installez l'application.

Une fois l'installation terminée, créez un émetteur de certificats qui sera utilisé pour demander des certificats Let's Encrypt :

apiVersion : cert-manager.io/v1 kind : ClusterIssuer metadata : name : letsencrypt-staging spec : acme : serveur : https://acme-staging-v02.api.letsencrypt.org/directory e-mail : example@example.com privateKeySecretRef : nom : letsencrypt-staging solveurs : – http01 : ingress : classe : nginx

Remplacez le champ spec.acme.email par votre propre adresse e-mail afin que Let's Encrypt puisse vous contacter avec des notifications concernant vos certificats. Appliquez ensuite le manifeste à votre cluster :

$ kubectl apply -f issuer.yml

Vous pouvez maintenant mettre à jour votre ressource Ingress avec le support HTTPS :

apiVersion : networking.k8s.io/v1 kind : Ingress metadata : nom : demo-ingress annotations : kubernetes.io/ingress.class : ingress cert-manager.io/cluster-issuer : letsencrypt-staging spec : ingressClassName : règles nginx : – host : example.com http : paths : – path :/pathType : Prefix backend : service : name : demo-service port : number : 80 tls : – hosts : – example.com

Le nouveau champ spec.tls spécifie qu'un certificat doit être acquis pour le domaine example.com. L'émetteur du certificat letsencrypt-staging sera utilisé, tel que défini par l'annotation cert-manager.io/cluster-issuer.

L'exemple ci-dessus utilise le point de terminaison intermédiaire de Let's Encrypt, qui est recommandé pendant que vous testez votre déploiement. Vous pouvez passer à l'utilisation de vrais certificats en créant un deuxième émetteur qui cible les terminaux de production. Copiez le manifeste de l'émetteur ci-dessus, remplacez letsencrypt-staging par letsencrypt-production et remplacez l'URL spec.acme.server par https://acme-v02.api.letsencrypt.org/directory. Ensuite, vous pouvez mettre à jour l'annotation cert-manager.io/cluster-issuer de votre ressource Ingress pour référencer votre nouvel émetteur letencrypt-production.

Gestion de votre installation NGINX Ingress

Malheureusement, les applications en un clic de DigitalOcean ne font que simplifier l'expérience d'installation. Vous êtes seul dans la gestion et la mise à jour de vos applications. Comme les applications sont simplement des graphiques Helm préconfigurés, ce n'est pas aussi onéreux qu'il n'y paraît.

Vous pouvez utiliser votre installation CLI Helm locale pour effectuer une mise à niveau vers les nouvelles versions de NGINX Ingress :

$ helm upgrade ingress-nginx ingress-nginx/ingress-nginx –namespace ingress-nginx –values ​​values.yml

Vous devez d'abord télécharger le fichier values.yml à partir du référentiel Marketplace de DigitalOcean. Cela garantira que la nouvelle version est configurée avec vos paramètres existants. Vous pouvez également utiliser cette procédure pour personnaliser votre contrôleur Ingress avec vos propres paramètres après l'installation initiale. Modifiez le fichier values.yml, puis exécutez la commande de mise à niveau helm.

Suppression de l'entrée NGINX de votre cluster

Vous pouvez supprimer complètement NGINX Ingress de votre cluster en désinstallant la version Helm de l'application et en supprimant l'espace de noms qui a été créé :

$ helm uninstall ingress-nginx –namespace ingress-nginx $ kubectl delete namespace ingress-nginx

L'équilibreur de charge doit être nettoyé automatiquement. Vous pouvez le supprimer manuellement depuis le menu Réseau > Page Équilibreurs de charge dans le panneau de configuration DigitalOcean si nécessaire. Cliquez sur “Plus” à côté de l'équilibreur de charge, puis choisissez “Destroy” dans le menu déroulant. Vous ne pourrez pas récupérer l'adresse IP qui a été attribuée.

Installation de NGINX Ingress avec Doctl

Vous peut installer des applications en 1 clic à l'aide du client de ligne de commande Doctl de DigitalOcean. Commencez par récupérer la liste de vos clusters Kubernetes :

$ doctl kubernetes cluster list ID Nom Région Version Auto Upgrade Status Node Pools 946407f3-abcd-123a-456b-6a0ec60f93bf demo-k8s lon1 1.22.8-do.1 false running démo-k8s-1

Exécutez ensuite la commande suivante pour ajouter NGINX Ingress à votre cluster. Remplacez <cluster-id> avec l'ID affiché ci-dessus.

$ doctl kubernetes 1-click install <cluster-id> –1-clicks ingress-nginx

Utilisez cette alternative si vous souhaitez également installer Cert-Manager :

$ doctl kubernetes 1-click install <cluster-id> –1-clicks ingress-nginx,cert-manager

En plus d'utiliser Doctl, vous pouvez également interagir directement avec l'API DigitalOcean pour ajouter par programmation de nouvelles applications à votre cluster.

Résumé

Vous pouvez rapidement ajouter le contrôleur NGINX Ingress à un cluster DigitalOcean Kubernetes en utilisant l'application 1-Click disponible sur le Marketplace. Cela déploie une version préconfigurée du graphique NGINX Ingress Helm avec une configuration prête à l'emploi.

Bien que cela accélère le provisionnement initial, vous devez toujours exécuter manuellement les commandes Helm pour gérer et mettre à niveau votre installation. L'application 1-Click vise à trouver un équilibre entre la facilité d'utilisation et la personnalisation, en veillant à ce que vous ne soyez pas enfermé dans un ensemble spécifique de paramètres.

LIRE LA SUITE

  • ’ Devriez-vous augmenter la puissance de transmission de votre routeur Wi-Fi ?
  • › N'achetez pas de répéteur Wi-Fi : achetez plutôt celui-ci
  • › 10 fonctionnalités YouTube que vous devriez utiliser
  • &rsaquo ; Un aimant peut-il vraiment endommager mon téléphone ou mon ordinateur ?
  • › Quels accessoires pour smartphone valent la peine d'être achetés ?
  • › 10 nouvelles fonctionnalités de Windows 11 que vous devriez utiliser