Search code examples
google-cloud-platformgoogle-cloud-run

Google Cloud Run only has access to subset of metadata on http://metadata.google.internal


Problem: Google Cloud Run only provides a subset of documented metadata

I have a simple JVM based application running on Google Cloud Run that queries http://metadata.google.internal for available metadata.

The only metadata available is at the following paths:

  • http://metadata.google.internal/computeMetadata/v1/instance/service-accounts
  • http://metadata.google.internal/computeMetadata/v1/instance/zone
  • http://metadata.google.internal/computeMetadata/v1/project/project-id
  • http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id

As per the documentation, I was expecting more than this and hoping that I would be able to query the metadata server for the name of the Cloud Run service and the metadata required to configure Stackdriver Monitoring for a generic_node.

One clue that I have found is in the server header in the response from querying the Metadata server gives the value: Metadata Server for Serverless

Theory: Cloud Run is in beta and the Metadata Server for Serverless is separate from the typical metadata server and is a work in progress.

Question(s):

  1. Is this theory valid?
  2. Is this limitation documented somewhere?
    • Is there a roadmap for adding additional metadata?
  3. Is there an alternative for determining the metadata needed to configure Stackdriver?

Solution

  • Compute Metadata service you linked is only available to Compute Engine products (such as GCE, GKE). Many of the endpoints in there are about VM details, VM metadata/tags, VM startup scripts etc.

    These concepts don't apply to serverless compute environments. Therefore I don't think a feature request here will succeed.

    Serverless products such as App Engine, Cloud Functions and Cloud Run support a minimal version of the metadata service to provide basic functionality to SDKs (such as Google Cloud client libraries, Stackdriver or OpenTelemetry/OpenCensus clients, or gcloud CLI). Using these endpoints, Google’s own client libraries can automatically get auth tokens, discover project IDs etc.

    Also, these serverless products don't run on GCE, and don't have the same concepts. That's why a full metadata service isn't available for these products.

    The applicable for serverless environments are the endpoints you listed in your question.