In Kubernetes, le risorse Ingress sono spesso utilizzate come controller del traffico, fornendo accesso esterno ai servizi all’interno del cluster. L’Ingress è essenziale per reindirizzare il traffico in entrata verso il tuo servizio; tuttavia, potrebbero essere situazioni in cui vuoi impedire agli motori di ricerca di indicizzare il contenuto del tuo servizio: potrebbe essere un ambiente di sviluppo o qualcos’altro.
Questo articolo ti guiderà attraverso il processo di blocco dell’indicizzazione del sito su Kubernetes Ingress utilizzando il file robots.txt, impedendo agli bot di ricerca di rinunciare e indicizzare il tuo contenuto.
Prerequisiti
Per procedere con l’esempio, devi avere un’idea di base riguardo agli oggetti di base di Kubernetes, risorse Ingress e il controller ingresso ufficiale HAProxy. Avrai anche bisogno di accesso al cluster Kubernetes e delle autorizzazioni necessarie per apportare modifiche alla configurazione.
Tieni a mente che, a fini di questo articolo, presuppongo che il controller ingresso HAProxy sia impostato come controller predefinito. Altrimenti, se non hai selezionato HAProxy come controller predefinito, devi aggiungere l’opzione ingressClassName
a tutti gli esempi di codice Ingress.
Step 1: Crea una risorsa Ingress Kubernetes
Nella prima parte del nostro viaggio, creeriamo un piccolo risorsa Ingress per esporre il nostro servizio fuori dal cluster Kubernetes. Attenzione: per il momento, tutti i web crawlers avranno accesso al servizio. Per applicare il codice seguente, usare il comando 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
Step 2: Modifica della Configurazione Ingress
Il file robots.txt viene utilizzato per controllare come i motori di ricerca indicizzano i documenti. Il suo file specifica quali URL i crawler di motori di ricerca possono accedere sul tuo sito web. Il file base che limita l’accesso al servizio web è così descritto:
User-agent: *
Disallow: /
HAProxy non richiede che tu aggiunga questo file al tuo server web o sito web. questo può essere ottenuto con la seguente configurazione, che dovrebbe essere aggiunta alla sezione backend per il gruppo specifico di server:
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
Le annotazioni K8S regolamentano tutte le manipolazioni della configurazione frontend/backend di HAProxy per una singola risorsa Ingress. L’elenco completo delle annotazioni HAProxy può essere trovato nella documentazione ufficiale su GitHub.
Nel nostro caso, dobbiamo usare haproxy.org/backend-config-snippet
con lo snippet HAProxy per bloccare qualsiasi indicizzazione. Per fare questo, modifica, apri il tuo file YAML della risorsa Ingress, e aggiungi l’annotazione seguente alla sezione 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
...
Step 3: Applicare i Cambiamenti di Configurazione
Dopo aver modificato il file YAML di Ingress, salvalo e applicalo al cluster Kubernetes usando il comando kubectl: kubectl apply -f ingress.yaml
.
Il controller Ingress scoprirà le modifiche e aggiornarà la configurazione in conseguenza.
Step 4: Verifica della Configurazione
Esamina il file robots.txt generato per confermare che la preventiva dall’indicizzazione funziona correttamente. Il controller Ingress genera questo file in base alle annotazioni fornite.
Recupera l’IP esterno o il dominio associato al tuo risorsa Ingress e aggiungi /robots.txt alla URL. Esempio:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
Come vediamo, la risposta contiene un file robots.txt
che impedisce l’indicizzazione da parte di motori di ricerca.
Step 5: Verifica della Prevenzione dall’Indicizzazione
Per verificare che i motori di ricerca non stiano indicizzando il tuo sito, puoi eseguire una ricerca del tuo sito web sui motori di ricerca popolari. ricorda che i risultati delle ricerche a volte richiedono del tempo per riflettere i cambiamenti, quindi lo stato dell’indicizzazione potrebbe non essere aggiornato completamente subito.
Conclusione
Le annotazioni rendono facile evitare l’indicizzazione da parte di motori di ricerca durante l’uso di HAProxy Kubernetes Ingress. Aggiungendo l’annotazione appropriata al tuo risorsa Ingress, puoi impedire ai bot di ricerca di crawling e indicizzare il contenuto del tuo sito web. Un approcio simile può essere utilizzato con altri controller ingressi, come Nginx, Traefic e altri. Un’annotazione simile può anche essere utilizzata per le risorse K8S Gateway API, che stanno sostituendo progressivamente gli Ingress.
In conclusione, il file robots.txt è un metodo tradizionale per i creatori di siti web a specificare se i loro siti dovrebbero o meno essere crawled da diversi bot. Tuttavia, si è scoperto che i crawler AI da grosse aziende di modelli di linguaggio (LLM) spesso ignorano il contenuto di robots.txt e visitano il tuo sito comunque. Per evitare situazioni del genere, utilizza la sicurezza password, noindex o funzionalità di load balancer aziendali come load balancer di HAProxy AI-crawler, che può anche essere configurato come annotazione K8S.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy