Dans Kubernetes, les ressources Ingress sont fréquemment utilisées comme contrôleurs de trafic, offrant un accès externe aux services situés dans le cluster. Ingress est essentiel pour routiner le trafic entrant vers votre service ; cependant, il peut y avoir des scénarios où vous souhaitez empêcher les moteurs de recherche d’indexer le contenu de votre service : cela pourrait s’agir d’un environnement de développement ou autre chose.
Ce billet de blog vous guidera à travers le processus de blocage de l’indexation de votre site sur Kubernetes Ingress en utilisant un fichier robots.txt, empêchant les robots de moteur de recherche de crawler et d’indexer votre contenu.
Prérequis
Pour suivre ce tutoriel, vous devriez avoir une base de connaissance de la structure de base de Kubernetes, des ressources Ingress et du contrôleur officiel HAProxy pour Ingress. Vous aurez également besoin d’accès au cluster Kubernetes et des permissions nécessaires pour faire des changements de configuration.
Notez que pour les besoins de cet article, je suppose que le contrôleur HAProxy pour Ingress est configuré en tant que contrôleur par défaut. Sinon, si vous n’avez pas sélectionné HAProxy comme contrôleur par défaut, vous devez ajouter l’option ingressClassName
à tout exemple de code Ingress.
Étape 1 : Créer une ressource Ingress Kubernetes
Dans la première partie de notre voyage, nous configurons une petite ressource Ingress pour exposer notre service en dehors du cluster Kubernetes. Attention : pour le moment, tous les web crawlers auront accès au service. Pour appliquer le code ci-dessous, utilisez la commande kubectl apply -f ingress.yaml
.
# file: ingress.yaml
---
apiVersion networking.k8s.io/v1
kind Ingress
metadata
name dzone-close-site-indexing-haproxy-example
annotations
cert-manager.io/cluster-issuer letsencrypt-prod
spec
rules
host dzone-close-site-indexing-haproxy-example.referrs.me
http
paths
path /
pathType Prefix
backend
service
name dzone-close-site-indexing-haproxy-example-service
port
number80
tls
hosts
dzone-close-site-indexing-haproxy-example.referrs.me
secretName dzone-close-site-indexing-haproxy-example
Étape 2 : Modifier la configuration Ingress
Le fichier robots.txt est utilisé pour contrôler comment les moteurs de recherche indexent les documents. Ce fichier spécifie les URL que les crawlers de moteurs de recherche peuvent accéder sur votre site Web. Le fichier le plus basique qui limite l’accès au service Web ressemble à ceci :
User-agent: *
Disallow: /
HAProxy n’exige pas que vous ajoutiez ce fichier à votre serveur Web ou site Web. Cela peut être réalisé avec la configuration suivante, qui doit être ajoutée à la section backend pour le groupe spécifique de serveurs :
acl robots_path path_beg /robots.txt
http-request return status 200 content-type "text/plain" lf-string "User-agent: *\nDisallow: /\n" if robots_path
Les annotations K8S régissent toutes les manipulations de la configuration frontend/backend de HAProxy pour une seule ressource Ingress. La liste complète des annotations HAProxy peut être trouvée dans la documentation officielle sur GitHub.
Dans notre cas, nous devons utiliser haproxy.org/backend-config-snippet
avec le snippet HAProxy pour bloquer toute indexation. Pour ce faire, éditez, ouvrez votre fichier YAML de ressource Ingress, et ajoutez l’annotation suivante à la section metadata :
#file: ingress.yaml
---
apiVersion networking.k8s.io/v1
kind Ingress
metadata
name dzone-avoid-indexing-haproxy-example
annotations
…
haproxy.org/backend-config-snippet
acl robots_path path_beg /robots.txt
http-request return status 200 content-type "text/plain" lf-string "User-agent: *\nDisallow: /\n" if robots_path
spec
...
Étape 3 : Appliquer les modifications de configuration
Après avoir modifié le fichier YAML d’Ingress, enregistrez-le et appliquez-le au cluster Kubernetes en utilisant la commande kubectl : kubectl apply -f ingress.yaml
.
Le contrôleur Ingress détectera les modifications et mettra à jour la configuration en conséquence.
Étape 4 : Vérifier la Configuration
Examinez le fichier robots.txt généré pour confirmer que la prévention d’indexation fonctionne correctement. Le contrôleur Ingress génère ce fichier en fonction des annotations que vous fournissez.
Récupérez l’IP externe ou le domaine associé à votre ressource Ingress et ajoutez /robots.txt à l’URL. Exemple :
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
Comme nous pouvons le voir, la réponse contient un fichier robots.txt
qui empêche toute indexation par les moteurs de recherche.
Étape 5 : Tester la Prévention d’Indexation
Pour vérifier que les moteurs de recherche neindexent pas votre site, vous pouvez effectuer une recherche sur votre site sur les moteurs de recherche populaires. Notez que les résultats de recherche peuvent prendre du temps pour refléter les modifications, donc l’état d’indexation peut ne pas être pleinement mis à jour tout de suite.
Conclusion
Les annotations facilitent l’évitement de l’indexation par les moteurs de recherche lors de l’utilisation d’HAProxy Kubernetes Ingress. En ajoutant l’annotation appropriée à votre ressource Ingress, vous pouvez interdire aux robots de moteurs de recherche de crawler et d’indexer le contenu de votre site web. Une approche similaire peut être utilisée avec d’autres contrôleurs d’ingress, tels que Nginx, Traefic et d’autres encore. Une annotation similaire peut également être utilisée pour les ressources K8S Gateway API, qui remplacent activement les Ingress.
Enfin, robots.txt est une méthode honorée depuis longtemps pour que les créateurs de sites web indiquent si leur site doit être crawlé par divers bots ou non. Cependant, il semble que les crawlers d’IA de grande plateforme de langue (LLM) ignorent souvent le contenu de robots.txt et crawlent votre site malgré tout. Pour éviter de telles situations, utilisez la sécurité par mot de passe, noindex, ou les fonctionnalités d’équilibreur de charge d’entreprise comme load balancer de HAProxy AI-crawler, qui peuvent également être configurées comme une annotation K8S.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy