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 서비스를 배포하려면 다음 안내를 따르세요.
저장소를 클론합니다.
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
컨테이너를 빌드하고 Cloud Build에 업로드합니다.
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_FILENAME
여기서 CLOUD_RUN_CONTAINER_FILENAME은 컨테이너의 파일 이름입니다.
컨테이너 이미지를 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 트리거 만들기
Pub/Sub 주제를 만듭니다.
gcloud pubsub topics create TOPIC_NAME
--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에 있는 이벤트 수신자 서비스의 이름입니다.
선택사항
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
이벤트 생성
메시지를 Pub/Sub 주제에 게시합니다.
gcloud pubsub topics publish TOPIC_NAME \ --message "World"
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
삭제
요금이 반복해서 청구되지 않도록 이 가이드에서 만든 리소스를 삭제합니다.
트리거를 삭제하려면 다음을 입력합니다.
gcloud beta events triggers delete TRIGGER-NAME \ --namespace NAMESPACE
여기서 NAMESPACE는 이벤트 브로커와 동일한 네임스페이스입니다.