File: //snap/google-cloud-cli/current/lib/surface/redis/clusters/create.yaml
- release_tracks: [ALPHA, BETA, GA]
help_text:
brief: |
Create a new Memorystore for Redis Cluster instance.
description: |
Create a new Memorystore for Redis Cluster instance, and uses Private Service Connect service connectivity automation to automate connectivity for instances.
This command can fail for the following reasons:
* A cluster with the same name already exists.
* The active account does not have permission to create clusters.
* Some required APIs not enabled yet.
* No connection policy defined yet on the network and in the region a cluster will be created.
* Miss the steps for creating and configuring a service account (to grant permissions) in both host project and service project, if a shared VPC network is used.
Refer to https://cloud.google.com/memorystore/docs/cluster/networking#prerequisites_required_before_creating_a_cluster for prerequisites.
examples: |
To create a cluster with name `my-redis-cluster` in region `us-central1`
with 3 shards and with a discovery endpoint created on network "default", run:
$ {command} my-redis-cluster --region=us-central1 --shard-count=3 \
--network=projects/NETWORK_PROJECT_ID/global/networks/default
arguments:
resource:
spec: !REF googlecloudsdk.command_lib.redis.resources:cluster
help_text: |
Arguments and flags that specify the cluster you want to create.
Your cluster ID must be 1 to 63 characters and use only lowercase letters, numbers, or
hyphens. It must start with a lowercase letter and end with a lowercase letter or number.
params:
- arg_name: node-type
api_field: cluster.nodeType
help_text: Node Type of the redis cluster Node.
choices:
- enum_value: REDIS_HIGHMEM_MEDIUM
arg_value: redis-highmem-medium
- enum_value: REDIS_HIGHMEM_XLARGE
arg_value: redis-highmem-xlarge
- enum_value: REDIS_STANDARD_SMALL
arg_value: redis-standard-small
- enum_value: REDIS_SHARED_CORE_NANO
arg_value: redis-shared-core-nano
- arg_name: network
api_field: cluster.pscConfigs.network
help_text: |
The network used to create your instance. It must use the format:
projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID.
The network ID used here must match the network ID used by the service connection policy.
Otherwise, the create operation fails
- arg_name: auth-mode
api_field: cluster.authorizationMode
help_text: |
Available authorization mode of a Redis cluster.
choices:
- enum_value: AUTH_MODE_DISABLED
arg_value: disabled
help_text: |
Authorization is disabled for the cluster.
- enum_value: AUTH_MODE_IAM_AUTH
arg_value: iam-auth
help_text: |
IAM basic authorization is enabled for the cluster.
- arg_name: replica-count
api_field: cluster.replicaCount
type: int
help_text: |
The replica count of each shard.
- arg_name: shard-count
api_field: cluster.shardCount
type: int
help_text: |
The shard count of the cluster.
- arg_name: transit-encryption-mode
api_field: cluster.transitEncryptionMode
help_text: |
Transit encryption mode used for the Redis cluster.
If not provided, encryption is disabled for the cluster.
choices:
- enum_value: TRANSIT_ENCRYPTION_MODE_DISABLED
arg_value: disabled
help_text: |
In-transit encryption is disabled for the cluster.
- enum_value: TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION
arg_value: server-authentication
help_text: |
The cluster uses server managed encryption for in-transit encryption.
- arg_name: deletion-protection
api_field: cluster.deletionProtectionEnabled
type: bool
# To distinguish b/w unset and default value. Otherwise, the request is always sent with
# deletionProtectionEnabled=false.
default: null
help_text: |
Enable deletion protection for the Redis Cluster. Use
`--deletion-protection`/`--no-deletion-protection` to enable/disable it.
- arg_name: redis-config
api_field: cluster.redisConfigs.additionalProperties
metavar: KEY=VALUE
help_text: |
A list of Redis config KEY=VALUE pairs to set on the Redis Cluster according to
http://redis.io/topics/config. Currently the supported Redis configs are:
maxmemory-clients, maxmemory, maxmemory-policy, notify-keyspace-events,
slowlog-log-slower-than, maxclients.
type:
arg_dict:
flatten: true
spec:
- api_field: key
- api_field: value
- arg_name: zone-distribution-mode
api_field: cluster.zoneDistributionConfig.mode
help_text: |
Determines how the cluster nodes are distributed across zones.
choices:
- enum_value: MULTI_ZONE
arg_value: multi-zone
help_text: |
Allocate cluster nodes across multiple zones.
- enum_value: SINGLE_ZONE
arg_value: single-zone
help_text: |
Allocate cluster nodes in a single zone.
- arg_name: zone
api_field: cluster.zoneDistributionConfig.zone
help_text: |
The zone used to allocate the cluster nodes. Applicable only if the zone-distribution-mode
is set to single-zone.
- arg_name: persistence-mode
api_field: cluster.persistenceConfig.mode
help_text: |
Operation mode for persistence.
choices:
- enum_value: DISABLED
arg_value: disabled
help_text: Persistence mode is disabled
- enum_value: RDB
arg_value: RDB
help_text: RDB-based persistence
- enum_value: AOF
arg_value: AOF
help_text: AOF-based persistence
- arg_name: rdb-snapshot-period
api_field: cluster.persistenceConfig.rdbConfig.rdbSnapshotPeriod
help_text: |
Attempted period between RDB snapshots.
choices:
- enum_value: ONE_HOUR
arg_value: 1h
help_text: 1 hour
- enum_value: SIX_HOURS
arg_value: 6h
help_text: 6 hours
- enum_value: TWELVE_HOURS
arg_value: 12h
help_text: 12 hours
- enum_value: TWENTY_FOUR_HOURS
arg_value: 24h
help_text: (default) 24 hours
- arg_name: rdb-snapshot-start-time
api_field: cluster.persistenceConfig.rdbConfig.rdbSnapshotStartTime
help_text: |
Date and time of the first snapshot in the ISO 1801 format, and alignment time for future snapshots. For example, 2024-01-01T01:00:00Z.
If not specified, the current time will be used.
- arg_name: aof-append-fsync
api_field: cluster.persistenceConfig.aofConfig.appendFsync
help_text: |
Fsync configuration.
choices:
- enum_value: NO # yamllint disable-line rule:truthy
arg_value: no # yamllint disable-line rule:truthy
help_text: |
Redis will not explicitly call fsync.
- enum_value: EVERYSEC
arg_value: everysec
help_text: |
(default) Redis explicitly calls fsync every second.
- enum_value: ALWAYS
arg_value: always
help_text: |
Redis explicitly calls fsync for every write command.
- arg_name: maintenance-window-day
api_field: cluster.maintenancePolicy.weeklyMaintenanceWindow.day
choices:
- arg_value: monday
enum_value: MONDAY
- arg_value: tuesday
enum_value: TUESDAY
- arg_value: wednesday
enum_value: WEDNESDAY
- arg_value: thursday
enum_value: THURSDAY
- arg_value: friday
enum_value: FRIDAY
- arg_value: saturday
enum_value: SATURDAY
- arg_value: sunday
enum_value: SUNDAY
help_text: |
Day of week when the window starts, e.g. `sunday`.
- arg_name: maintenance-window-hour
api_field: cluster.maintenancePolicy.weeklyMaintenanceWindow.startTime.hours
help_text: |
Hour of day (`0` to `23`) for the start of maintenance window, in UTC time zone.
processor: googlecloudsdk.command_lib.redis.clusters_update_util:CheckMaintenanceWindowStartTimeField
- arg_name: cross-cluster-replication-role
api_field: cluster.crossClusterReplicationConfig.clusterRole
help_text: |
The role of the cluster in cross cluster replication.
choices:
- enum_value: SECONDARY
arg_value: secondary
help_text: |
Create a secondary cluster.
- arg_name: primary-cluster
api_field: cluster.crossClusterReplicationConfig.primaryCluster.cluster
help_text: |
The primary cluster that the secondary cluster will replicate from. It must use the format:
projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID. It must refer to an existing cluster. Otherwise, the create operation fails.
- arg_name: automated-backup-mode
api_field: cluster.automatedBackupConfig.automatedBackupMode
help_text: |
Automated backup mode
choices:
- enum_value: DISABLED
arg_value: disabled
help_text: |
(default) Automated backup is disabled.
- enum_value: ENABLED
arg_value: enabled
help_text: |
Automated backup is enabled.
- arg_name: automated-backup-start-time
api_field: cluster.automatedBackupConfig.fixedFrequencySchedule.startTime
help_text: |
One-hour window when you want automated-backup operations to start. Specify the time in the format HH:00 on a 24-hour cycle in UTC time.
ALPHA:
processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayAlpha
BETA:
processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayBeta
GA:
processor: googlecloudsdk.command_lib.redis.cluster_util:ParseTimeOfDayGa
- arg_name: automated-backup-ttl
api_field: cluster.automatedBackupConfig.retention
type: googlecloudsdk.core.util.times:ParseDuration
processor: googlecloudsdk.core.util.times:FormatDurationForJson
help_text: |
Time to live for automated backups. A backup will be deleted automatically after the TTL
is reached. It ranges from 1 day to 365 days. For example, "10d" for 10 days. If not specified, the default value is 35 days.
- group:
mutex: true
params:
- arg_name: import-gcs-object-uris
type: 'googlecloudsdk.calliope.arg_parsers:ArgList:'
api_field: cluster.gcsSource.uris
help_text: |
URIs of Google Cloud Storage objects to import from. For example, `gs://bucket/folder/file1.rdb,gs://bucket/folder/file2.rdb`.
- arg_name: import-managed-backup
api_field: cluster.managedBackupSource.backup
help_text: |
Managed backup to import from. For example, `projects/PROJECT_ID/locations/REGION/backupCollections/BACKUP_COLLECTION_ID/backups/BACKUP_ID`.
- arg_name: kms-key
api_field: cluster.kmsKey
help_text: |
The resource name of the customer-managed encryption key (CMEK) to use for the cluster.
It must use this format:
projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/CRYPTO_KEY.
The key must be in the same region as the cluster. Otherwise, the create operation fails.
async:
collection: redis.projects.locations.operations
request:
ALPHA:
api_version: v1alpha1
BETA:
api_version: v1beta1
GA:
api_version: v1
collection: redis.projects.locations.clusters
output:
format: yaml