Container Orchestration/Kubernetes

Ingress Nginx란?

Somaz 2024. 7. 4. 12:39
728x90
반응형

Overview

Kubernetes에서 유용하게 쓰이고 있는 Ingress Nginx에 대해서 알아본다.

출처 : https://cloudworkmates.com/2021/06/08/running-ha-nginx-ingress-on-aws-eks-with-tlsaws-acm/

 

 

 

MetalLB의 관한 내용은 아래의 글을 참고하길 바란다.

2023.05.03 - [Container Orchestration/Kubernetes] - MetalLB란?

 

MetalLB란?

Overview오늘은 Bare-Metal에서 많이 사용하는 LoadBalancer인 MetalLB에 대해서 공부해보려고 한다.MetalLB란?Kubernetes 사용 시 AWS, GCP, Azure 와 같은 클라우드 플랫폼에서는 자체적으로 로드 벨런서(Load Balancer

somaz.tistory.com

 

 


Ingress Nginx란?

Ingress Nginx는 Kubernetes 클러스터로의 HTTP 및 HTTPS 트래픽 라우팅을 처리하기 위해 널리 사용되는 컨트롤러이다.  외부 트래픽의 입구(진입점) 역할을 하며 Ingress 리소스에 지정된 규칙에 따라 클러스터 내의 적절한 서비스로 전달한다. URL 라우팅을 통해 외부에서 내부 서비스에 액세스할 수 있도록 하여 역방향 프록시 및 로드 밸런서 역할을 한다.  주요 구성 요소와 기능에 대한 자세한 개요는 다음과 같다.

 


 

 

Ingress Nginx의 주요 기능

  1. 트래픽 라우팅
    • 호스트 기반 라우팅 : 도메인 이름을 기반으로 트래픽을 라우팅한다. 예를 들어 요청을 `example.com` 을 하나의 서비스로 라우팅하고 `another.com` 을 다른 서비스로 라우팅할 수 있다.
    • 경로 기반 라우팅 : URL 경로를 기반으로 트래픽을 라우팅한다. 예를 들어, `example.com/blog` 및 `example.com/shop` 다른 서비스로 연결시킬 수 있다.
  2. SSL/TLS 종료 
    • Ingress Nginx는 SSL/TLS 종료를 관리하여 암호화된 트래픽이 백엔드 서비스에 도달하기 전에 처리할 수 있다. 이는 서비스 자체에서 암호화 오버헤드를 오프로드하고 인증서 관리를 중앙 집중화한다.
  3. 로드 밸런싱 
    • Nginx를 통해 로드 밸런싱을 제공하여 수신 트래픽을 서비스의 여러 인스턴스에 분산하고, 높은 트래픽 로드 처리를 개선하고 내결함성을 높인다.
  4. 사용자 정의 가능한 Annotation
    • Ingress 리소스는 Annotation을 사용하여 구성할 수 있다. 이를 통해 시간 초과, 요청에 허용되는 본문 크기, SSL 사용 여부 및 Nginx와 관련된 기타 여러 설정을 사용자 정의할 수 있다.
  5. 로깅 및 모니터링 
    • 자세한 액세스 및 오류 로깅을 지원한다. 측정항목은 Prometheus를 통해 노출 및 모니터링할 수 있으며 Grafana와 같은 도구를 사용하여 시각화할 수 있다.
  6. 선호도 및 세션 고정성 

 

 

Ingress Nginx Annotation(주석) 정리

Ingress Nginx는 주석을 사용하여동작을 맞춤설정한다.  Ingress 컨트롤러가 HTTP 요청을 처리하는 방법의 다양한 측면을 세부적으로 제어할 수 있다. 다음은 Nginx Ingress에 사용되는 주요 주석 중 일부이다.

 

  • `nginx.ingress.kubernetes.io/rewrite-target` : 요청이 애플리케이션으로 전송되기 전에 요청의 URL을 다시 작성하도록 지정
  • `nginx.ingress.kubernetes.io/ssl-redirect` : HTTPS 리디렉션을 강제할지 여부를 제어
  • `nginx.ingress.kubernetes.io/force-ssl-redirect` : 서버가 TLS로 구성되지 않은 경우에도 HTTPS 리디렉션을 강제
  • `nginx.ingress.kubernetes.io/use-regex` : 경로 값을 정규식으로 해석해야 하는지 여부 확인
  • `nginx.ingress.kubernetes.io/configuration-snippet` : 서버 또는 위치 블록에 사용자 정의 구성을 삽입
  • `nginx.ingress.kubernetes.io/limit-rps` : 초당 요청을 Ingress에 정의된 경로로 제한
  • `nginx.ingress.kubernetes.io/limit-connections` : 단일 IP 주소에서 허용되는 동시 연결 수를 제한
  • `nginx.ingress.kubernetes.io/auth-type` : 인증 유형(예: 기본 또는 다이제스트)을 지정
  • `nginx.ingress.kubernetes.io/auth-secret` : 인증을 위한 사용자 이름과 비밀번호가 포함된 비밀의 이름을 지정
  • `nginx.ingress.kubernetes.io/auth-realm`: 인증을 위한 영역을 설정

 

 

다음은 이러한 주석 중 일부를 사용하는 방법을 보여주는 예제 YAML 파일이다.

apiVersion: networking.k8s.io/v1kind: Ingressmetadata:
  name: example-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/limit-rps: "5"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      more_set_headers "X-Robots-Tag: noindex, nofollow";
spec:
  rules:
  - http:
      paths:
      - path: /something(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: some-service
            port:
              number: 80
  • Rewrite Target: path에 정의된 캡처 그룹을 기반으로 들어오는 URL을 다시 작성
  • SSL Redirect: HTTP 요청을 HTTPS로 리디렉션
  • Use Regex : 지정된 경로를 정규식으로 처리
  • Rate Limiting: 초당 요청을 5개로 제한
  • Configuration Snippet: Nginx 구성에 직접 추가 구성을 추가

 

 


Ingress Nginx 설치

Ingress Nginx 배포에는 일반적으로 YAML Manifest 또는 Helm 차트를 사용하여 Nginx Ingress Controller를 설치하는 작업을 사용한다. 따라서 Manifest와 Helm을 사용해서 설치하는 방법을 각각 알아본다.

설치하기 전에 Onpremise 환경이라면 MetalLB를 설치후에 Ingress Nginx를 설치해야 Service를 LoadBalancer Type으로 설정하여 설치할 수 있다. 그리고 EXTERNAL-IP로 받아오는 IP는 MetalLB의 IPAddressPool에 설정된 값을 가져오게 된다.

cat <<EOF >> metallb-config.yaml
# 사용 apiversion
apiVersion: metallb.io/v1beta1 
kind: IPAddressPool
metadata:
  name: ip-pool
  namespace: metallb-system
spec:
  addresses:
  # 사용할 ip address pool
  - 143.92.123.123-143.92.123.123
  autoAssign: true
--- 
apiVersion: metallb.io/v1beta1 
# metalib의 l2모드를 사용한다.
kind: L2Advertisement 
metadata:
  name: l2-network
  namespace: metallb-system
spec:
   # 사용할 ipAddressPools
  ipAddressPools:
    - ip-pool
EOF
k get po -n ingress-nginx
NAME                                        READY   STATUS    RESTARTS   AGE
ingress-nginx-controller-6766768d48-zm8cj   1/1     Running   0          36s

k get svc -n ingress-nginx
NAME                                 TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)                      AGE
ingress-nginx-controller             LoadBalancer   10.96.140.20   143.92.123.123   80:31665/TCP,443:30379/TCP   44s
ingress-nginx-controller-admission   ClusterIP      10.100.76.3    <none>           443/TCP                      44s

 

 

 


 

 

Install With Helm

https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx

 

ingress-nginx/charts/ingress-nginx at main · kubernetes/ingress-nginx

Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

github.com

 

 

Repo를 추가한다.

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update

 

설치한다.

helm install [RELEASE_NAME] ingress-nginx/ingress-nginx

 

 

Chart를 가져와서 Values 수정후 설치를 하는 방법은 아래와 같다.

helm install ingress-nginx . -n ingress-nginx -f ingress-nginx-values.yaml --create-namespace

# lint
helm lint --values ingress-nginx-values.yaml

# dry run
helm install ingress-nginx . -n ingress-nginx -f ingress-nginx-values.yaml --dry-run

# 설치
helm install ingress-nginx . -n ingress-nginx -f ingress-nginx-values.yaml

# 업그레이드
helm upgrade ingress-nginx . -n ingress-nginx -f ingress-nginx-values.yaml

 

 

helm으로 fluent-bit sidecar를 붙이는 방법도 간단하다.

 

`templates/extra-configmap.yaml`

아래와 같이 template을 추가해준다.

{{- if .Values.controller.extraConfigMaps }}
{{- range .Values.controller.extraConfigMaps }}
apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .name }}
  labels:
    {{- toYaml .labels | nindent 4 }}
