在 Kubernetes 中, Ingress 리소스는 자주 트래픽 컨트롤러로 사용되며, cluseter 내에 있는 서비스에 대한 外界 액세스를 제공합니다. Ingress는 들어오는 트래픽을 서비스로 routing하는 데 필요합니다; 然而, 搜索引擎에서 서비스 コン텐츠의 인덱스를 阻止하고자 하는 scenarios가 있을 수 있습니다. 그れ Bird 개발 환경이나 다른 것입니다.
이 部落格 게시글은 robots.txt 파일을 사용하여 Kubernetes Ingress로 사이트의 인덱스를 阻止하는 과정을 설명해 드리고, search engine bots가 贵宾 크롤링 및 인덱스하는 것을 防止합니다.
과정 이전 사항
이 자격서를 진행하기 전에, Kubernetes 기본 오브젝트, Ingress 리소스, 그리고 공식 HAProxy ingress controller의 기본적인 이해를 갖추어야 합니다. 또한 Kubernetes cluseter에 접근하고 konfiguration changes를 만들 수 있는 필요한 권한이 있어야 합니다.
이 문서의 목적을 위해서는 HAProxy ingress controller가 기본 컨트롤러로 설정되었음을 기억해 두세요. 그렇지 않고 HAProxy를 기본 컨트롤러로 선택하지 않았다면, 모든 Ingress code examples에 ingressClassName
옵션을 추가해야 합니다.
과정 1: Ingress Kubernetes 리소스 생성
우리의 여행의 첫 부분에서, 우리의 서비스를 Kubernetes cluseter 外에 노출하기 위해 작은 Ingress 리소스를 설정할 것입니다. 주의: 현재 모든 웹 크롤러가 서비스에 アクセス할 수 있습니다. 아래의 코드를 적용하려면 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: Ingress Configuration 수정
robots.txt 파일은 search engines가 문서를 인덱싱하는 방법을 控制在하는 것을 도와줍니다. 이 파일은 search engine crawlers가 당신의 웹사이트에 어느 URL로 들어가 있을 수 있는지를 지정합니다. 웹 서비스에 대한 접근을 제한하는 가장 기본적인 파일은 다음과 같습니다:
User-agent: *
Disallow: /
HAProxy는 이 파일을 웹 서버나 웹사이트에 추가하는 것이 필요하지 않습니다. 이러한 구성을 서버 그룹의 backend 섹션에 추가하면 되ます:
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은 單一的 Ingress 리소스에 대해 HAProxy frontend/backend 구성을 어떻게 操縱할지 지정합니다. HAProxy 어노테이션의 compete list를 GitHub 공식 文档에서 찾을 수 있습니다.
Our case에서는 haproxy.org/backend-config-snippet
을 사용하여 인덱싱을 阻止하는 HAProxy snippet을 추가해야 합니다. 이를 위해, Ingress 리소스 YAML 파일을 편집하고 metadata section에 다음과 같은 어노테이션을 추가하십시오:
#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: Configuration Changes 적용
YAML 파일을 변경한 후에 저장하고 kubectl 명령어로 Kubernetes クラスタ에 적용합니다: kubectl apply -f ingress.yaml
Ingress コント롤러는 변경사항을 감지하고 相应的な設定을 更新합니다.
第四步:設定の確認
生成された robots.txt 파일을 inspec 하여 인덱싱 防ごと正しく 機能하는지 확인합니다. Ingress コント롤러は 제공한 어노테이션에 따라 이 파일을 생성합니다.
Ingress 리소스와 관련된 体外 IP 또는 도메인을 가져와 /robots.txt을 URL에 추가합니다. 예:
$ curl dzone-close-site-indexing-haproxy-example.referrs.me/robots.txt
User-agent: *
Disallow: /
正如我们所見, 답변은 robots.txt
파일을 포함하고 있으며 모든 search 인덱싱을 防ごと 行います.
第五步:索引防止のテスト
search engine があなたの 사이트를 indexing 하는지 확인하기 위해, 인기 있는 search engine에서 あなた의 웹사이트 search를 실행할 수 있습니다. search result가 변경을 반영하는 데 시간이 걸릴 수 있으므로, indexing 상태가 すぐに 완전하게 更新되지 않을 수 있습니다.
結論
Annotations를 사용하여 HAProxy Kubernetes Ingress에서 검색 엔진 인덱싱을 피하는 방법은 다음과 같습니다. 적절한 annotation을 आपक의 Ingress 리소스에 추가함으로써, 검색 엔진 봇들이 ваш 웹사이트의 내용을 크롤링하고 인덱싱하는 것을 금지할 수 있습니다. 이와 유사한 접근 방식은 Nginx, Traefik 및 다른 인그레스 컨트롤러와도 사용할 수 있습니다. 또한, K8S Gateway API 리소스에서도 유사한 annotation을 사용할 수 있으며, 이러한 리소스는 현재 인그레스를 대체하고 있습니다.
최종적으로, `robots.txt`는 웹사이트 생성자가 THEIR 사이트가 다양한 봇에 의해 크롤링되어야 하는지 여부를 지정하는 전통적인 방법입니다. 그러나, 큰 언어 모델(LLM) 회사들의 AI 크롤러는頻繁적으로 `robots.txt`의 내용을 무시하고 आपक의 사이트를 크롤링합니다. 이러한 상황을 피하려면, 패스워드 보안, noindex, 또는 엔터프라이즈 로드 밸런서 기능들처럼 HAProxy AI-crawler를 사용할 수 있으며, 이러한 기능들은 K8S annotation으로 구성할 수도 있습니다.
### 예제: Nginx Ingress에서 검색 엔진 인덱싱 금지
“`yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
namespace: default
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
location /robots.txt {
return 200 “User-agent: *\nDisallow: /\n”;
}
spec:
rules:
– host: example.com
http:
paths:
– backend:
service:
name: web-service
port:
number: 80
path: /
pathType: Prefix
“`
### HAProxy Ingress에서 검색 엔진 인덱싱 금지
HAProxy에서는 직접 `robots.txt`를 반환하는 대신, CORS 설정이나 다른 보안 설정을 사용할 수 있습니다.
“`yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: web-ingress
namespace: default
annotations:
haproxy.org/check: “true”
haproxy.org/check-http: “/health”
haproxy.org/cors-allow-origin: “*”
spec:
rules:
– host: example.com
http:
paths:
– backend:
service:
name: web-service
port:
number: 80
path: /
pathType: Prefix
“`
이와 같은 방법을 통해, 다양한 인그레스 컨트롤러와 K8S 리소스에서 검색 엔진 인덱싱을 피할 수 있습니다.
Source:
https://dzone.com/articles/close-site-search-indexing-via-kubernetes-haproxy