Cloud Run for Anthos on Google Cloud にサービスをデプロイし、イベントを作成して Cloud Audit Logs からそのサービスに送信する方法を学習します。
始める前に
このタスクを完了するには、イベント ブローカーを使用し、それが実行されている名前空間を把握する必要があります。Cloud Run for Anthos 用にイベントを構成し、イベント ブローカーを作成する方法を学習します。
イベント ブローカーが実行されている場合は、次のコマンドを実行して Kubernetes Namespace を表示できます。
kubectl get brokers -n NAMESPACE
Cloud Run for Anthos イベント レシーバー サービスをデプロイする
イベント ブローカーからイベントを受信する Cloud Run for Anthos サービスをデプロイします。
リポジトリのクローンを作成します。
Python
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git cd python-docs-samples/eventarc/audit-storage
Java
git clone https://github.com/GoogleCloudPlatform/java-docs-samples.git cd java-docs-samples/eventarc/audit-storage
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git cd golang-samples/eventarc/audit_storage
Node.js
git clone https://github.com/GoogleCloudPlatform/nodejs-docs-samples.git cd nodejs-docs-samples/eventarc/audit-storage
C#
git clone https://github.com/GoogleCloudPlatform/dotnet-docs-samples.git cd dotnet-docs-samples/eventarc/audit-storage
コンテナをビルドして、Cloud Build にアップロードします。
gcloud builds submit \ --tag gcr.io/$(gcloud config get-value project)/CLOUD_RUN_CONTAINER_NAME
ここで、CLOUD_RUN_CONTAINER_NAME はコンテナのファイル名です。
コンテナ イメージを 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 が表示されたら、デプロイが正常に完了しています。
Cloud Audit Logs のトリガーを作成する
イベント ブローカーと同じ名前空間にトリガーを作成します。
gcloud beta events triggers create TRIGGER_NAME \ --namespace NAMESPACE \ --target-service=CLOUD_RUN_SERVICE_NAME \ --type=google.cloud.audit.log.v1.written \ --parameters serviceName=pubsub.googleapis.com \ --parameters methodName=google.pubsub.v1.Publisher.CreateTopic
この例では、
methodName
エントリがgoogle.pubsub.v1.Publisher.CreateTopic
に等しい Cloud Audit Logs のエントリをフィルタリングします。他のフィルタリング オプションについては、AuditLog の形式をご覧ください。60 秒後、トリガーが機能していることを確認します。
gcloud beta events triggers list \ --target-service CLOUD_RUN_SERVICE_NAME \ --namespace NAMESPACE
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
出力は次のようになります。
TRIGGER EVENT TYPE TARGET trigger-name google.cloud.audit.log.v1.written cloud-run-service
イベントを生成する
Pub/Sub トピックを作成してイベントを生成します。
gcloud pubsub topics create TOPIC_NAME
イベントが Cloud Run for Anthos サービスで受信されたことを確認します。
kubectl logs \ --selector serving.knative.dev/service=CLOUD_RUN_SERVICE_NAME \ -c user-container \ -n NAMESPACE \ --tail=200
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
出力は次のようになります。
[...] [2020-09-10 18:51:28 +0000] [1] [INFO] Starting gunicorn 20.0.4 [2020-09-10 18:51:28 +0000] [1] [INFO] Listening at: http://0.0.0.0:8080 (1) [2020-09-10 18:51:28 +0000] [1] [INFO] Using worker: threads [2020-09-10 18:51:28 +0000] [7] [INFO] Booting worker with pid: 7 GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted GCS CloudEvent type: pubsub.googleapis.com/projects/PROJECT_NAME/topics/to-be-deleted2 [...]
クリーンアップ
定期的な課金が発生しないように、このチュートリアルで作成したリソースを削除します。
トリガーを削除するには、次のように入力します。
gcloud beta events triggers delete TRIGGER_NAME \ --namespace NAMESPACE
ここで、NAMESPACE はイベント ブローカーと同じ名前空間です。
Pub/Sub トピックを削除します。
gcloud pubsub topics delete TOPIC_NAME