게이트웨이에 API 배포

기본 요건

API 게이트웨이에서 API 구성을 배포하려면 먼저 다음을 확인해야 합니다.

게이트웨이 ID 요구사항

아래 표시된 많은 gcloud 명령에서는 GATEWAY_ID 형식으로 게이트웨이의 ID를 지정해야 합니다. API 게이트웨이는 게이트웨이 ID에 대해 다음 요구사항을 적용합니다.

  • 최대 49자여야 합니다.
  • 소문자, 숫자, 대시만 포함해야 합니다.
  • 대시로 시작해서는 안 됩니다.
  • 밑줄을 포함해서는 안 됩니다.

배포된 API 구성의 엔드포인트 정의

API 구성을 게이트웨이에 배포하면 API 게이트웨이가 gateway.dev 도메인의 게이트웨이에 대해 고유한 URL을 만듭니다. 그러면 API 클라이언트가 아래 형식으로 URL을 사용해서 배포된 API 구성에 액세스할 수 있습니다.

https://GATEWAY_ID-HASH.REGION_CODE.gateway.dev

여기서 GATEWAY_ID는 게이트웨이의 이름이고, HASH는 API를 배포할 때 생성된 고유한 해시 코드이고, REGION_CODE는 게이트웨이를 배포한 GCP 리전의 코드입니다.

예를 들면 다음과 같습니다.

https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

게이트웨이에 API 구성 배포

gcloud 명령줄 도구를 사용하여 게이트웨이에 API 구성을 배포합니다. API 구성을 배포할 때는 API의 이름을 지정해야 합니다. API에 대해 게이트웨이가 아직 없으면 이 명령어로 생성됩니다.

게이트웨이에 API 구성을 배포하려면 다음 안내를 따르세요.

  1. 잘못된 프로젝트에 게이트웨이가 생성되지 않도록 다음 명령어로 반환되는 프로젝트 ID를 검증합니다.

    gcloud config list project

    기본 프로젝트를 변경해야 하는 경우 다음 명령어를 실행하고 PROJECT_ID를 서비스를 만들 Google Cloud 프로젝트의 ID로 바꿉니다.

    gcloud config set project PROJECT_ID
  2. gateway create 명령어 도움말을 확인합니다.

    gcloud api-gateway gateways create --help
  3. 다음 명령어를 실행하여 게이트웨이에 API 구성을 배포합니다.

    gcloud api-gateway gateways create GATEWAY_ID \
      --api=API_ID --api-config=CONFIG_ID \
      --location=GCP_REGION --project=PROJECT_ID

    각 항목의 의미는 다음과 같습니다.

    • GATEWAY_ID는 새 게이트웨이의 ID를 지정합니다. 게이트웨이가 아직 없으면 이 명령어로 생성됩니다.
    • API_ID는 이 게이트웨이와 연결된 API 게이트웨이 API의 ID를 지정합니다.
    • CONFIG_ID는 게이트웨이에 배포된 API 구성의 ID를 지정합니다. 게이트웨이를 만들 때 API 구성을 지정해야 합니다.
    • GCP_REGION은 배포된 게이트웨이의 GCP 리전을 지정합니다.

    • PROJECT_ID는 Google Cloud 프로젝트 ID를 지정합니다.

    게이트웨이가 생성될 때 gcloud가 터미널에 정보를 출력합니다.

  4. 성공적으로 완료되면 다음 명령어를 사용해서 게이트웨이에 대한 세부정보를 확인할 수 있습니다.

    gcloud api-gateway gateways describe GATEWAY_ID \
      --location=GCP_REGION --project=PROJECT_ID

    이 명령어는 다음을 반환합니다.

    apiConfig: projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID
    createTime: '2020-02-05T13:44:12.997862831Z'
    defaultHostname: my-gateway-a12bcd345e67f89g0h.uc.gateway.dev
    displayName: GATEWAY_ID
    name: projects/PROJECT_ID/locations/GCP_REGION/gateways/GATEWAY_ID
    serviceAccount:
      email: gateway-111111@222222-tp.iam.gserviceaccount.com
    state: ACTIVE
    updateTime: '2020-02-05T13:45:00.844705087Z'

    defaultHostname 속성 값을 기록해 둡니다. 이 값은 게이트웨이 URL의 호스트 이름 부분입니다. 이 게이트웨이에 배포된 API 구성에 액세스하려면 다음 형식의 URL을 사용합니다.

    https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev

gcloud 명령줄 도구에는 gcloud 참조에 설명된 옵션을 포함하여 많은 옵션이 사용됩니다. 또한 API 게이트웨이에 대해 게이트웨이를 만들 때 다음 옵션을 설정할 수 있습니다.

  • --async: 작업이 완료될 때까지 기다릴 필요 없이 터미널로 제어권을 즉시 반환합니다.
  • --display-name=NAME: 게이트웨이의 표시 이름 즉, UI에 표시되는 이름을 지정합니다. 이름에 공백을 사용하지 마세요. 대신 하이픈과 밑줄을 사용하세요. 기본값은 GATEWAY_ID입니다.
  • --labels=KEY1=VALUE1,KEY2=VALUE2,...: 게이트웨이와 연결된 라벨을 지정합니다.

게이트웨이 나열

특정 프로젝트의 게이트웨이를 나열하려면 다음 안내를 따르세요.

gcloud api-gateway gateways list --project=PROJECT_ID

이 명령어는 다음 형식으로 출력을 반환합니다.

NAME                                                          DISPLAY_NAME  STATE
projects/PROJECT_ID/locations/GCP_REGION/gateways/GATEWAY_ID  GATEWAY_ID    ACTIVE

특정 프로젝트 및 리전에 대해 게이트웨이를 나열하려면 다음 안내를 따르세요.

gcloud api-gateway gateways list --location=GCP_REGION --project=PROJECT_ID

filter 표현식을 사용해서 특정 API와 연관된 게이트웨이를 나열합니다.

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/*" \
  --project=PROJECT_ID

또는 filter를 사용해서 특정 API 구성에 대한 게이트웨이를 나열합니다.

gcloud api-gateway gateways list \
  --filter="apiConfig:projects/PROJECT_ID/locations/global/apis/API_ID/configs/CONFIG_ID" \
  --project=PROJECT_ID

프로젝트, 리전, 게이트웨이 ID를 사용해서 게이트웨이에 배포된 API 구성의 ID를 포함하여 게이트웨이에 대한 세부 정보를 가져옵니다.

gcloud api-gateway gateways describe GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

게이트웨이 업데이트

다음을 위해 게이트웨이를 업데이트합니다.

  • 게이트웨이에 다른 API 구성을 배포합니다.
  • 표시 이름을 업데이트합니다.
  • 라벨을 업데이트합니다.

다음 gcloud 명령어를 사용하여 기존 게이트웨이를 업데이트합니다.

gcloud api-gateway gateways update GATEWAY_ID \
  UPDATE_OPTIONS --api=API_ID --location=GCP_REGION --project=PROJECT_ID  

예를 들어 게이트웨이에 배포된 API 구성을 업데이트하려면 다음을 수행합니다.

gcloud api-gateway gateways update GATEWAY_ID \
  --api-config=NEW_CONFIG_ID --api=API_ID --location=GCP_REGION --project=PROJECT_ID 

여기서 NEW_CONFIG_ID는 게이트웨이에 배포할 새 API 구성을 지정합니다.

표시 이름을 업데이트하려면 --display-name 옵션을 사용합니다. 라벨을 업데이트하려면 다음을 사용합니다.

  • --update-labels=KEY=VALUE,...
  • --clear-labels
  • --remove-labels=KEY,...

다음 명령어를 사용하여 모든 업데이트 옵션을 확인합니다.

gcloud api-gateway gateways update --help

게이트웨이 삭제

다음 gcloud 명령어를 사용하여 기존 게이트웨이를 삭제합니다.

gcloud api-gateway gateways delete GATEWAY_ID \
  --location=GCP_REGION --project=PROJECT_ID

다음 단계