고급 구성 설정

이 문서에는 Cloud Service Mesh를 구성할 때 유용할 수 있는 참고사항이 포함되어 있습니다.

Cloud Service Mesh에 단일 Compute Engine VM 구성

이 절차를 사용하여 사이드카 프록시 배포 및 트래픽 가로채기를 구현하여 VM에 Cloud Service Mesh 서비스에 대한 액세스 권한을 제공할 수 있습니다.

이 절차를 수행하려면 Docker를 설치해야 합니다. Docker Engine 설치는 Docker 안내를 따릅니다.

단일 VM에서 Cloud Service Mesh를 구성하기 위해 이 프로세스를 따르는 경우 일부 설정 작업에서 Linux 호스트에 액세스할 수 있어야 합니다. 호스트는 Virtual Private Cloud 네트워크에서 실행되는 로컬 머신 또는 VM일 수 있습니다.

먼저 구성 파일과 샘플 스크립트를 다운로드하고 준비합니다.

  1. 설정 과정에서 사용 중인 Linux 호스트에 로그인합니다.

  2. 필요한 파일의 보관 파일을 Linux 호스트에 다운로드하고 압축을 풉니다.

    wget https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz
    tar -xzvf traffic-director-xdsv3.tar.gz; cd traffic-director-xdsv3
    

    이 보관 파일은 다음과 같은 파일을 포함합니다.

    • sidecar.env – 환경 변수를 갖는 구성 파일
    • iptables.sh – netfilter 규칙을 설정하는 스크립트
    • bootstrap_template.yaml – Envoy용 부트스트랩 템플릿 파일
    • run.shsidecar.env 구성 파일을 사용하여 가로채 기용 iptables를 설정하고 Envoy 사이드카 프록시를 실행하는 최상위 스크립트
  3. 사이드카 프록시를 실행하는 각 호스트에서 Envoy 프록시 프로세스를 실행할 시스템 사용자를 만듭니다. Envoy 프록시 사용자입니다. Envoy 프록시 사용자는 로그인이 사용 중지됩니다.

    sudo adduser --system --disabled-login envoy
    
  4. sidecar.env 파일을 수정하여 구성을 수정합니다. 각 변수에 대한 자세한 설명은 구성 파일의 인라인 주석을 참조하세요.

    1. sidecar.env 파일에서 ENVOY_USER 변수를 Envoy 프록시의 사용자 이름으로 설정합니다.

