URL 맵 사용

이 가이드에서는 Google Cloud URL 맵을 구성하는 방법을 설명합니다. 이 가이드를 수행하기 전에 URL 맵 개념을 숙지하세요.

URL 맵은 다음 Google Cloud 제품과 함께 사용됩니다.

내부 HTTP(S) 부하 분산 및 Traffic Director는 고급 트래픽 관리 사용 사례를 지원합니다. 자세한 내용은 다음을 참고하세요.

URL 맵 구성

백엔드 서비스백엔드 버킷을 URL 맵에 추가할 수 있습니다.

백엔드 버킷은 외부 HTTP(S) 부하 분산기에서만 지원됩니다.

URL 맵 추가

Console

Cloud Console을 사용하여 URL 맵을 추가하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 호스트 및 경로 규칙 추가를 클릭합니다.
  6. 호스트 필드, 경로 필드 또는 둘 모두를 입력하고 백엔드 서비스 또는 백엔드 버킷을 선택합니다.
  7. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵을 추가하려면 url-maps create 명령어를 실행합니다.

gcloud compute url-maps create URL_MAP_NAME \
   (--default-backend-bucket=DEFAULT_BACKEND_BUCKET | --default-service=DEFAULT_SERVICE) \
   [--description DESCRIPTION] \
   [--global | --region=REGION]

내부 HTTP(S) 부하 분산기의 경우 URL 맵을 만들 때 --region 플래그를 포함해야 합니다.

