In Kubernetes worden Ingress-resources vaak gebruikt als verkeerstellers, die externe toegang bieden tot services binnen het cluster. Ingress is essentieel voor het doorsturen van inkomende verkeer naar uw service; echter, er kunnen situaties zijn waarin u wilt voorkomen dat zoekmachines de indexering van uw service’s inhoud verhinderen: het zou een ontwikkelingsomgeving kunnen zijn of iets anders.
Dit blogartikel zal u door de procedure leiden om de indexering van uw site op Kubernetes Ingress te blokkeren met behulp van een robots.txt-bestand, waardoor zoekmachinebotten geen crawling en indexering van uw inhoud kunnen uitvoeren.
Voorwaarden
Om door te gaan met het handleiding, moet u een basisbegrip van Kubernetes basisobjecten, Ingress-resources en het officiële HAProxy ingress controller hebben. U moet ook toegang hebben tot het Kubernetes cluster en de nodige rechten om configuratiewijzigingen uit te voeren.
Onthoud dat ik in het kader van dit artikel assumeer dat de HAProxy ingress controller is ingesteld als standaardcontroller. Anders, als u HAProxy niet als standaardcontroller heeft gekozen, moet u de ingressClassName
optie toevoegen aan alle Ingress-codevoorbeelden.
Stap 1: Maak een Ingress Kubernetes resource aan.
In de eerste stap van ons pad zal het een kleine Ingress-bron configureren om onze service buiten het Kubernetes-cluster beschikbaar te stellen. Let op: voorlopig zal elke webcrawler toegang tot de service hebben. Om het onderstaande codepakket toe te passen, gebruikt u het commando 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
Stap 2: Wijzig de Ingress-configuratie
Het robots.txt bestand wordt gebruikt om te controleren hoe zoekmachines documenten indexeren. Het bestand geeft aan welke URL’s zoekmachinecrawlers op uw website kunnen raken. Het basisste bestand dat toegang tot de web service beperkt, ziet er als volgt uit:
User-agent: *
Disallow: /
HAProxy vereist geen toevoeging van dit bestand aan uw webserver of website. Dit kan worden bereikt met de volgende configuratie, die moet worden toegevoegd aan de backend-sectie voor de specifieke groep van servers:
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
K8S-annotaties regelen alle bewerkingen van de HAProxy frontend/backend-configuratie voor een enkele Ingress-bron. De volledige lijst met HAProxy-annotaties kan u vinden in de officiële documentatie op GitHub.
In ons geval moeten we haproxy.org/backend-config-snippet
gebruiken met de HAProxy-snippet voor het blokkeren van elke indexering. Om dit te doen, bewerkt u uw Ingress-bronbestand YAML en voegt u de volgende annotatie toe aan de metadata-sectie:
#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
...
Stap 3: Toepassen van de configuratiewijzigingen
Nadat u het Ingress YAML bestand heeft aangepast, sla het op en plaats het in het Kubernetes cluster met de kubectl commando: kubectl apply -f ingress.yaml
.
De Ingress controller zal de wijzigingen detecteren en de configuratie overeenkomstig bijwerken.
Stap 4: Controleer de Configuratie
Bekijk het gegenereerde robots.txt bestand om te controleren of de indexering wordt voorkomen. Het Ingress controller genereert dit bestand op basis van de annotatie die u opgeeft.
Haal het externe IP of domein van uw Ingress resource op en voeg /robots.txt toe aan de URL. Voorbeeld:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
Zoals we kunnen zien, bevat het antwoord een robots.txt
bestand dat elke zoekindexering voorkomt.
Stap 5: Test Indexering Voorkoming
Om te controleren of zoekmachines uw site niet indexeren, kun je een zoekopdracht voor uw website uitvoeren op populair zoekmachines. Onthoud dat de zoekresultaten soms even tijd nodig hebben om wijzigingen weer te geven, dus de indexering status kan niet direct worden bijgewerkt.
Conclusie
Annotaties maken het gemakkelijker om zoekmachineindexering te vermijden terwijl HAProxy Kubernetes Ingress gebruikt wordt. door de juiste annotatie aan uw Ingress-bron toe te voegen, kunt u zo zoekmachinebots verbieden om uw websitecontent te crawlen en te indexeren. Een soortgelijk benadering kan ook worden toegepast op andere ingresscontrollers, zoals Nginx, Traefic en andere. Een soortgelijke annotatie kan ook worden gebruikt voor K8S Gateway API-bronnen, die actief Ingressen vervangen.
Als laatste opmerking, robots.txt is een oud vertrouwd middel voor websiteauteurs om aan te geven of hun sites door verschillende bots gecrawld en geindexeerd moeten worden. Het is echter uitgekomen dat AI-crawlers van grote taalmodellen (LLM) bedrijven vaak de inhoud van robots.txt negeren en uw site welke kost wat crawlen. Om dergelijke situaties te vermijden, gebruik wachtwoordveiligheid, noindex of enterprise load balancer-functies zoals HAProxy AI-crawler, die ook als K8S-annotatie worden geconfigureerd.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy