IT/Kubernetes_k8s

Nginx Ingress Controller의 개념

동구멍폴로 2024. 8. 14. 22:00
반응형

 Nginx Ingress Controller는 Nginx를 기반으로 하고 있지만, 설정 방식은 Kubernetes의 Ingress 리소스를 통해 이루어집니다. Nginx의 설정 파일을 직접 수정하는 대신, Ingress 리소스와 ConfigMap을 사용하여 설정을 관리합니다.

 따라서, Nginx Ingress Controller의 설정은 Nginx와 유사한 점도 있지만, Kubernetes 환경에 맞게 조정된 부분이 있습니다.

Nginx Ingress Controller 설정

  1. Ingress 리소스: Ingress 리소스는 Kubernetes의 네이티브 리소스로, HTTP 및 HTTPS 라우팅 규칙을 정의합니다. 예를 들어, 도메인 기반 또는 경로 기반 라우팅을 설정할 수 있습니다.
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
      annotations:
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: example-service
                port:
                  number: 80



  2. ConfigMap: ConfigMap을 사용하여 Nginx Ingress Controller의 전역 설정을 정의할 수 있습니다. 이러한 설정은 Nginx 설정 파일의 일부를 대체하거나 추가할 수 있습니다.
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-configuration
      namespace: ingress-nginx
    data:
      proxy-connect-timeout: "30s"
      proxy-read-timeout: "30s"
      proxy-send-timeout: "30s"
      enable-vts-status: "true"



  3. Annotations: Ingress 리소스의 메타데이터에 annotations를 추가하여 특정 설정을 적용할 수 있습니다. 예를 들어, SSL/TLS 설정, 리다이렉션, 리라이트 규칙 등을 정의할 수 있습니다.
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: example-ingress
      annotations:
        nginx.ingress.kubernetes.io/ssl-redirect: "true"
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      tls:
      - hosts:
        - example.com
        secretName: example-tls
      rules:
      - host: example.com
        http:
          paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: example-service
                port:
                  number: 80



  4. Custom Templates: 고급 사용자는 ConfigMap과 함께 사용자 정의 Nginx 템플릿을 사용하여 Nginx 설정을 더욱 세밀하게 제어할 수 있습니다.
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: nginx-template
      namespace: ingress-nginx
    data:
      http-snippet: |
        server {
            listen 8080;
            server_name example.com;
            location / {
                proxy_pass http://example-service;
            }
        }


요약

 Nginx Ingress Controller의 설정은 Kubernetes 환경에 맞게 조정된 방식으로 이루어지지만, Nginx 설정의 기본 원칙을 유지합니다. Ingress 리소스와 ConfigMap, 그리고 annotations을 사용하여 필요한 설정을 적용하며, 이를 통해 Nginx와 유사한 기능을 Kubernetes 클러스터 내에서 구현할 수 있습니다.

 Nginx Ingress Controller를 설정하는 데 있어 Nginx의 경험이 도움이 되겠지만, Kubernetes의 리소스와 구성 요소를 이해하는 것이 중요합니다. Ingress 리소스와 ConfigMap을 활용하여 설정을 관리하는 방법을 익히는 것이 좋습니다.

반응형