-
envoy 환경설정하기Envoy & Istio 2020. 3. 27. 09:00
envoy 컨테이너로 실행하기
docker image를 이용해서 다음처럼 간단하게 실행해 볼 수 있습니다.
docker run --rm -d -p 10000:10000 -p 9901:9901 envoyproxy/envoy-dev
브라우저에서 http://localhost:10000 으로 접근하면 기본 설정인 google 페이지가 뜨는걸 볼 수 있습니다.
현재 envoy의 설정내용은 다음처럼 컨테이너 id를 확인해서 cat 명령으로 설정파일 내용을 확인할 수 있습니다.
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d31c8d8d7168 envoyproxy/envoy-dev "/docker-entrypoint.…" 41 minutes ago Up 41 minutes 0.0.0.0:9901->9901/tcp, 0.0.0.0:10000->10000/tcp great_mccarthy $ docker exec d31c8d8d7168 cat /etc/envoy/envoy.yaml admin: access_log_path: /tmp/admin_access.log address: socket_address: protocol: TCP address: 127.0.0.1 port_value: 9901 static_resources: listeners: - name: listener_0 address: socket_address: protocol: TCP address: 0.0.0.0 port_value: 10000 filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager stat_prefix: ingress_http route_config: name: local_route virtual_hosts: - name: local_service domains: ["*"] routes: - match: prefix: "/" route: host_rewrite: www.google.com cluster: service_google http_filters: - name: envoy.filters.http.router clusters: - name: service_google connect_timeout: 0.25s type: LOGICAL_DNS # Comment out the following line to test on v6 networks dns_lookup_family: V4_ONLY lb_policy: ROUND_ROBIN load_assignment: cluster_name: service_google endpoints: - lb_endpoints: - endpoint: address: socket_address: address: www.google.com port_value: 443 transport_socket: name: envoy.transport_sockets.tls typed_config: "@type": type.googleapis.com/envoy.api.v2.auth.UpstreamTlsContext sni: www.google.com
envoy 설정파일로 설정 변경하기
앞서 확인한 envoy.yaml 내용을 변경해서 적용해 보기 위해서 우선 envoy.yaml파일을 만듭니다.
그런 후 위 내용을 복사해서 붙여넣은 다음 아래 내용중 adress 부분을 127.0.0.1에서 0.0.0.0으로 변경합니다.
admin: access_log_path: /tmp/admin_access.log address: socket_address: protocol: TCP address: 0.0.0.0 port_value: 9901
그리고 이 내용을 적용한 컨테이너 이미지를 만들기 위한 다음 내용을 가진 dockerfile을 만듭니다.
FROM envoyproxy/envoy-dev COPY envoy.yaml /etc/envoy/envoy.yaml
이 내용을 가지고 새로운 컨테이너 이미지를 만든 후 실행합니다. 기존에 실행중이던 컨테이너가 있으면 호스트의 포트를 사용하고 있을거라서 새로운 컨테이너가 실행되지 않습니다. 그런 경우 기존 컨테이너를 정지시킨후 새로운 컨테이너를 실행시켜야 합니다.
$ docker build -t envoy:test . Sending build context to Docker daemon 4.608kB Step 1/2 : FROM envoyproxy/envoy-dev ---> cf1a51560cb5 Step 2/2 : COPY envoy.yaml /etc/envoy/envoy.yaml ---> Using cache ---> 83987602a860 Successfully built 83987602a860 Successfully tagged envoy:test $ docker run --rm -d -p 10000:10000 -p 9901:9901 envoy:test 9677376df9b5b5245b8978640992caf0193f956c3b64b0dcca155f39603f1d8c
설정을 변경해서 컨테이너를 실행한 후 http:localhost:9901로 접근하면 다음처럼 관리자 페이지를 확인할 수 있습니다.
envoy 관련 여러가지 정보들을 확인할 수 있습니다.
envoy xDS로 설정 변경하기
별도의 management server 를 실행하고 envoy가 해당 서버를 바라보도록 설정해야 합니다.
다음처럼 dynamic_resource의 xds_config에서 management server군을 바라보도록 설정해야 합니다.
admin: access_log_path: /tmp/admin_access.log address: socket_address: { address: 0.0.0.0, port_value: 9901 } dynamic_resources: lds_config: api_config_source: api_type: GRPC grpc_services: envoy_grpc: cluster_name: xds_cluster cds_config: api_config_source: api_type: GRPC grpc_services: envoy_grpc: cluster_name: xds_cluster static_resources: clusters: - name: xds_cluster connect_timeout: 0.25s type: STATIC lb_policy: ROUND_ROBIN http2_protocol_options: {} upstream_connection_options: # configure a TCP keep-alive to detect and reconnect to the admin # server in the event of a TCP socket half open connection tcp_keepalive: {} load_assignment: cluster_name: xds_cluster endpoints: - lb_endpoints: - endpoint: address: socket_address: address: 127.0.0.1 port_value: 5678
참고
https://www.envoyproxy.io/docs/envoy/latest/start/start#simple-configuration
https://www.envoyproxy.io/docs/envoy/v1.11.1/start/start
https://www.envoyproxy.io/docs/envoy/latest/configuration/overview/examples
https://medium.com/@salmaan.rashid/envoy-control-plane-hello-world-2f49b2865f29
'Envoy & Istio' 카테고리의 다른 글
envoy 기본 개념 (0) 2020.03.25 istio를 이용해서 클러스터 외부에서 내부로 접근하도록 설정해보기 (0) 2019.08.26 istio 현재 설정 내용 확인하기 (0) 2019.08.23 istio ControlZ 웹 화면보기 (0) 2019.08.21 istio 설치하기 (2) 2019.08.19 댓글