Google Cloud Platform Storage Latest

Scale applications based on the count of objects in a given Google Cloud Storage (GCS) bucket.

Availability: 2.7+ Maintainer: Community

Trigger Specification

This specification describes the gcp-storage scaler, which scales Kubernetes workloads based on the count of objects in a given Google Cloud Storage (GCS) bucket. This scaler assumes the worker, when run, will process and clear the bucket by deleting/moving objects therein.

triggers:
- type: gcp-storage
  metadata:
    bucketName: test-bucket
    targetObjectCount: '100'
    activationTargetObjectCount: '10' # Optional
    maxBucketItemsToScan: '1000'
    credentialsFromEnv: GOOGLE_APPLICATION_CREDENTIALS_JSON # Optional
    credentialsFromEnvFile: GOOGLE_APPLICATION_CREDENTIALS_JSON # Optional
    blobPrefix:  # Optional. Prefix for the Blob. Use this to specify sub path for the blobs if required. Default : ""
    blobDelimiter: # Optional. Delimiter for identifying the blob Prefix. Default: ""

Parameter list:

  • bucketName - Name of the bucket in GCS.
  • targetObjectCount - Average target value to trigger scaling actions. (Default: 100, Optional)
  • activationTargetObjectCount - Target value for activating the scaler. Learn more about activation here. (Default: 0, Optional)
  • maxBucketItemsToScan - When to stop counting how many objects are in the bucket. (Default: 1000, Optional)
  • blobPrefix - Prefix for the Blob. Use this to specify sub path for the blobs if required. (Default: "", Optional)
  • blobDelimiter - Delimiter for identifying the blob prefix. (Default: "", Optional) As counting the number of objects involves iterating over their metadata it is advised to set this number to the value of targetObjectCount * maxReplicaCount.

The metric name will be generated automatically based on the trigger index and bucketName, for example: s0-gcp-storage-bucketName.

You can provide in the metadata either credentialsFromEnv or credentialsFromEnvFile.

  • credentialsFromEnv - Set to the name of the environment variable that holds the credential information.
  • credentialsFromEnvFile - Set to the name of a json file that holds the credential information.

Authentication Parameters

You can use TriggerAuthentication CRD to configure the authenticate by providing the service account credentials in JSON.

Credential based authentication:

  • GoogleApplicationCredentials - Service account credentials in JSON.

Identity based authentication:

You can also use TriggerAuthentication CRD to configure the authentication using the associated service account of the running machine in Google Cloud. You only need to create a TriggerAuthentication as this example, and reference it in the ScaledObject. ClusterTriggerAuthentication can also be used if you intend to use it globally in your cluster.

Examples

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: gcp-storage-scaledobject
  namespace: keda-gcp-storage-test
spec:
  scaleTargetRef:
    name: keda-gcp-storage-go
  triggers:
  - type: gcp-storage
    metadata:
      bucketName: "Transactions"
      targetObjectCount: "5"
      credentialsFromEnv: GOOGLE_APPLICATION_CREDENTIALS_JSON

Use TriggerAuthentication with Kubernetes secret

apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-trigger-auth-gcp-credentials
spec:
  secretTargetRef:
  - parameter: GoogleApplicationCredentials
    name: gcp-storage-secret        # Required. Refers to the name of the secret
    key: GOOGLE_APPLICATION_CREDENTIALS_JSON       # Required.
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: gcp-storage-scaledobject
spec:
  scaleTargetRef:
    name: keda-gcp-storage-go
  triggers:
  - type: gcp-storage
    authenticationRef:
      name: keda-trigger-auth-gcp-credentials
    metadata:
      bucketName: "Transactions"
      targetObjectCount: "5"
      blobPrefix: blobsubpath # Default : ""
      blobDelimiter: "/" # Default: ""

Use TriggerAuthentication with GCP Identity

apiVersion: keda.sh/v1alpha1
kind: TriggerAuthentication
metadata:
  name: keda-trigger-auth-gcp-credentials
spec:
  podIdentity:
    provider: gcp
---
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: gcp-storage-scaledobject
spec:
  scaleTargetRef:
    name: keda-gcp-storage-go
  triggers:
  - type: gcp-storage
    authenticationRef:
      name: keda-trigger-auth-gcp-credentials
    metadata:
      bucketName: "Transactions"
      targetObjectCount: "5"