Class: Google::Cloud::Bigtable::Instance::ClusterMap

Inherits:
Hash
  • Object
show all
Defined in:
lib/google/cloud/bigtable/instance/cluster_map.rb

Overview

Instance::ClusterMap is a hash with cluster ID keys and cluster configuration values. It is used to create a cluster.

Examples:

require "google/cloud/bigtable"

bigtable = Google::Cloud::Bigtable.new

job = bigtable.create_instance "my-instance" do |clusters|
  clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD
end

job.wait_until_done!

Instance Method Summary collapse

Instance Method Details

#add(name, location, nodes: nil, storage_type: nil, kms_key: nil) ⇒ Object

Adds a cluster to the cluster map.

Examples:

require "google/cloud/bigtable"

bigtable = Google::Cloud::Bigtable.new

job = bigtable.create_instance "my-instance" do |clusters|
  clusters.add "test-cluster", "us-east1-b", nodes: 3, storage_type: :SSD
end

job.wait_until_done!

With a Cloud KMS encryption key name for a CMEK-protected cluster:

require "google/cloud/bigtable"

bigtable = Google::Cloud::Bigtable.new

kms_key_name = "projects/a/locations/b/keyRings/c/cryptoKeys/d"
job = bigtable.create_instance "my-instance" do |clusters|
  clusters.add "test-cluster", "us-east1-b", kms_key: kms_key_name
end

job.wait_until_done!

Parameters:

  • name (String)

    The unique identifier for the cluster.

  • location (String)

    The location where this cluster's nodes and storage reside. For best performance, clients should be located as close as possible to this cluster. Currently only zones are supported.

  • nodes (Integer) (defaults to: nil)

    Number of nodes for the cluster. When creating an instance of type :DEVELOPMENT, nodes must not be set.

  • storage_type (Symbol) (defaults to: nil)

    The type of storage used by this cluster to serve its parent instance's tables, unless explicitly overridden. Valid values are:

    • :SSD - Flash (SSD) storage should be used.
    • :HDD - Magnetic drive (HDD) storage should be used.

    If not set then default will set to :STORAGE_TYPE_UNSPECIFIED.

  • kms_key (String) (defaults to: nil)

    The full name of a Cloud KMS encryption key for a CMEK-protected cluster, in the format projects/{key_project_id}/locations/{location}/keyRings/{ring_name}/cryptoKeys/{key_name}.

    The requirements for this key are:

    1. The Cloud Bigtable service account associated with the project that contains this cluster must be granted the cloudkms.cryptoKeyEncrypterDecrypter role on the CMEK key.
    2. Only regional keys can be used and the region of the CMEK key must match the region of the cluster.
    3. All clusters within an instance must use the same CMEK key.


95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/google/cloud/bigtable/instance/cluster_map.rb', line 95

def add name, location, nodes: nil, storage_type: nil, kms_key: nil
  if kms_key
    encryption_config = Google::Cloud::Bigtable::Admin::V2::Cluster::EncryptionConfig.new(
      kms_key_name: kms_key
    )
  end
  attrs = {
    serve_nodes:          nodes,
    location:             location,
    default_storage_type: storage_type,
    encryption_config:    encryption_config
  }.compact

  self[name] = Google::Cloud::Bigtable::Admin::V2::Cluster.new attrs
end