다음으로, Cloud Service Mesh를 사용하는 애플리케이션을 실행하는 각 VM 호스트에 대해 다음 단계를 수행합니다.

  1. 수정된 sidecar.env 파일이 있는 전체 traffic-director-xdsv3 디렉터리를 Cloud Service Mesh를 사용할 애플리케이션을 실행하는 각 VM 호스트에 복사합니다.
  2. run.sh 스크립트를 시스템의 시작 스크립트에 추가하면 VM이 재부팅될 때마다 스크립트가 실행됩니다.
  3. 각 VM 호스트에서 run.sh 스크립트를 실행합니다.

    cd traffic-director-xdsv3
    sudo ./run.sh start
    
  4. Envoy 프록시가 올바르게 시작되었는지 확인합니다.

    sudo ./run.sh status
    

    다음과 같은 출력이 표시됩니다.

    OK: Envoy seems to be running.
    OK: Traffic interception seems to be enabled.
    

    다음을 사용하여 트래픽 가로채기 방향을 확인할 수 있습니다.

    sudo iptables -S -t nat | grep ISTIO_REDIRECT
    

    예상되는 출력은 다음과 같습니다.

    -N ISTIO_REDIRECT
    -A ISTIO_OUTPUT -j ISTIO_REDIRECT
    -A ISTIO_REDIRECT -p tcp -j REDIRECT --to-ports 15001`
    

라우팅 규칙 맵

라우팅 규칙 맵에서 라우팅을 구성하는 방법에는 두 가지가 있습니다.

서비스의 실제 대상 VIP와 포트를 기반으로 라우팅을 사용 설정할 수 있습니다. 전달 규칙의 IPAddress 매개변수로 서비스의 VIP를 구성하면 이 주소 및 연결된 포트를 대상으로 하는 트래픽만 일치하고 URL 맵에 지정된 호스트 및 경로 매개변수에 따라 라우팅됩니다.

또는 전달 규칙의 주소를 0.0.0.0으로 설정할 수 있습니다. 이렇게 하면 요청의 대상 IP 주소와 관계없이 대상 포트를 기준으로 트래픽이 일치하도록 프록시가 구성됩니다. 그런 다음 URL 맵에 지정된 호스트 및 경로 매개변수에 따라 트래픽이 라우팅됩니다.

이 두 가지 접근 방식에 따라, 호스트 규칙에 구성된 대로 대상 VIP 및 포트 쌍 또는 대상 포트(VIP가 0.0.0.0인 경우)와 연결된 호스트 이름은 서비스 메시 구성 내에서 고유해야 합니다. 즉, 동일한 호스트 이름을 사용하면서 백엔드 집합이 서로 다른 두 개의 상이한 서비스가 있을 수 없습니다.

선택한 방법에 관계없이 서비스 호스트 이름/FQDN이 확인되는 VIP에 대한 트래픽과 서비스가 수신 대기하는 포트를 가로채서 사이드카 프록시로 리디렉션해야 합니다. 전체 호스트 구성 세부정보는 Cloud Service Mesh에 단일 Compute Engine VM 구성을 참조하세요.

VPC 네트워크의 각 전달 규칙은 0.0.0.0 주소를 비롯하여 VPC 네트워크당 IP 주소와 포트의 고유한 조합을 포함해야 합니다. 특정 VPC 네트워크에서 동일한 IP 주소와 포트를 사용하여 전달 규칙을 2개 이상 만들면 첫 번째 전달 규칙만 유효합니다. 나머지는 무시됩니다.

트래픽 손실을 방지하려면 아래 고급 트래픽 가로채기 구성 섹션을 따르세요.

고급 트래픽 가로채기 구성

VM이 Cloud Service Mesh에서 구성한 서비스에 액세스해야 하는 애플리케이션을 실행하는 경우, 해당 서비스의 백엔드로 향하는 트래픽 라우팅을 관리할 수 있도록 사이드카 프록시를 설치하고 VM에서 트래픽 가로채기를 구성해야 합니다.

배포에 대해 모든 발신 VM 트래픽을 가로채는 것이 허용되지 않는 경우 특정 트래픽을 사이드카 프록시로 리디렉션할 수 있으며 나머지 트래픽은 호스트 네트워킹 구성에 정의된 일반 경로를 따릅니다.

이를 위해 VM 및 수동 Envoy 배포를 사용한 Cloud Service Mesh 설정 절차에서 Compute Engine VM 호스트 설정을 다음과 같이 수정합니다.

  1. Cloud Service Mesh 제어 서비스가 해결해야 하는 IP 주소 범위를 결정합니다. 이러한 IP 주소를 대상으로 하는 트래픽을 가로채서 사이드카 프록시로 리디렉션합니다. 범위는 배포에 따라 달라집니다.

  2. sidecar.env 파일에서 SERVICE_CIDR 값을 이 범위로 설정합니다. 이 IP 주소에 대한 트래픽은 넷필터에 의해 사이드카 프록시로 리디렉션되고 Cloud Service Mesh에서 제공한 구성에 따라 부하 분산됩니다.

  3. 사이드카 프록시는 트래픽 가로채기에서 제외되는 전용 사용자로 엄격하게 실행할 필요는 없습니다. 하지만 이 방법을 사용하는 것이 권장됩니다.

  4. 기본 절차를 따라 run.sh 스크립트를 실행하면 이 특정 범위만 가로채기 및 리디렉션하도록 iptables가 구성됩니다.

  5. 다음 명령어를 실행하여 넷필터가 올바르게 구성되었는지 확인합니다. ${SERVICE_CIDR}의 경우 가로채기를 당한 IP 주소 범위로 구성한 값을 대체합니다.

    sudo iptables -L -t nat | grep -E "(ISTIO_REDIRECT).+${SERVICE_CIDR})"