전공영역 공부 기록

envoy proxy 체험

악분 2022. 3. 26. 21:20
반응형

목차

 

istio가 envoy proxy을 사용하므로, envoy proxy가 어떻게 동작하는지 가볍게 공부했습니다.

 

envoy proxy 설치

저는 wsl2에서 envoy proxy를 설치했습니다. 공식 홈페이지에 게시되어 있는 설치 명령어를 사용했습니다.

공식문서 링크: https://www.envoyproxy.io/docs/envoy/latest/start/install#install-envoy-on-ubuntu-linux

sudo apt update
sudo apt install apt-transport-https gnupg2 curl lsb-release
curl -sL 'https://deb.dl.getenvoy.io/public/gpg.8115BA8E629CC074.key' | sudo gpg --dearmor -o /usr/share/keyrings/getenvoy-keyring.gpg
echo a077cb587a1b622e03aa4bf2f3689de14658a9497a9af2c427bba5f4cc3c4723 /usr/share/keyrings/getenvoy-keyring.gpg | sha256sum --check
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] https://deb.dl.getenvoy.io/public/deb/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list
sudo apt update
sudo apt install -y getenvoy-envoy

 

버전 확인

envoy --version

 

실행

다른 프록시와 마찬가지로 프록시 설정이 필요합니다. 공식문서에서 데모설정파일을 제공하고 있습니다.

데모설정파일 다운로드 링크: https://www.envoyproxy.io/docs/envoy/latest/start/quick-start/run-envoy#run-envoy-with-the-demo-configuration
envoy -c envoy-demo.yaml

 

envoy가 잘실행되면 10000포트가 오픈됩니다.

 

localhost:10000로 접속하면 envory 홈페이지로 접속됩니다.

 

설정 분석

리스너 설정

envoy proxy가 10000포트로 리스닝하는 이유는 listeners에 설정이 되어 있기 때문입니다.

 

프록시 설정

envoy홈페이지로 이동된 이유는 42번째 줄에 있는 endpoint설정때문입니다. endpoint를 관리하는 최상위 그룹이 cluster입니다.

 

envory 홈페이지가 아닌 웹 애플리케이션으로 포워딩해보겠습니다. 제가 만든 간단한 파이썬 웹 애플리케이션을 이용하겠습니다. 실행방법은 간단합니다.

파이썬 웹 애플리케이션 링크: https://github.com/choisungwook/istio-example/blob/main/envoy/app/main.py
uvicorn main:app

 

envory 프록시 설정파일에 3가지 설정이 필요합니다.

파일 링크: https://github.com/choisungwook/istio-example/blob/main/envoy/demo.yaml

① type을 STATIC으로 변경

② endpoint를 127.0.0.1:8000으로 변경

③ transport_socket삭제

  clusters:
  - name: service_envoyproxy_io
    type: STATIC
    # Comment out the following line to test on v6 networks
    dns_lookup_family: V4_ONLY
    load_assignment:
      cluster_name: service_envoyproxy_io
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 8000

 

다시 envory proxy를 호출하면 python 웹 애플리케이션 응답이 보입니다.

 

마치며

지금까지 istio 설정을 만져보고 직접 실행해봤습니다. istio에서는 control plane이 envoy설정(listerns, cluster, endpoint 등)을 동적으로 설정합니다. 

반응형

'전공영역 공부 기록' 카테고리의 다른 글

Istio 트래픽 흐름과 설정 이해  (0) 2022.03.27
Istio envoy를 동적으로 설정하는 원리  (0) 2022.03.26
Istio 아키텍처  (0) 2022.03.26
pod강제 삭제  (0) 2022.03.24
istio 공식샘플 - book application  (0) 2022.03.23