-
Notifications
You must be signed in to change notification settings - Fork 449
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added documentation for the new GCP storage scaler (#660)
Co-authored-by: Tom Kerkhove <kerkhove.tom@gmail.com>
- Loading branch information
1 parent
16ccffd
commit 1871814
Showing
2 changed files
with
123 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
+++ | ||
title = "Google Cloud Platform Storage" | ||
availability = "2.7+" | ||
maintainer = "Community" | ||
description = "Scale applications based on the count of objects in a given Google Cloud Storage (GCS) bucket." | ||
layout = "scaler" | ||
go_file = "gcp_storage_scaler" | ||
+++ | ||
|
||
### 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. | ||
|
||
```yaml | ||
triggers: | ||
- type: gcp-storage | ||
metadata: | ||
bucketName: test-bucket | ||
targetObjectCount: '100' | ||
maxBucketItemsToScan: '1000' | ||
credentialsFromEnv: GOOGLE_APPLICATION_CREDENTIALS_JSON # Optional | ||
credentialsFromEnvFile: GOOGLE_APPLICATION_CREDENTIALS_JSON # Optional | ||
``` | ||
**Parameter list:** | ||
- `bucketName` - Name of the bucket in GCS. | ||
- `targetObjectCount` - Average target value to trigger scaling actions. (Default: `100`, Optional) | ||
- `maxBucketItemsToScan` - When to stop counting how many objects are in the bucket. (Default: `1000`, 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 | ||
|
||
```yaml | ||
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 | ||
|
||
```yaml | ||
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" | ||
``` | ||
|
||
#### Use TriggerAuthentication with GCP Identity | ||
|
||
```yaml | ||
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" | ||
``` |