새로 만든 URL 맵은 하나의 경로, 즉 기본 경로(/*)와 일치합니다. 이 기본 경로 일치자는 자동으로 생성됩니다. 수동으로 생성된 경로 일치자 또는 호스트 규칙과 일치하지 않는 모든 트래픽은 URL 맵 기본 백엔드 서비스로 전송됩니다.

경로 일치자 추가

경로 일치자는 HTTP(S) 요청 경로 또는 경로 프리픽스(예: /video)를 백엔드 서비스에 매핑합니다. 지정된 경로와 일치하는 모든 트래픽은 경로 일치자의 경로 규칙에 의해 처리됩니다. 경로가 경로 규칙과 일치할 경우, 해당 경로 규칙과 연결된 백엔드로 요청이 전달됩니다. 요청이 경로 일치자 no path 규칙과 일치할 경우 해당 요청은 경로 일치자의 기본 백엔드로 전달됩니다.

Console

Cloud Console을 사용하여 경로 일치자를 만들려면 다음 단계를 수행합니다.

  1. 호스트 및 경로 규칙 화면이 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙 화면에서 호스트 및 경로 규칙 추가를 클릭하거나 기존 경로 필드를 클릭합니다.
  5. 구성할 경로를 입력합니다(예: /video).
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 경로 일치자를 만들려면 gcloud compute url-maps add-path-matcher 명령어를 실행합니다.

gcloud compute url-maps add-path-matcher URL_MAP_NAME \
   --default-service BACKEND_SERVICE \
   --path-matcher-name PATH_MATCHER \
   [--path-rules="PATH=SERVICE"]

이 명령어를 사용하려면 불일치 요청을 전송할 수 있는 기본 백엔드 서비스가 필요합니다. 선택사항으로 --path-rules 플래그를 사용하여 요청 경로와 백엔드 서비스 간의 매핑을 정의할 수 있습니다. 다음 예시에서는 요청 경로 /video//video/*video-service 백엔드 서비스로 라우팅합니다.

--path-rules="/video=video-service,/video/*=video-service"

url-maps createurl-maps add-path-matcher 명령어 모두 --default-service 매개변수가 있습니다. create에서 기본 서비스는 어떤 경로 일치자도 수신 URL과 일치하지 않을 경우에 사용되는 서비스입니다. add-path-matcher에서 기본 서비스는 경로가 경로 일치자와 일치하지만 --path-rules 중 어느 것도 일치하지 않을 때 사용되는 서비스입니다.

호스트 규칙 추가

Console

Cloud Console을 사용하여 호스트 규칙을 만들려면 다음 단계를 수행합니다.

  1. 호스트 및 경로 규칙 화면이 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙 화면에서 호스트 및 경로 규칙 추가를 클릭하거나 기존 호스트 필드를 클릭합니다.
  5. 정규화된 호스트 이름을 입력합니다(예: web.example.com).
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 호스트 규칙을 만들려면 gcloud compute url-maps add-host-rule 명령어를 실행합니다.

gcloud compute url-maps add-host-rule URL_MAP_NAME \
    --hosts=HOSTS --path-matcher-name=PATH_MATCHER

--hosts 플래그는 요청을 일치시킬 호스트 집합을 정의합니다. 예를 들어 다음 --hosts 값은 www.example.comgoogle.com의 모든 하위 도메인과 일치합니다.

--hosts *.google.com,www.example.com

백엔드 서비스 또는 백엔드 버킷 선택

Console

URL 맵에 백엔드 서비스 또는 백엔드 버킷을 선택하려면 다음 단계를 수행합니다.

  1. 호스트 및 경로 규칙 화면이 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙 화면의 백엔드 필드 풀다운 메뉴에서 사용 가능한 백엔드 서비스 또는 백엔드 버킷을 선택합니다.
  5. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 백엔드 서비스 또는 백엔드 버킷을 선택하려면 url-maps set-default-service 명령어를 실행합니다.

gcloud compute url-maps set-default-service URL_MAP_NAME
  (--default-backend-bucket=DEFAULT_BACKEND_BUCKET
  | --default-service=DEFAULT_SERVICE)[GCLOUD_WIDE_FLAG ...]

URL 맵 구성 유효성 검사

URL 맵을 배포하기 전에 URL 맵 구성의 유효성을 검사하여 맵이 의도한 대로 적절한 백엔드로 요청을 라우팅하는지 확인합니다. 이렇게 하려면 URL 맵 구성에 테스트를 추가하면 됩니다. 다양한 URL 맵 규칙을 실험하고 맵이 배포될 때 트래픽을 적절하게 라우팅하는지 확인하기 위해 필요한 만큼 테스트를 실행할 수 있습니다. 또한 향후 규칙 변경이 필요할 경우 실제로 새 구성을 적용하기 전에 변경사항을 테스트할 수 있습니다.

gcloud compute url-maps validate 명령어를 사용하여 URL 맵 구성의 유효성을 검사합니다. 이 명령어는 제공된 구성만 테스트합니다. 테스트 성공 여부와 관계없이 현재 배포된 URL 맵에는 변경사항이 저장되지 않습니다. 이는 동일한 테스트를 실행하지만 테스트를 통과하면 실제로 새 구성을 저장하는 다른 url-maps 명령어(edit, import)와는 다릅니다. 현재 배포된 URL 맵을 변경하지 않고 새 라우팅 구성을 테스트하려면 validate 명령어를 사용합니다.

validate 명령어를 사용하면 헤더 및 쿼리 매개변수를 기반으로 하는 라우팅, HTTP에서 HTTPS로 리디렉션, URL 재작성과 같은 고급 경로로 구성을 테스트할 수 있습니다. 테스트에 실시간 서비스나 기존 서비스를 사용할 필요는 없습니다. 예시 서비스 이름을 사용하여 테스트를 만들고 실행할 수 있습니다. 이는 URL 맵이 기존(반드시 실시간은 아님) 서비스를 참조해야 하는 다른 url-maps 명령어(예: edit, import)와는 다릅니다.

Console

Cloud Console을 사용하여 URL 맵 구성의 유효성을 검사할 수 없습니다. gcloud 또는 REST API를 대신 사용하세요.

gcloud

URL 맵 구성의 유효성을 검사하려면 gcloud compute url-maps validate 명령어를 사용합니다.

gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
  • PATH_TO_URL_MAP_CONFIG_FILE: 유효성 검사를 위해 URL 맵 구성이 포함된 파일의 경로로 바꿉니다.

기존 부하 분산기의 URL 맵 변경사항 검사

기존 부하 분산기의 URL 맵을 변경해야 하는 경우 이러한 구성 변경사항을 실제로 적용하기 전에 테스트할 수 있습니다.

  1. 부하 분산기의 기존 URL 맵을 YAML 파일로 내보냅니다.

    gcloud compute url-maps export URL_MAP_NAME \
       --destination PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    
  2. 새 구성으로 YAML 파일을 수정합니다. 예를 들어 외부 HTTP(S) 부하 분산기를 수정하고 경로가 /video인 모든 요청을 video-backend-service라는 새 백엔드 서비스로 전송하려면 다음과 같이 URL 맵 구성에 테스트를 추가할 수 있습니다.

    단일 기본 web-backend-service가 있는 기존 URL 맵 구성:

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     

    기본 web-backend-service 및 새로운 video-backend-service 백엔드 서비스 모두에 대한 경로 일치자와 테스트가 추가되어 수정된 URL 맵 구성입니다.

     kind: compute#urlMap
     name: URL_MAP_NAME
     defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     hostRules:
     - hosts:
       - '*'
       pathMatcher: pathmap
     pathMatchers:
     - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
       name: pathmap
       pathRules:
       - paths:
         - /video
         - /video/*
         service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
     tests:
     - description: Test routing to existing web service
       host: foobar
       path: /
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/web-backend-service
     - description: Test routing to new video service
       host: foobar
       path: /video
       service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendService/video-backend-service
    
  3. 새 구성을 검사합니다.

    gcloud compute url-maps validate --source PATH_TO_URL_MAP_CONFIG_FILE
    

    모든 테스트를 통과하면 다음과 같은 성공 메시지가 표시됩니다.

    Successfully validated [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/URL_MAP_CONFIG_FILE_NAME
    

    테스트가 실패하면 오류 메시지가 표시됩니다. URL 맵 구성 파일에 필요한 수정 사항을 작성하고 다시 유효성 검사를 시도합니다.

    Error: Invalid value for field 'urlMap.tests': ''.
    Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.
    
  4. 새 구성이 작동하고 기존 설정에 영향을 미치지 않는다는 것을 확인했다면 URL 맵으로 가져올 수 있습니다. 이 단계에서는 새 구성과 함께 URL 맵도 배포합니다.

    gcloud compute url-maps import URL_MAP_NAME \
       --source PATH_TO_URL_MAP_CONFIG_FILE \
       --global
    

URL 맵 테스트

URL 맵에 구성 테스트를 추가하여 의도대로 URL 맵이 백엔드 서비스 또는 백엔드 버킷으로 요청을 라우팅할 수 있습니다.

URL 맵을 수정하면 테스트가 실행되고 테스트에 실패하면 오류 메시지가 표시됩니다.

Error: Invalid value for field 'urlMap.tests': ''.
Test failure: Expect URL 'HOST/PATH' to map to service 'EXPECTED_BACKEND_SERVICE', but actually mapped to 'ACTUAL_BACKEND_SERVICE'.

URL 맵에 테스트를 추가하는 것은 선택사항입니다.

Console

Cloud Console에서 테스트를 실행하려면 다음 안내를 따르세요.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙을 클릭합니다.
  5. 호스트 및 경로 규칙 아래에서 구성 테스트 표시를 클릭합니다.
  6. 구성 테스트 추가를 클릭합니다. 다음 테스트 URL 및 백엔드를 추가합니다.
    • 테스트 URL example.com백엔드 www-service.
    • 테스트 URL example.net백엔드 www-service.
    • 테스트 URL example.net/web백엔드 www-service.
    • 테스트 URL example.com/videos백엔드 video-service.
    • 테스트 URL example.com/videos/browse백엔드 video-service.
    • 테스트 URL example.net/static백엔드 static-service.
    • 테스트 URL example.net/static/images백엔드 static-service.
  7. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵에 테스트를 추가하려면 gcloud compute url-maps edit 명령어를 실행합니다.

gcloud compute url-maps edit URL_MAP_NAME

이 명령어는 텍스트 편집기를 실행합니다. 외부 HTTP(S) 부하 분산기의 경우 테스트 형식은 다음과 같아야 합니다.

  tests:
    - host: example.com
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
    service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.com
      path: /videos
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.com
      path: /videos/browse
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/video-service
    - host: example.net
      path: /web
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/www-service
    - host: example.net
      path: /static
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service
    - host: example.net
      path: /static/images
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/static-service

내부 HTTP(S) 부하 분산기의 경우 서비스 URL이 리전별 백엔드 서비스를 가리켜야 합니다. 예를 들면 다음과 같습니다.

https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices//www-service

호스트 규칙에 호스트를 지정하지 않으면 모든 호스트의 URL(예: example.com 및 example.net)이 일치할 수 있습니다. 호스트 규칙이 있는 경우 example.com 및 example.net과 모두 일치하는 규칙을 만들어야 합니다.

URL 맵 나열

Console

Cloud Console에서 모든 URL 맵을 나열할 수 없습니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵 목록을 표시하려면 url-maps list 명령어를 실행합니다.

gcloud compute url-maps list

URL 맵에 대한 정보 가져오기

Console

URL 맵에 대한 정보를 가져오려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙을 확인합니다.

gcloud

gcloud 명령줄 도구를 사용하여 단일 URL 맵에 대한 정보를 가져오려면 url-maps describe 명령어를 실행합니다.

gcloud compute url-maps describe URL_MAP_NAME

URL 맵 삭제

URL 맵은 URL 맵을 참조하는 모든 대상 프록시를 삭제한 후에만 삭제할 수 있습니다. 자세한 내용은 대상 프록시 삭제를 참조하세요.

Console

URL 맵을 삭제하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 부하 분산기 세부정보 화면에서 호스트 및 경로 규칙을 확인합니다.
  5. URL 맵 오른쪽의 'X'를 클릭하여 삭제합니다. URL 맵이 사라집니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

gcloud 명령줄 도구를 사용하여 URL 맵을 삭제하려면 url-maps delete 명령어를 실행합니다. URL 맵을 삭제하려면 먼저 URL 맵을 참조하는 모든 대상 HTTP 프록시를 삭제해야 합니다.

gcloud compute url-maps delete URL_MAP_NAME [--quiet]

경로 일치자 삭제

Console

경로 일치자를 삭제하려면 다음 단계를 수행합니다.

  1. 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 기존 URL 맵의 경로 필드에서 경로 일치자 이름의 'x'를 클릭합니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

경로 일치자를 삭제하려면 gcloud compute url-maps remove-path-matcher 명령어를 실행합니다.

gcloud compute url-maps remove-path-matcher URL_MAP_NAME \
   [--path-matcher-name PATH_MATCHER]

호스트 규칙 삭제

Console

호스트 규칙을 삭제하려면 다음 단계를 수행합니다.

  1. 호스트 및 경로 규칙 화면이 아직 열려 있지 않다면 부하 분산 페이지로 이동합니다.

    부하 분산 페이지로 이동

  2. 부하 분산기의 이름을 클릭합니다.
  3. 부하 분산기 세부정보 화면에서 선택한 부하 분산기에 대해 수정 을 클릭합니다.
  4. 호스트 및 경로 규칙을 선택합니다.
  5. 기존 URL 맵의 호스트 필드에서 호스트 이름의 'x'를 클릭합니다.
  6. 호스트 및 경로 규칙 왼쪽에 있는 파란색 체크표시를 확인하고 업데이트 버튼을 클릭합니다.

gcloud

URL 맵에서 호스트 규칙을 삭제하려면 gcloud compute url-maps remove-host-rule 명령어를 실행합니다.

gcloud compute url-maps remove-host-rule URL_MAP_NAME --host=HOST

예를 들어 my-map이라는 URL 맵에서 google.com 호스트를 포함하는 호스트 규칙을 삭제하려면 다음 명령어를 실행합니다.

gcloud compute url-maps remove-host-rule my-map --host google.com

다음 단계