Kubernetes Ingress Controller Advanced 구성: Snippet 활용편
NGINX Ingress Controller 는 Kubernetes 환경에서 애플리케이션 라우팅 및 로드 밸런싱을 담당하는 중요한 역할을 수행합니다.
그러나 많은 사용자들은 기본 설정 이상의 고급(Advanced) 기능을 필요로 합니다. 이에 따라 NGINX Ingress Controller를 보다 효율적으로 활용하기 위한 다양한 기능과 설정이 필요합니다.
이번 포스트에서는 Kubernetes NGINX Ingress Controller의 Advanced 구성에 초점을 맞춰 살펴보겠습니다. 특히, Snippet을 활용하여 NGINX Ingress Controller를 더욱 효율적으로 구성하는 방법에 대해 알아보겠습니다.
목차
1. Kubernetes NGINX Ingress Controller – Snippet 이란?
2. Kubernetes NGINX Ingress Controller – yaml 파일 작성하기
3. Ingress 리소스 배포
4. Snippet을 사용한 NGINX Ingress Controller Advanced 구성 확인
1. Kubernetes NGINX Ingress Controller – Snippet이란?
Kubernetes NGINX Ingress Controller에서는 Snippet이 NGINX 구성 파일의 일부로 사용됩니다.
이는 특정한 설정 블록을 따로 관리하고, 필요할 때 쉽게 삽입하여 NGINX의 동작을 변경하거나 보완할 수 있도록 해줍니다.
Snippet을 사용하면 설정 파일을 더 모듈화하고, 복잡한 설정을 관리하기 쉽게 만들 수 있습니다.
예를 들어, 특정한 HTTP 헤더를 추가하는 설정을 Snippet으로 정의해두면, 이를 필요한 모든 가상 호스트 또는 위치 블록에 쉽게 삽입할 수 있습니다.
이는 NGINX 구성을 보다 유연하고 효율적으로 관리할 수 있게 해줍니다. Snippet은 Kubernetes NGINX Ingress Controller를 특정 환경에 맞게 구성하는 데 유용하게 활용됩니다.
2. Kubernetes NGINX Ingress Controller – yaml 파일 작성하기

Kubernetes NGINX Ingress 리소스의 annotation 중 server-snippet과 configuration-snippet을 사용하여 Kubernetes NGINX Ingress Controller를 Advanced 구성할 수 있습니다.
먼저, server-snippet은 NGINX server{} 블록 내에 위치한 location 구성 Snippets을 추가하는 데 사용됩니다.
이를 통해 특정한 경로에 대한 처리 방식이나 설정을 변경하거나 추가할 수 있습니다. 예를 들어, 특정 경로에 대한 Caching 정책을 설정하거나, 보안 설정을 추가하는 등의 작업을 수행할 수 있습니다.

configuration-snippet은 NGINX location 블록 내에 구성 Snippets을 추가합니다. 이를 사용하면 특정 경로에 대한 구성을 더 세밀하게 조정할 수 있습니다.
예를 들어, 특정 경로에 대한 Caching 설정을 변경하거나, 특정 요청에 대한 Redirection을 추가하는 등의 작업을 수행할 수 있습니다.
3. Ingress 리소스 배포
작성한 Ingress 리소스를 NGINX Ingress Controller의 Namespace인 nginx-ingress로 배포합니다.
kubectl apply -f snippet.yaml -n nginx-ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: snippet-ingress
annotations:
nginx.org/server-snippets: |
location /snippet {
add_header test-header test;
return 200 'NGINX Ingress Controller Snippet Test Success\n';
}
spec:
ingressClassName: nginx
rules:
- host: devbinx.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: svc1
port:
number: 80
4. Snippet을 사용한 NGINX Ingress Controller Advanced 구성 확인
호스트는 devops.com, 스니펫을 통해 /snippet 경로와 Header를 생성했으니 curl 명령어로 테스트할 수 있습니다.
curl devbinx.com:30000/snippet -I
HTTP/1.1 200 OK
Server: nginx/1.25.3
Date: Mon, 29 Apr 2024 08:38:42 GMT
Content-Type: application/octet-stream
Content-Length: 46
Connection: keep-alive
test-header: test

server-snippet을 통해 작성한 Header가 curl 응답에서 나오는 것을 확인할 수 있습니다.
아래 폼을 제출하고 NGINX Ingress Controller의 고급 기능 무상 컨설팅을 받아보세요.
댓글을 달려면 로그인해야 합니다.