In Kubernetes werden Ingress-Ressourcen häufig als Verkehrssteuerungen verwendet, um externe Zugriff auf Dienste innerhalb des Clusters zu ermöglichen. Ingress ist wichtig für die Weiterleitung eingehender Verkehrsströme zu Ihrem Dienst; allerdings könnten es sich in manchen Fällen um Szenarien handeln, in denen Sie den Indexieren von Suchmaschinen Ihrer Dienstinhalte verhindern wollen: es könnte sich um ein Entwicklungsumfeld oder etwas Ähnliches handeln.
In diesem Blogbeitrag werden wir Ihnen Schritte durchführen, um die Indizierung Ihrer Website auf dem Kubernetes Ingress mittels einer robots.txt-Datei zu blockieren, um das Cachen und Indizieren Ihres Inhalts durch Suchmaschinenbots zu verhindern.
Voraussetzungen
Um mit dem Tutorial fortzufahren, sollten Sie grundlegende Kenntnisse der Kubernetes-Basisobjekte, Ingress-Ressourcen und des offiziellen HAProxy-Ingress-Controllers haben. Außerdem müssen Sie Zugriff auf den Kubernetes-Cluster und die notwendigen Berechtigungen haben, um Konfigurationsänderungen durchzuführen.
Beachten Sie, dass ich in diesem Artikel davon ausgehe, dass der HAProxy-Ingress-Controller als Standardcontroller festgelegt ist. Ansonsten müssen Sie, wenn Sie keinen HAProxy als Standardcontroller ausgewählt haben, die Option ingressClassName
zu allen Ingress-Codebeispielen hinzufügen.
Schritt 1: Erstellen einer Ingress-Kubernetes-Ressource
In der ersten Hälfte unserer Reise setzen wir uns eine kleine Ingress-Ressource, um unser Service außerhalb des Kubernetes-Clusters öffentlich zugänglich zu machen. Beachten Sie: Derzeit haben alle Web-Crawler Zugriff auf den Service. Um den untenstehenden Code anzuwenden, verwenden Sie den Befehl 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
Schritt 2: Ändern Sie die Ingress-Konfiguration
Das robots.txt Datei wird verwendet, um zu steuern, wie Suchmaschinen Dokumente indizieren. Dieses Datei legt fest, welche URLs Suchmaschinen-Crawler auf Ihrer Webseite zugänglich sind. Die grundlegendste Datei, die den Zugriff auf den Webdienst beschränkt, sieht wie folgt aus:
User-agent: *
Disallow: /
HAProxy erfordert nicht, dass Sie diese Datei Ihrem Web-Server oder Ihrer Webseite hinzufügen. Dies kann mit folgender Konfiguration erreicht werden, die in die Backend-Sektion für die spezifische Gruppe von Server hinzugefügt werden sollte:
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 Annotations regeln alle Manipulationen der HAProxy Frontend/Backend-Konfiguration für eine einzelne Ingress-Ressource. Die vollständige Liste der HAProxy-Annotierungen kann in der offiziellen Dokumentation auf GitHub gefunden werden.
In unserem Fall müssen wir die haproxy.org/backend-config-snippet
Annotation verwenden, mit dem HAProxy-Snippet für das Blockieren von Indizierung. Um dies zu tun, bearbeiten, öffnen Sie Ihre Ingress-Ressource YAML-Datei und fügen Sie dem Metadatenabschnitt die folgende Annotation hinzu:
#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
...
Schritt 3: Anwenden der Konfigurationsänderungen
Nachdem Sie die Ingress-YAML-Datei geändert haben, speichern Sie sie und führen Sie mit dem kubectl-Befehl auf dem Kubernetes-Cluster an: kubectl apply -f ingress.yaml
.
Der Ingress-Controller wird die Änderungen erkennen und die Konfiguration entsprechend aktualisieren.
Schritt 4: Überprüfen der Konfiguration
Prüfen Sie die generierte robots.txt-Datei, um zu bestätigen, dass die Indexierungsvermeidung ordnungsgemäß funktioniert. Der Ingress-Controller erstellt diese Datei auf Basis der von Ihnen bereitgestellten Anmerkungen.
holen Sie sich die externe IP oder die Domain, die mit Ihrem Ingress-Resource assoziiert ist, und fügen Sie /robots.txt zu der URL hinzu. Beispiel:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
Wie wir sehen können, enthält die Antwort eine robots.txt
-Datei, die jegliche Suchindexierung verhindert.
Schritt 5: Testen der Indexierungsvermeidung
Um zu überprüfen, dass Suchmaschinen Ihre Webseite nicht indizieren, können Sie Suchmaschinen-Suche für Ihre Webseite durchführen. Beachten Sie, dass Suchresultate manchmal einige Zeit brauchen, um Änderungen zu widerspiegeln, daher kann der Indexierungsstatus nicht sofort vollständig aktualisiert sein.
Fazit
Anmerkungen erleichtern das Vermeiden von Suchmaschinenindizierungen beim Einsatz von HAProxy Kubernetes Ingress. Durch Hinzufügen der entsprechenden Anmerkung zu Ihrem Ingress-ResOURCE können Sie Suchmaschinenbots von der Krawallung und Indizierung Ihres Webseiteninhalts abschließen. Ein ähnliches Verfahren kann auch mit anderen Ingress-Controller wie Nginx, Traefic und anderen angewendet werden. Eine ähnliche Anmerkung kann auch für K8S Gateway API-Ressourcen verwendet werden, die aktiv Ingress abgelöst werden.
Als letztes Vermerk, robots.txt ist eine lange tradierte Methode für Webseitenbetreiber, um anzugeben, ob ihre Seiten von verschiedenen Bots durchsucht werden sollen. Allerdings ergibt sich, dass AI-Crawler von großen Sprachmodellen (LLM) Unternehmen häufig die Inhalte von robots.txt ignorieren und Ihre Seite trotzdem krawallen. Um solche Situationen zu vermeiden, verwende Passwortsicherheit, noindex oder Unternehmensfunktionen wie Lastverteiler wie HAProxy AI-Crawler, die auch als K8S-Anmerkung eingestellt werden können.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy