Pub/Sub에서 이벤트 수신

Google Cloud의 Cloud Run for Anthos에서 서비스를 배포한 후 이벤트를 만들고 Pub/Sub에서 해당 서비스로 전송하는 방법을 알아봅니다.

시작하기 전에

이 작업을 완료하려면 이벤트 브로커가 있어야 하고 실행 중인 네임스페이스를 알고 있어야 합니다. Cloud Run for Anthos에 대해 이벤트를 구성하고 이벤트 브로커를 만드는 방법을 알아봅니다.

실행 중인 이벤트 브로커가 있으면 다음을 실행하여 Kubernetes 네임스페이스를 볼 수 있습니다.

kubectl get brokers -n NAMESPACE

Cloud Run for Anthos 이벤트 수신자 서비스 배포

이벤트 브로커에서 이벤트를 수신하는 Cloud Run for Anthos를 배포합니다.

Cloud Run for Anthos 서비스를 배포하려면 다음 안내를 따르세요.

  1. 저장소를 클론합니다.

    Python

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    cd python-docs-samples/eventarc/pubsub
    

    자바

    git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git
    cd java-docs-samples/eventarc/pubsub
    

    Go

    git clone https://github.com/GoogleCloudPlatform/golang-samples.git
    cd golang-samples/eventarc/pubsub
    

    Node.js

    git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git
    cd nodejs-docs-samples/eventarc/pubsub
    

    C#

    git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git
    cd dotnet-docs-samples/eventarc/pubsub
    
  2. 컨테이너를 빌드하고 Cloud Build에 업로드합니다.

    gcloud builds submit \
      --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
    

    여기서 CLOUD_RUN_CONTAINER_FILENAME은 컨테이너의 파일 이름입니다.

  3. 컨테이너 이미지를 Cloud Run for Anthos에 배포합니다.

    gcloud run deploy CLOUD_RUN_SERVICE_NAME \
        --namespace=NAMESPACE \
        --image gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
    

    여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스입니다.

서비스 URL이 표시되면 성공적으로 배포된 것입니다.

Pub/Sub 트리거 만들기

  1. Pub/Sub 주제를 만듭니다.

    gcloud pubsub topics create TOPIC_NAME
    
  2. --parameters topic=TOPIC_NAME--target-service=CLOUD_RUN_SERVICE_NAME으로 트리거를 만듭니다.

    gcloud beta events triggers create TRIGGER_NAME \
      --namespace NAMESPACE \
      --target-service=CLOUD_RUN_SERVICE_NAME \
      --type=google.cloud.pubsub.topic.v1.messagePublished \
      --source=CloudPubSubSource \
      --parameters topic=TOPIC_NAME
    

    여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스이고, TOPIC-NAME은 생성된 Pub/Sub 주제의 이름이며, CLOUD_RUN_SERVICE_NAME은 Google Cloud의 Cloud Run for Anthos에 있는 이벤트 수신자 서비스의 이름입니다.

  3. 선택사항 gcloud 명령줄 도구를 사용하여 트리거가 작동하는지 확인합니다.

    gcloud beta events triggers list \
      --target-service 'CLOUD_RUN_SERVICE_NAME' \
      --namespace NAMESPACE
    

    여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스입니다.

    출력은 다음과 비슷합니다.

    TRIGGER         EVENT TYPE                                      TARGET
    trigger-name    google.cloud.pubsub.topic.v1.messagePublished   cloud-run-service
    

이벤트 생성

  1. 메시지를 Pub/Sub 주제에 게시합니다.

    gcloud pubsub topics publish TOPIC_NAME \
      --message "World"
    
  2. Cloud Run for Anthos 서비스 수신 로그를 통해 게시된 이벤트를 확인합니다.

    kubectl logs \
      --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \
      -c user-container \
      -n NAMESPACE \
      --tail=100
    

    여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스입니다.

    로그에서 다음과 비슷한 항목을 찾습니다.

    Hello World! ID: 961750303502725
    

삭제

요금이 반복해서 청구되지 않도록 이 가이드에서 만든 리소스를 삭제합니다.

  1. 트리거를 삭제하려면 다음을 입력합니다.

    gcloud beta events triggers delete TRIGGER-NAME \
        --namespace NAMESPACE
    

    여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스입니다.