data:
  {{- toYaml .data | nindent 2 }}
{{- end }}
{{- end }}

 

 

`ingress-nginx-values.yaml`

아래와 같이 값을 추가해준다.

controller:
...
  extraContainers: 
    - name: fluent-bit
      image: fluent/fluent-bit:latest
      imagePullPolicy: IfNotPresent
      ports:
        - containerPort: 2020
      volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: fluent-bit-config
          mountPath: /fluent-bit/etc
      resources:
        limits:
          memory: 500Mi
        requests:
          cpu: 100m
          memory: 100Mi
  extraVolumes:
    - name: shared-data
      emptyDir: {}
    - name: fluent-bit-config
      configMap:
        name: fluent-bit-config 
  extraVolumeMounts:
    - name: shared-data
      mountPath: /var/log/nginx
    - name: fluent-bit-config
      mountPath: /fluent-bit/etc/
  extraConfigMaps:
    - name: fluent-bit-config
      labels:
        type: fluent-bit
      data:
        fluent-bit.conf: |
          [SERVICE]
              Flush        1
              Log_Level    info
              Parsers_File parsers.conf
          [INPUT]
              Name tail
              Path /var/log/nginx/access.log
              Parser nginx_access_parser
              Tag nginx_access
          [INPUT]
              Name tail
              Path /var/log/nginx/error.log
              Parser nginx_error_parser
              Tag nginx_error
          [FILTER]
              Name    grep
              Match   nginx_access
              Regex   log .*fgn.*
          [FILTER]
              Name    modify
              Match   nginx_access
              Add     log_type nginx_access
          [FILTER]
              Name    modify
              Match   nginx_error
              Add     log_type nginx_error
          [OUTPUT]
              Name stdout
              Match *
          [OUTPUT]
              Name loki
              Match *
              Host loki.somaz.link
              Port 443
              URI /loki/api/v1/push
              tls On
              Labels job=fluent-bit, log_type=$log_type
        parsers.conf: |
          [PARSER]
              Name        nginx_access_parser
              Format      regex
              Regex       ^(?<remote_addr>[^ ]*) - (?<remote_user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+) (?<request>[^ ]*) (?<http_protocol>[^"]*)" (?<status>[^ ]*) (?<body_bytes_sent>[^ ]*) "(?<http_referer>[^"]*)" "(?<http_user_agent>[^"]*)" (?<request_length>[^ ]*) (?<request_time>[^ ]*) \[(?<upstream_name>[^\]]*)\] \[(?<upstream_addr>[^\]]*)\] (?<upstream_response_length>[^ ]*) (?<upstream_response_time>[^ ]*) (?<upstream_status>[^ ]*) (?<request_id>[^ ]*)$
              Time_Key    time
              Time_Format  %d/%b/%Y:%H:%M:%S %z
          [PARSER]
              Name        nginx_error_parser
              Format      regex
              Regex       ^(?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<process_info>\d+#\d+): (?<message>.*)$
              Time_Key    time
              Time_Format  %Y/%m/%d %H:%M:%S

 

 

마지막으로 다시 업그레이드 해준다.

helm upgrade ingress-nginx . -n ingress-nginx -f ingress-nginx-values.yaml

 

logs 를 사용해서 sidecar가 잘 붙었는지 확인 가능하다.

k get po -n ingress-nginx
NAME                                        READY   STATUS        RESTARTS   AGE
ingress-nginx-controller-6766768d48-zm8cj   0/1     Terminating   0          37d
ingress-nginx-controller-84d78c7d45-ptt97   2/2     Running       0          82s

k logs -n ingress-nginx ingress-nginx-controller-84d78c7d45-ptt97 -c fluent-bit
Fluent Bit v3.0.7
* Copyright (C) 2015-2024 The Fluent Bit Authors
* Fluent Bit is a CNCF sub-project under the umbrella of Fluentd
* https://fluentbit.io

___________.__                        __    __________.__  __          ________
\_   _____/|  |  __ __   ____   _____/  |_  \______   \__|/  |_  ___  _\_____  \
 |    __)  |  | |  |  \_/ __ \ /    \   __\  |    |  _/  \   __\ \  \/ / _(__  <
 |     \   |  |_|  |  /\  ___/|   |  \  |    |    |   \  ||  |    \   / /       \
 \___  /   |____/____/  \___  >___|  /__|    |______  /__||__|     \_/ /______  /
     \/                     \/     \/               \/                        \/

[2024/07/05 08:55:46] [ info] [fluent bit] version=3.0.7, commit=73e72bdf9a, pid=1
[2024/07/05 08:55:46] [ info] [storage] ver=1.5.2, type=memory, sync=normal, checksum=off, max_chunks_up=128
[2024/07/05 08:55:46] [ info] [cmetrics] version=0.9.1
[2024/07/05 08:55:46] [ info] [ctraces ] version=0.5.1
[2024/07/05 08:55:46] [ info] [input:tail:tail.0] initializing
[2024/07/05 08:55:46] [ info] [input:tail:tail.0] storage_strategy='memory' (memory only)
[2024/07/05 08:55:46] [ info] [input:tail:tail.1] initializing
[2024/07/05 08:55:46] [ info] [input:tail:tail.1] storage_strategy='memory' (memory only)
[2024/07/05 08:55:46] [ info] [output:stdout:stdout.0] worker #0 started
[2024/07/05 08:55:46] [ info] [output:loki:loki.1] configured, hostname=loki.somaz.link:443
[2024/07/05 08:55:46] [ info] [sp] stream processor started

 

 

아래와 같이 curl로 확인도 가능하고, grafana를 연동해서 시각화도 할 수 있다.

curl -G -s "https://loki.somaz.link/loki/api/v1/query_range" \
  --data-urlencode "query={job=\"fluent-bit\",log_type=\"nginx_error\"}" \
  --data-urlencode "limit=10" \
  --data-urlencode "start=$(date --date='1 hour ago' +%s)" \
  --data-urlencode "end=$(date +%s)"


curl -G -s "https://loki.somaz.link/loki/api/v1/query_range" \
  --data-urlencode "query={job=\"fluent-bit\",log_type=\"nginx_access\"}" \
  --data-urlencode "limit=10" \
  --data-urlencode "start=$(date --date='1 hour ago' +%s)" \
  --data-urlencode "end=$(date +%s)"

 


 

 

Install By Manifest

https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/baremetal/deploy.yaml

 

ingress-nginx/deploy/static/provider/baremetal/deploy.yaml at main · kubernetes/ingress-nginx

Ingress-NGINX Controller for Kubernetes. Contribute to kubernetes/ingress-nginx development by creating an account on GitHub.

github.com

 

 

해당 Manifest를 사용해서 배포하면 된다.

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml

 

 

파일을 가져와서 배포하고 싶다면 아래와 같이 하면된다.

# 파일 다운로드
curl -LO https://raw.githubusercontent.com/kubernetes/ingress-nginx/main/deploy/static/provider/baremetal/deploy.yaml

# 배포
k apply -f deploy.yaml -n ingress-nginx

 

 

Manifest로 배포할 시에는 아래와 같이 간단하게 FluentBit Sidecar를 사용해서, `nginx/access.log` , `nginx/error.log` 를 수집하여 Loki로 전달할 수 있다.

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/component: controller
    app.kubernetes.io/instance: ingress-nginx
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
    app.kubernetes.io/version: 1.10.1
  name: ingress-nginx-controller
  namespace: ingress-nginx
...
        volumeMounts:
        - name: webhook-cert
          mountPath: /usr/local/certificates/
          readOnly: true
        - name: shared-data
          mountPath: /var/log/nginx
        resources:
          requests:
            cpu: 100m
            memory: 90Mi
      - name: fluent-bit
        image: fluent/fluent-bit:2.2.2
        imagePullPolicy: Always
        volumeMounts:
        - name: shared-data
          mountPath: /var/log/nginx
        - name: fluent-bit-config
          mountPath: /fluent-bit/etc/
      volumes:
      - name: webhook-cert
        secret:
          secretName: ingress-nginx-admission
      - name: shared-data
        emptyDir: {}
      - name: fluent-bit-config
        configMap:
          name: fluent-bit-config
---

 

 

`fluentbit-config.yaml`

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluent-bit-config
  namespace: ingress-nginx
data:
  fluent-bit.conf: |
    [SERVICE]
        Flush        1
        Log_Level    info
        Parsers_File parsers.conf

    [INPUT]
        Name tail
        Path /var/log/nginx/access.log
        Parser nginx_access_parser
        Tag nginx_access

    [INPUT]
        Name tail
        Path /var/log/nginx/error.log
        Parser nginx_error_parser
        Tag nginx_error

    [FILTER]
        Name    grep
        Match   nginx_access
        Regex   log .*fgn.*

    [FILTER]
        Name    modify
        Match   nginx_access
        Add     log_type nginx_access

    [FILTER]
        Name    modify
        Match   nginx_error
        Add     log_type nginx_error

    [OUTPUT]
        Name stdout
        Match *

    [OUTPUT]
        Name loki
        Match *
        Host loki-gateway.somaz.link
        Port 443
        URI /loki/api/v1/push
        tls On
        Labels job=fluent-bit, log_type=$log_type

  parsers.conf: |
    [PARSER]
        Name        nginx_access_parser
        Format      regex
        Regex       ^(?<remote_addr>[^ ]*) - (?<remote_user>[^ ]*) \[(?<time>[^\]]*)\] "(?<method>\S+) (?<request>[^ ]*) (?<http_protocol>[^"]*)" (?<status>[^ ]*) (?<body_bytes_sent>[^ ]*) "(?<http_referer>[^"]*)" "(?<http_user_agent>[^"]*)" (?<request_length>[^ ]*) (?<request_time>[^ ]*) \[(?<upstream_name>[^\]]*)\] \[(?<upstream_addr>[^\]]*)\] (?<upstream_response_length>[^ ]*) (?<upstream_response_time>[^ ]*) (?<upstream_status>[^ ]*) (?<request_id>[^ ]*)$
        Time_Key    time
        Time_Format  %d/%b/%Y:%H:%M:%S %z

    [PARSER]
        Name        nginx_error_parser
        Format      regex
        Regex       ^(?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<process_info>\d+#\d+): (?<message>.*)$
        Time_Key    time
        Time_Format  %Y/%m/%d %H:%M:%S

 

 

이런식으로 수정하여 수집을 해주면 아래와 같이 검색이 가능하고 Grafana로 시각화도 할 수 있다.

curl -G -s "https://loki-gateway.somaz.link/loki/api/v1/query_range" \
  --data-urlencode "query={job=\"fluent-bit\",log_type=\"nginx_access\"}" \
  --data-urlencode "limit=10" \
  --data-urlencode "start=$(date --date='1 hour ago' +%s)" \
  --data-urlencode "end=$(date +%s)"
{"status":"success","data":{"resultType":"streams","result":[{"stream":{"job":"fluent-bit","log_type":"nginx_access"},"values":[["1706081048896054832","{\"log\":\"10.10.100.24 - 1 [24/Jan/2024:07:24:08 +0000] \\\"POST /user/leader-character/position/update HTTP/1.1\\\" 200 213 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 606 0.012 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 213 0.012 200 c65ef0adbdc886d6d731bcdee1f09753\",\"log_type\":\"nginx_access\"}"],["1706081021518809926","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /guild/get HTTP/1.1\\\" 200 417 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 353 0.011 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 417 0.012 200 dcb2b475b0ffd7815df0d51556a0fd9c\",\"log_type\":\"nginx_access\"}"],["1706081021463331838","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /stat-upgrade/get HTTP/1.1\\\" 200 117 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 360 0.006 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 117 0.008 200 3452a1a6ea9a8d1c1470a4fa8da6f4af\",\"log_type\":\"nginx_access\"}"],["1706081021429729524","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /dungeon/stage-dungeon/get HTTP/1.1\\\" 200 22 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 369 0.006 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 22 0.004 200 e11bf5f3b51e7a166950f409604eea25\",\"log_type\":\"nginx_access\"}"],["1706081021400093773","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /event-pass/get HTTP/1.1\\\" 200 20 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 358 0.008 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 20 0.008 200 645368bd7ca65b79a7744e0329f60dca\",\"log_type\":\"nginx_access\"}"],["1706081021317536728","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /game-event/get HTTP/1.1\\\" 200 640 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 358 0.013 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 640 0.012 200 05f440ca128244a57da4563c8133ff87\",\"log_type\":\"nginx_access\"}"],["1706081021258885802","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /like-ability-quest/get HTTP/1.1\\\" 200 20 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 366 0.005 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 20 0.008 200 9b4ef1b9d5b379dcb498639fa258e062\",\"log_type\":\"nginx_access\"}"],["1706081021226876432","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /membership/get HTTP/1.1\\\" 200 39 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 358 0.008 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 39 0.008 200 bee9c7544b2281c452a7c394f63643f7\",\"log_type\":\"nginx_access\"}"],["1706081021154217636","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /item/get HTTP/1.1\\\" 200 251 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 352 0.006 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 251 0.004 200 5f5769e5b2d86ff7f326cb6c2cfcc72f\",\"log_type\":\"nginx_access\"}"],["1706081021123018100","{\"log\":\"10.10.100.24 - 25 [24/Jan/2024:07:23:41 +0000] \\\"POST /deck/get HTTP/1.1\\\" 200 113 \\\"-\\\" \\\"UnityPlayer/2022.3.1f1 (UnityWebRequest/1.0, libcurl/7.84.0-DEV)\\\" 352 0.005 [sn-server-dev1-sn-server-game-dev1-80] [] 10.233.105.94:8080 113 0.008 200 dd85cd8d37295a6ff2b4d84a2bfcd254\",\"log_type\":\"nginx_access\"}"]]}],"stats":{"summary":{"bytesProcessedPerSecond":2777344,"linesProcessedPerSecond":8688,"totalBytesProcessed":4795,"totalLinesProcessed":15,"execTime":0.001726469,"queueTime":0.00007025,"subqueries":1,"totalEntriesReturned":10},"querier":{"store":{"totalChunksRef":0,"totalChunksDownloaded":0,"chunksDownloadTime":0,"chunk":{"headChunkBytes":0,"headChunkLines":0,"decompressedBytes":0,"decompressedLines":0,"compressedBytes":0,"totalDuplicates":0}}},"ingester":{"totalReached":1,"totalChunksMatched":1,"totalBatches":1,"totalLinesSent":10,"store":{"totalChunksRef":0,"totalChunksDownloaded":0,"chunksDownloadTime":0,"chunk":{"headChunkBytes":4795,"headChunkLines":15,"decompressedBytes":0,"decompressedLines":0,"compressedBytes":0,"totalDuplicates":0}}}}}}

 

 

 

 

 


Reference

https://github.com/kubernetes/ingress-nginx/tree/main/charts/ingress-nginx

https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/baremetal/deploy.yaml

https://cloudworkmates.com/2021/06/08/running-ha-nginx-ingress-on-aws-eks-with-tlsaws-acm/

728x90
반응형