DevOps 잡다구리/Kubernetes Stuff

[Kubernetes] Istio for access log

WhiteGoblin 2023. 5. 11. 21:46
반응형

취직 이후 글을 거의 못 썼습니다.

 

게을러서 그렇지만 차후 다른 분들이 이글을 보고 도움이 되었으면 싶어서 글을 작성합니다. 

1. Helm chart 이용해서 istio 설치 하기 

 

공식 사이트를 가보면 쉽게 istio 를 설치 할 수 있게 해두었습니다.

 

https://istio.io/latest/docs/setup/install/helm/

 

Install with Helm

Instructions to install and configure Istio in a Kubernetes cluster using Helm.

istio.io

 

해당 cmd 를 이용하면 빠르게 설치할 수 있지만 당연히 value 들이 무엇을 하는지에 대한 감이 안 잡힐 수 도 있다고 생각합니다. 

 

그래서 우선 istio repo 를 다운 받아 봅니다. 

 

git clone https://github.com/istio/istio

 

이후 해당 repo 안 manifests/charts/istio-control/istio-discovery 로 들어가게 되면 

 

chart.yaml, values.yaml, templates 등 helm 으로 배포하는데 필요한 모든 것이 있습니다. 

 

helm 을 통해서 배포를 진행해도 되지만 

 

accesslog 를 istio-proxy 를 통해서 받아오기 위해 설정하는 것이기 때문에 해당 부분에 대한 값을 추가 해줄 것 입니다. 

 

우선은 helm 을 통해 local 로 설치 해주어도 되고 아니면 helm repo 를 받아온 다음 install 을 진행해주어도 된다.

 

2. access log 를 위한 설정 

 

values.yaml 안에서 meshconfig 라는 값을 찾아 줍니다. 

 

제가 받은 repo 안에서는 대략 line 185 에서 meshConfig: 라는 부분을 찾았습니다.

 

해당 부분에 accessLog 에 관련된 설정을 해주지 않으면 access log 를 받아 올 수 없게 됩니다. 

 

정확하게 말하자면 accesslog 에 대한 file 을 설정 해주고 해당 출력을 어떤 방식으로 출력할지에 대해서 설정 해주는 방식을 통해서 access log 를 출력한다. 

 

 

위 처럼 설정 해주게 되면 istio-proxy 에서 생성되는 accesslog 를 stdout 을 통해서 TEXT 형태로 내보낸다는 사실을 알 수 있다. 

 

3. 실제 로그 확인 

 

 예시로 prometheus 에서 어떻게 출력하는지 테스트 해보았습니다. 

 

[2023-05-11T12:29:09.749Z] "POST /api/v1/query_range HTTP/1.1" 200 - via_upstream - "-" 672 1016 836 2 "127.0.0.1, xx.xxx.x.xxx" "node-fetch" "f265651e-1141-4bf3-a131-36375b8aa340" "00F7C3FC44644A7B6E124A1AFBCB7A1D.gr7.us-west-2.eks.amazonaws.com" "10.150.0.65:9090" inbound|9090|| 127.0.0.6:57419 10.150.0.65:9090 xx.xxx.x.xxx:0 - default

 

https://istio.io/latest/docs/tasks/observability/logs/access-log/

 

Envoy Access Logs

This task shows you how to configure Envoy proxies to print access logs to their standard output.

istio.io

위 로그에서 access log 를 어떻게 보는지에 대해서 말하고 있습니다.

 

어떤 method 로 어느 path 로 가고 어떤 응답이 왔는지에 대해서 

 

위 예시에서 보면 10.150.0.65 으로 9090 port 로 POST 요청이 왔다는 사실을 알 수 있습니다. 

 

4. Envoy 용어 정리 

 

HOST : 논리적인 네트워크 애플리케이션을 의미한다. 각각의 애플리케이션이 주소를 이용하여서 호스트가 될 수 있다. 

 

DOWNSTREAM : Envoy 에 요청을 보내고 응답을 받는 호스트 입니다.

 

UPSTREAM : Envoy 로 부터 요청을 받아서 응답을 보내는 호스트를 의미합니다. 

 

위 용어 정리는 아직 미숙한 부분이 많아서 추가적으로 찾아서 부연 설명을 넣을 수 있도록 하겠습니다. 

반응형