Ocean GKE

This post demonstrates how to create an Ocean Cluster by importing an existing GKE cluster using the Spotinst Terraform V2 plugin.

This post assumes that you already have a Spotinst account and went through Spotinst Terraform Installation.

Creating a GKE Ocean Cluster

 

Example Usage – Creating a GKE Ocean Import resource – Basic Example

resource "spotinst_ocean_gke_import" "example" {

  cluster_name = "example-cluster-name"
  location     = "us-central1-a"
  
  whitelist = ["n1-standard-1", "n1-standard-2"]
  
  backend_services = [{
      service_name  = "example-backend-service"
      location_type = "regional"
      scheme        = "INTERNAL"
      named_ports = {
        name  = "http"
        ports = [80, 8080]
      }
  }]
}

 

Parameters

  • cluster_name – (Required) The group name.
  • location – (Required) The maximum number of instances the group should have at any time.
  • whitelist – (Required) the list of instance types to be used by Ocean when provisioning new instances.
  • backend_services – (Required) The minimum number of instances the group should have at any time.
    • service_name – (Required) The name of the backend service.
    • location_type – (Optional) Sets which location the backend services will be active. Valid values: regional, global.
    • scheme – (Optional) Use when location_type is regional. Set the traffic for the backend service to either between the instances in the VPC, or to traffic from the internet. Valid values: INTERNAL, EXTERNAL.
    • named_port – (Optional) Describes a named port and a list of ports.
      • port_name – (Required) The name of the port.
      • ports – (Required) A list of ports.

Example Usage – Creating a custom GKE Ocean Launch Specification

Provides a custom Spotinst Ocean GKE Launch Spec resource.

resource "spotinst_ocean_gke_launch_spec" "example" {
  ocean_id     = "o-123456"
  source_image = "image"
  
  metadata = [{
      key   = "gci-update-strategy"
      value = "update_disabled"
  }]
  
  labels = [{
   key   = "labelKey"
   value = "labelVal"
  }]
  
  taints = [{
   key    = "taintKey"
   value  = "taintVal"
   effect = "taintEffect"
  }]
}

 

Parameters

  • ocean_id – (Required) The ID of the Ocean cluster in which the launchSpec is to be created.
  • source_image – (Required) Image URL.
  • metadata – (Required) launchSpec’s metadata.
  • labels – (Optional) Set labels for the custom launchSpec.
  • taints – (Optional) launchSpec’s taints.

Example Usage – Creating a GKE Ocean Launch Specification Import

Provides a custom Spotinst Ocean GKE Launch Specification Import resource. Used to import an existing node pool into a Launch Specification of an existing Ocean cluster.

resource "spotinst_ocean_gke_launch_spec_import" "example" {
  ocean_id        = "o-123456"
  node_pool_name  = "default-pool"
}

 

Parameters

  • ocean_id – (Required) The ID of the Ocean cluster in which the launchSpec is to be created.
  • node_pool_name – (Required) The node pool to be imported.