No Kubernetes, recursos Ingress são frequentemente usados como controladores de tráfego, fornecendo acesso externo aos serviços no cluster. O Ingress é essencial para encaminhar tráfego entrante para o seu serviço; no entanto, pode haver situações em que você queira evitar que os mecanismos de busca indexem o conteúdo de seu serviço: pode ser um ambiente de desenvolvimento ou algo similar.
Este post do blog vai guiar você pelo processo de bloquear a indexação do site no Kubernetes Ingress usando o arquivo robots.txt, evitando que os robôs de busca crawlem e indexem o seu conteúdo.
Pré-requisitos
Para prosseguir com o tutorial, você deve ter um entendimento básico dos objetos básicos do Kubernetes, recursos Ingress e do controlador Ingress oficial HAProxy. Você também precisará de acesso ao cluster Kubernetes e permissões necessárias para fazer mudanças de configuração.
Note que, para fins deste artigo, assume que o controlador HAProxy de ingressos está configurado como o controlador padrão. Caso contrário, se você não selecionou o HAProxy como o controlador padrão, você deve adicionar a opção ingressClassName
a todos os exemplos de código Ingress.
Passo 1: Criar um Recurso Ingress no Kubernetes
No primeiro trecho de nossa viagem, vamos configurar um pequeno recurso Ingress para expor nosso serviço fora do cluster Kubernetes. Atenção: por enquanto, todos os web crawlers terão acesso ao serviço. Para aplicar o código abaixo, use o 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
Passo 2: Modifique a Configuração do Ingress
O arquivo robots.txt é usado para controlar como os motores de busca indexam documentos. Seu arquivo especifica quais URLs os crawlers de motores de busca podem acessar no seu site. O arquivo mais básico que restringe o acesso ao serviço web parece assim:
User-agent: *
Disallow: /
O HAProxy não exige que você adicione este arquivo a seu servidor web ou site. Isso pode ser alcançado com a seguinte configuração, que deve ser adicionada à seção backend para o grupo específico de servidores:
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
As Anotações K8S regulam todas as manipulações da configuração frontend/backend do HAProxy para um único recurso Ingress. A lista completa das anotações HAProxy pode ser encontrada na documentação oficial no GitHub.
No nosso caso, precisamos usar haproxy.org/backend-config-snippet
com o snippet HAProxy para bloquear qualquer indexação. Para isso, edite, abra o arquivo YAML de recurso Ingress, e adicione a seguinte anotação à seção 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
...
Passo 3: Aplique as mudanças de configuração
Após alterar o arquivo YAML de Ingress, salve-o e aplique-o ao cluster Kubernetes com o comando kubectl: kubectl apply -f ingress.yaml
.
O controlador de Ingress detectará as mudanças e atualizará a configuração de acordo.
Passo 4: Verifique a Configuração
Examine o arquivo robots.txt gerado para confirmar que a prevenção de indexação está funcionando corretamente. O controlador de Ingress gera este arquivo baseado na anotação que você fornece.
Retire o IP externo ou domínio associado com seu recurso Ingress e adicione /robots.txt à URL. Exemplo:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
Como podemos ver, a resposta contém um arquivo robots.txt
que impede qualquer indexação de busca.
Passo 5: Teste a Prevenção de Indexação
Para verificar que as motores de busca não estão indexando seu site, você pode executar uma busca por seu site em motores de busca populares. Note que os resultados de busca às vezes demoram para refletir mudanças, portanto, o status de indexação pode não ser totalmente atualizado ainda.
Conclusão
As anotações tornam fácil evitar o indiceamento de motores de busca enquanto se utiliza do HAProxy Kubernetes Ingress. Adicionando a anotação apropriada ao seu recurso Ingress, você pode proibir que os motores de busca de bots indexem e rastrem o conteúdo do seu site. Uma abordagem semelhante pode ser usada com outros controladores de ingressos, como Nginx, Traefic e outros. Uma anotação semelhante pode também ser usada para recursos K8S Gateway API, que estão atualmente substituindo os Ingresses.
Como nota final, o arquivo robots.txt é uma maneira tradicional para criadores de sites especificarem se os sites devem ou não ser rastreados por vários bots. No entanto, afinal de contas, os rastreadores AI de modelos de linguagem de grande escala (LLM) frequentemente ignoram o conteúdo do arquivo robots.txt e rastreiam seu site mesmo assim. Para evitar essas situações, utilize segurança de senha, noindex ou recursos de balanceador de carga empresarial como balanceador de carga do HAProxy, que pode ser configurado também como uma anotação K8S.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy