웹사이트 검색

Debian 11에서 Envoy 프록시를 설치하고 구성하는 방법


이 페이지에서

  1. 전제 조건
  2. Envoy 저장소 추가
  3. Envoy 프록시 설치\n
  4. Envoy 프록시 구성\n
  5. 결론

Envoy 프록시는 클라우드 네이티브 애플리케이션용으로 설계된 무료 오픈 소스 서비스 프록시입니다. 리버스 프록시로 사용할 수 있는 Nginx 및 haproxy와 유사하지만 Envoy 프록시는 최신 서비스 및 인프라용으로 설계되었습니다.

Envoy는 모든 애플리케이션 언어에서 작동하는 고성능 서비스 프록시입니다. 정적 구성에 YAML 구성 파일을 사용하고 gRPC 기반 API 집합도 사용합니다.

Envoy 프록시는 CNCF(Cloud Native Computing Foundation)를 졸업했습니다. 대부분의 최신 인프라 및 컨테이너 기술에 사용됩니다.

이 자습서에서는 Debian 11 서버에서 Envoy 프록시를 설치하고 구성하는 방법을 보여줍니다.

전제 조건

Envoy 설치를 위해 다음을 사용합니다.

  • Linux 서버 Debian 11 Bullseye
  • sudo 권한이 있는 루트가 아닌 사용자\n

Envoy 저장소 추가

Envoy는 Envoy 리포지토리에서 제공하는 바이너리 패키지를 사용하거나 Docker를 사용하는 등 다양한 방법으로 설치할 수 있습니다. 이 예에서는 Envoy 리포지토리의 바이너리 패키지를 사용하여 Envoy를 설치합니다.

Envoy를 추가하고 설치하기 전에 다음 패키지를 설치해야 합니다. gnupg2는 Debian 서버에 GPG 키를 추가하는 데 사용되며 apt-transport-https를 사용하면 보안 https 연결에서 패키지를 설치할 수 있습니다.

sudo apt install gnupg2 apt-transport-https -y

다음으로 다음 명령을 사용하여 Envoy GPG 키를 추가하고 확인합니다.

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

키가 유효하면 OK와 같은 출력 메시지가 표시됩니다.

이제 아래 명령을 사용하여 시스템에 Envoy 리포지토리를 추가합니다.

echo "deb [arch=amd64 \
signed-by=/usr/share/keyrings/getenvoy-keyring.gpg] \
 https://deb.dl.getenvoy.io/public/deb/debian \
$(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/getenvoy.list

마지막으로 Debian 저장소를 업데이트하고 새로 고칩니다.

sudo apt update

아래 스크린샷에서 Debian 시스템에 Envoy 저장소가 추가된 것을 볼 수 있습니다.

Envoy 프록시 설치

이제 Envoy GPG 키와 리포지토리를 추가했으며 시스템에 Envoy 패키지를 설치합니다.

아래의 apt 명령을 실행하여 Debian 11 시스템에 Envoy 패키지를 설치합니다.

sudo apt install getenvoy-envoy

아래에서 진행 중인 Envoy 설치를 볼 수 있습니다.

Envoy 설치가 완료되면 다음 명령어를 사용하여 Envoy 버전을 확인합니다.

envoy --version

아래에서 Debian 11에 설치된 Envoy v1.18을 볼 수 있습니다. Envoy 저장소에서 제공하는 최신 버전의 Envoy 프록시입니다. 최신 버전을 얻으려면 Envoy 웹 사이트에서 사전 빌드된 바이너리 파일을 사용할 수 있습니다.

또한 다음 명령을 사용하여 envoy 명령에서 사용 가능한 모든 옵션을 확인할 수도 있습니다.

envoy --help

Envoy 설정에 사용할 수 있는 많은 옵션이 표시됩니다.

Envoy 프록시 구성

Envoy를 설치한 후 이제 Envoy 설정 방법을 배우게 됩니다.

먼저 다음 명령을 사용하여 새 디렉터리 /etc/envoy/를 만듭니다.

mkdir -p /etc/envoy/

이제 nano 편집기를 사용하여 새 파일 /etc/envoy/demo.yaml을 만듭니다.

sudo nano /etc/envoy/demo.yaml

파일에 다음 구성을 추가합니다. 이 예에서는 listeners, clustersstatic_resources를 포함해야 하는 Envoy용 static_resources 구성을 사용합니다. 엠>.

리스너는 Envoy에 사용할 IP 주소와 포트를 결정합니다. 이 예에서 Envoy는 공용 IP 주소 0.0.0.0에서 포트 80으로 실행됩니다.

여기에서 클러스터 service_envoyproxy_io는 도메인 이름 www.envoyproxy.io인 서비스의 엔드포인트로 사용됩니다.

static_resources:

  listeners:
  - name: listener_0
    address:
      socket_address:
        address: 0.0.0.0
        port_value: 80
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          access_log:
          - name: envoy.access_loggers.stdout
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.access_loggers.stream.v3.StdoutAccessLog
          http_filters:
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
          route_config:
            name: local_route
            virtual_hosts:
            - name: local_service
              domains: ["*"]
              routes:
              - match:
                  prefix: "/"
                route:
                  host_rewrite_literal: www.envoyproxy.io
                  cluster: service_envoyproxy_io

  clusters:
  - name: service_envoyproxy_io
    type: LOGICAL_DNS
    connect_timeout: 5s
    # 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: www.envoyproxy.io
                port_value: 443
    transport_socket:
      name: envoy.transport_sockets.tls
      typed_config:
        "@type": type.googleapis.com/envoy.extensions.transport_sockets.tls.v3.UpstreamTlsContext
        sni: www.envoyproxy.io

완료되면 파일을 저장하고 닫습니다.

다음으로 아래의 envoy 명령을 실행하여 구성 파일 demo.yaml을 확인합니다.

envoy --mode validate -c /etc/envoy/demo.yaml

YAML 구성이 올바른 경우 "configuration /etc/envoy/demo.yaml OK"와 같은 출력이 표시됩니다.

이제 다음 명령을 사용하여 구성 파일 demo.yml과 함께 Envoy를 실행합니다.

envoy -c /etc/envoy/demo.yaml

아래에 로그 출력이 표시됩니다. 또한 오류 메시지가 표시되지 않는지 확인하십시오.

이제 로컬 컴퓨터로 이동하고 nano 편집기를 사용하여 /etc/hosts 구성 파일을 편집합니다.

sudo nano /etc/hosts

아래와 같이 서버 IP 주소와 함께 www.envoyproxy.io 도메인 이름을 추가합니다.

192.168.5.10 www.envoyproxy.io

완료되면 파일을 저장하고 닫습니다.

마지막으로 웹 브라우저를 열고 도메인 이름 www.envoyproxy.io를 방문하면 도메인 이름 www.envoyproxy.io의 홈페이지가 나타납니다.

결론

축하합니다! 이제 Debian 11 서버에 Envoy를 성공적으로 설치했습니다. 또한 www.envoyproxy.io 웹 사이트를 프록시하기 위해 YAML 구성을 사용하여 Envoy를 설정하는 방법도 배웠습니다.