diff --git a/mmv1/products/gkeonprem/VmwareAdminCluster.yaml b/mmv1/products/gkeonprem/VmwareAdminCluster.yaml new file mode 100644 index 000000000000..e492d84fb9d6 --- /dev/null +++ b/mmv1/products/gkeonprem/VmwareAdminCluster.yaml @@ -0,0 +1,719 @@ +# Copyright 2023 Google Inc. +# Licensed under the Apache License, Version 2.0 (the License); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +--- +name: "VmwareAdminCluster" +min_version: beta +base_url: "projects/{{project}}/locations/{{location}}/vmwareAdminClusters" +create_url: "projects/{{project}}/locations/{{location}}/vmwareAdminClusters?vmware_admin_cluster_id={{name}}" +update_url: "projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}" +self_link: "projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}" +update_verb: "PATCH" +update_mask: true +description: "A Google VMware Admin Cluster." +exclude_delete: true +id_format: "projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}" +import_format: ["projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}"] +timeouts: !ruby/object:Api::Timeouts + insert_minutes: 60 + delete_minutes: 60 + update_minutes: 60 +async: + actions: ['create', 'delete', 'update'] + type: 'OpAsync' + operation: + base_url: '{{op_id}}' + kind: 'gkeonprem#operation' + path: 'name' + wait_ms: 1000 + result: + path: 'response' + resource_inside_response: true + error: + path: 'error' + message: 'message' +custom_code: +taint_resource_on_failed_create: true +examples: + - name: "gkeonprem_vmware_admin_cluster_basic" + primary_resource_id: "admin-cluster-basic" + min_version: beta + vars: + name: "basic" + test_env_vars: + project: "fake-backend-360322" + - name: 'gkeonprem_vmware_admin_cluster_full' + primary_resource_id: 'admin-cluster-full' + min_version: beta + vars: + name: 'full' + test_env_vars: + project: 'fake-backend-360322' + - name: 'gkeonprem_vmware_admin_cluster_metallb' + primary_resource_id: 'admin-cluster-metallb' + min_version: beta + vars: + name: 'metallb' + test_env_vars: + project: 'fake-backend-360322' +parameters: + - type: String + name: "name" + description: The VMware admin cluster resource name. + immutable: true + url_param_only: true + required: true + - type: String + name: "location" + description: The location of the resource. + immutable: true + url_param_only: true + required: true +properties: + - type: String + name: "description" + description: | + A human readable description of this VMware admin cluster. + default_from_api: true + - type: String + name: "onPremVersion" + description: | + The Anthos clusters on the VMware version for the admin cluster. + - type: String + name: "imageType" + description: | + The OS image type for the VMware admin cluster. + default_from_api: true + - type: String + name: "bootstrapClusterMembership" + description: | + The bootstrap cluster this VMware admin cluster belongs to. + default_from_api: true + - type: KeyValueAnnotations + name: "annotations" + description: | + Annotations on the VMware Admin Cluster. + This field has the same restrictions as Kubernetes annotations. + The total size of all keys and values combined is limited to 256k. + Key can have 2 segments: prefix (optional) and name (required), + separated by a slash (/). + Prefix must be a DNS subdomain. + Name must be 63 characters or less, begin and end with alphanumerics, + with dashes (-), underscores (_), dots (.), and alphanumerics between. + default_from_api: true + - type: NestedObject + name: "networkConfig" + description: | + The VMware admin cluster network configuration. + required: true + properties: + - type: Array + name: 'serviceAddressCidrBlocks' + item_type: + type: String + required: true + description: | + All services in the cluster are assigned an RFC1918 IPv4 address + from these ranges. Only a single range is supported.. This field + cannot be changed after creation. + - type: Array + name: 'podAddressCidrBlocks' + item_type: + type: String + required: true + description: | + All pods in the cluster are assigned an RFC1918 IPv4 address from these ranges. + Only a single range is supported. This field cannot be changed after creation. + - type: NestedObject + name: 'staticIpConfig' + description: Configuration settings for a static IP configuration. + exactly_one_of: + - network_config.0.static_ip_config + - network_config.0.dhcp_ip_config + properties: + - type: Array + name: ipBlocks + description: + Represents the configuration values for static IP allocation to + nodes. + item_type: + type: NestedObject + properties: + - type: String + name: 'netmask' + description: The netmask used by the VMware Admin Cluster. + required: true + - type: String + name: 'gateway' + description: + The network gateway used by the VMware Admin Cluster. + required: true + - type: Array + name: 'ips' + description: + The node's network configurations used by the VMware Admin + Cluster. + required: true + item_type: + type: NestedObject + properties: + - type: String + name: 'ip' + description: + IP could be an IP address (like 1.2.3.4) or a CIDR + (like 1.2.3.0/24). + required: true + - type: String + name: 'hostname' + description: + Hostname of the machine. VM's name will be used if + this field is empty. + default_from_api: true + - type: NestedObject + name: 'dhcpIpConfig' + description: Configuration settings for a DHCP IP configuration. + exactly_one_of: + - network_config.0.static_ip_config + - network_config.0.dhcp_ip_config + default_from_api: true + properties: + - type: Boolean + name: enabled + description: | + enabled is a flag to mark if DHCP IP allocation is + used for VMware admin clusters. + required: true + - type: String + name: 'vcenterNetwork' + description: + vcenter_network specifies vCenter network name. + - type: NestedObject + name: 'hostConfig' + description: + Represents common network settings irrespective of the host's IP + address. + default_from_api: true + properties: + - type: Array + name: 'dnsServers' + description: DNS servers. + item_type: + type: String + - type: Array + name: 'ntpServers' + description: NTP servers. + item_type: + type: String + - type: Array + name: 'dnsSearchDomains' + description: DNS search domains. + item_type: + type: String + - type: NestedObject + name: 'haControlPlaneConfig' + description: + Configuration for HA admin cluster control plane. + properties: + - type: NestedObject + name: 'controlPlaneIpBlock' + description: Static IP addresses for the control plane nodes. + properties: + - type: String + name: 'netmask' + description: The netmask used by the VMware Admin Cluster. + required: true + - type: String + name: 'gateway' + description: + The network gateway used by the VMware Admin Cluster. + required: true + - type: Array + name: 'ips' + description: + The node's network configurations used by the VMware Admin + Cluster. + required: true + item_type: + type: NestedObject + properties: + - type: String + name: 'ip' + description: + IP could be an IP address (like 1.2.3.4) or a CIDR + (like 1.2.3.0/24). + required: true + - type: String + name: 'hostname' + description: + Hostname of the machine. VM's name will be used if + this field is empty. + default_from_api: true + - type: NestedObject + name: "controlPlaneNode" + description: | + The VMware admin cluster control plane node configuration. + properties: + - type: Integer + name: cpus + description: | + The number of vCPUs for the control-plane node of the admin cluster. + default_value: 4 + - type: Integer + name: memory + description: | + The number of mebibytes of memory for the control-plane node of the admin cluster. + default_value: 8192 + - type: Integer + name: replicas + description: | + The number of control plane nodes for this VMware admin cluster. + default_value: 1 + - type: NestedObject + name: "addonNode" + description: | + The VMware admin cluster addon node configuration. + default_from_api: true + properties: + - type: NestedObject + name: "autoResizeConfig" + description: | + Specifies auto resize config. + default_from_api: true + properties: + - type: Boolean + name: enabled + description: | + Whether to enable controle plane node auto resizing. + required: true + - type: NestedObject + name: "loadBalancer" + description: | + Specifies the load balancer configuration for VMware admin cluster. + properties: + - type: NestedObject + name: "vipConfig" + required: true + description: | + Specified the VMware Load Balancer Config + properties: + - type: String + name: "controlPlaneVip" + required: true + description: | + The VIP which you previously set aside for the Kubernetes + API of this VMware Admin Cluster. + - type: String + name: "addonsVip" + description: | + The VIP to configure the load balancer for add-ons. + - type: NestedObject + name: 'f5Config' + description: Configuration for F5 Big IP typed load balancers. + exactly_one_of: + - loadBalancer.0.f5_config + - loadBalancer.0.manual_lb_config + - loadBalancer.0.metal_lb_config + properties: + - type: String + name: 'address' + description: The load balancer's IP address. + - type: String + name: 'partition' + description: | + he preexisting partition to be used by the load balancer. T + his partition is usually created for the admin cluster for example: + 'my-f5-admin-partition'. + - type: String + name: 'snatPool' + description: The pool name. Only necessary, if using SNAT. + - type: NestedObject + name: 'manualLbConfig' + description: Manually configured load balancers. + exactly_one_of: + - loadBalancer.0.f5_config + - loadBalancer.0.manual_lb_config + - loadBalancer.0.metal_lb_config + properties: + - type: Integer + name: 'ingressHttpNodePort' + description: | + NodePort for ingress service's http. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 32527). + default_from_api: true + - type: Integer + name: 'ingressHttpsNodePort' + description: | + NodePort for ingress service's https. The ingress service in the admin + cluster is implemented as a Service of type NodePort (ex. 30139). + default_from_api: true + - type: Integer + name: 'controlPlaneNodePort' + description: | + NodePort for control plane service. The Kubernetes API server in the admin + cluster is implemented as a Service of type NodePort (ex. 30968). + default_from_api: true + - type: Integer + name: 'konnectivityServerNodePort' + description: | + NodePort for konnectivity server service running as a sidecar in each + kube-apiserver pod (ex. 30564). + default_from_api: true + - type: Integer + name: 'addonsNodePort' + description: | + NodePort for add-ons server in the admin cluster. + default_from_api: true + - type: NestedObject + name: 'metalLbConfig' + description: Metal LB load balancers. + send_empty_value: true + exactly_one_of: + - loadBalancer.0.f5_config + - loadBalancer.0.manual_lb_config + - loadBalancer.0.metal_lb_config + properties: + - type: Boolean + name: enabled + description: Metal LB is enabled. + - type: NestedObject + name: vcenter + description: | + Specifies vCenter config for the admin cluster. + properties: + - type: String + name: 'resourcePool' + description: The name of the vCenter resource pool for the admin cluster. + - type: String + name: 'datastore' + description: The name of the vCenter datastore for the admin cluster. + - type: String + name: 'datacenter' + description: The name of the vCenter datacenter for the admin cluster. + - type: String + name: 'cluster' + description: The name of the vCenter cluster for the admin cluster. + - type: String + name: 'folder' + description: The name of the vCenter folder for the admin cluster. + - type: String + name: 'caCertData' + description: + Contains the vCenter CA certificate public key for SSL verification. + - type: String + name: 'address' + description: The vCenter IP address. + - type: String + name: 'dataDisk' + description: The name of the virtual machine disk (VMDK) for the admin cluster. + - type: String + name: 'storagePolicyName' + description: The name of the vCenter storage policy for the user cluster. + - type: NestedObject + name: antiAffinityGroups + description: | + AAGConfig specifies whether to spread VMware Admin Cluster nodes across at + least three physical hosts in the datacenter. + default_from_api: true + properties: + - type: Boolean + name: aagConfigDisabled + description: | + Spread nodes across at least three physical hosts (requires at least three + hosts). + Enabled by default. + required: true + - type: NestedObject + name: autoRepairConfig + description: Configuration for auto repairing. + default_from_api: true + properties: + - type: Boolean + name: enabled + description: Whether auto repair is enabled. + required: true + - type: NestedObject + name: authorization + description: The VMware admin cluster authorization configuration. + properties: + - type: Array + name: viewerUsers + description: | + Users that will be granted the cluster-admin role on the cluster, providing + full access to the cluster. + item_type: + type: NestedObject + properties: + - type: String + name: username + required: true + description: The name of the user, e.g. `my-gcp-id@gmail.com`. + - type: NestedObject + name: platformConfig + description: | + The VMware platform configuration. + properties: + - type: String + name: 'requiredPlatformVersion' + description: | + The required platform version e.g. 1.13.1. + If the current platform version is lower than the target version, + the platform version will be updated to the target version. + If the target version is not installed in the platform + (bundle versions), download the target version bundle. + ignore_read: true + - type: String + name: 'platformVersion' + description: | + The platform version e.g. 1.13.2. + output: true + - type: Array + name: bundles + description: | + The list of bundles installed in the admin cluster. + output: true + item_type: + type: NestedObject + properties: + - type: String + name: 'version' + description: | + The version of the bundle. + output: true + - type: NestedObject + name: status + description: ResourceStatus representing detailed cluster state. + output: true + properties: + - type: String + name: 'errorMessage' + description: | + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + output: true + - type: Array + name: 'conditions' + description: | + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + output: true + item_type: + type: NestedObject + properties: + - type: String + name: 'type' + description: | + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + output: true + - type: String + name: 'reason' + description: | + Machine-readable message indicating details about last transition. + output: true + - type: String + name: 'message' + description: | + Human-readable message indicating details about last transition. + output: true + - !ruby/object:Api::Type::Time + name: 'lastTransitionTime' + description: | + Last time the condition transit from one status to another. + output: true + - !ruby/object:Api::Type::Enum + name: 'state' + description: The lifecycle state of the condition. + output: true + enum_values: + - STATE_UNSPECIFIED + - STATE_TRUE + - STATE_FALSE + - STATE_UNKNOWN + - type: NestedObject + name: status + description: ResourceStatus representing detailed cluster state. + output: true + properties: + - type: String + name: 'errorMessage' + description: | + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + output: true + - type: Array + name: 'conditions' + description: | + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + output: true + item_type: + type: NestedObject + properties: + - type: String + name: 'type' + description: | + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + output: true + - type: String + name: 'reason' + description: | + Machine-readable message indicating details about last transition. + output: true + - type: String + name: 'message' + description: | + Human-readable message indicating details about last transition. + output: true + - !ruby/object:Api::Type::Time + name: 'lastTransitionTime' + description: | + Last time the condition transit from one status to another. + output: true + - !ruby/object:Api::Type::Enum + name: 'state' + description: The lifecycle state of the condition. + output: true + enum_values: + - STATE_UNSPECIFIED + - STATE_TRUE + - STATE_FALSE + - STATE_UNKNOWN + - type: String + name: "uid" + description: | + The unique identifier of the VMware Admin Cluster. + output: true + - !ruby/object:Api::Type::Enum + name: "state" + description: The lifecycle state of the VMware admin cluster. + output: true + enum_values: + - STATE_UNSPECIFIED + - PROVISIONING + - RUNNING + - RECONCILING + - STOPPING + - ERROR + - DEGRADED + - type: String + name: "endpoint" + description: | + The DNS name of VMware admin cluster's API server. + output: true + - type: Boolean + name: "reconciling" + description: | + If set, there are currently changes in flight to the VMware admin cluster. + output: true + - !ruby/object:Api::Type::Time + name: "createTime" + description: | + The time the cluster was created, in RFC3339 text format. + output: true + - !ruby/object:Api::Type::Time + name: "updateTime" + description: | + The time the cluster was last updated, in RFC3339 text format. + output: true + - type: String + name: "localName" + description: | + The object name of the VMwareAdminCluster custom resource on the + associated admin cluster. This field is used to support conflicting + names when enrolling existing clusters to the API. When used as a part of + cluster enrollment, this field will differ from the ID in the resource + name. For new clusters, this field will match the user provided cluster ID + and be visible in the last component of the resource name. It is not + modifiable. + All users should use this name to access their cluster using gkectl or + kubectl and should expect to see the local name when viewing admin + cluster controller logs. + output: true + - type: String + name: "etag" + description: | + This checksum is computed by the server based on the value of other + fields, and may be sent on update and delete requests to ensure the + client has an up-to-date value before proceeding. + Allows clients to perform consistent read-modify-writes + through optimistic concurrency control. + output: true + - type: NestedObject + name: fleet + description: Fleet configuration for the cluster. + output: true + properties: + - type: String + name: 'membership' + description: | + The name of the managed Fleet Membership resource associated to this cluster. + Membership names are formatted as + `projects//locations//memberships/`. + output: true + - type: NestedObject + name: status + description: ResourceStatus representing detailed cluster state. + output: true + properties: + - type: String + name: 'errorMessage' + description: | + Human-friendly representation of the error message from the admin cluster + controller. The error message can be temporary as the admin cluster + controller creates a cluster or node pool. If the error message persists + for a longer period of time, it can be used to surface error message to + indicate real problems requiring user intervention. + output: true + - type: Array + name: 'conditions' + description: | + ResourceConditions provide a standard mechanism for higher-level status reporting from admin cluster controller. + output: true + item_type: + type: NestedObject + properties: + - type: String + name: 'type' + description: | + Type of the condition. + (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) + output: true + - type: String + name: 'reason' + description: | + Machine-readable message indicating details about last transition. + output: true + - type: String + name: 'message' + description: | + Human-readable message indicating details about last transition. + output: true + - !ruby/object:Api::Type::Time + name: 'lastTransitionTime' + description: | + Last time the condition transit from one status to another. + output: true + - !ruby/object:Api::Type::Enum + name: 'state' + description: The lifecycle state of the condition. + output: true + enum_values: + - STATE_UNSPECIFIED + - STATE_TRUE + - STATE_FALSE + - STATE_UNKNOWN diff --git a/mmv1/products/gkeonprem/VmwareCluster.yaml b/mmv1/products/gkeonprem/VmwareCluster.yaml index 4c1f8cd97667..eafab093d91d 100644 --- a/mmv1/products/gkeonprem/VmwareCluster.yaml +++ b/mmv1/products/gkeonprem/VmwareCluster.yaml @@ -652,26 +652,33 @@ properties: description: | VmwareVCenterConfig specifies vCenter config for the user cluster. Inherited from the admin cluster. + default_from_api: true properties: - name: 'resourcePool' type: String description: The name of the vCenter resource pool for the user cluster. + default_from_api: true - name: 'datastore' type: String description: The name of the vCenter datastore for the user cluster. + default_from_api: true - name: 'datacenter' type: String description: The name of the vCenter datacenter for the user cluster. + default_from_api: true - name: 'cluster' type: String description: The name of the vCenter cluster for the user cluster. + default_from_api: true - name: 'folder' type: String description: The name of the vCenter folder for the user cluster. + default_from_api: true - name: 'caCertData' type: String description: Contains the vCenter CA certificate public key for SSL verification. + default_from_api: true - name: 'address' type: String description: The vCenter IP address. @@ -679,6 +686,7 @@ properties: - name: 'storagePolicyName' type: String description: The name of the vCenter storage policy for the user cluster. + default_from_api: true - name: 'status' type: NestedObject description: ResourceStatus representing detailed cluster state. diff --git a/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_basic.tf.tmpl b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_basic.tf.tmpl new file mode 100644 index 000000000000..33e2aa89c39a --- /dev/null +++ b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_basic.tf.tmpl @@ -0,0 +1,41 @@ +resource "google_gkeonprem_vmware_admin_cluster" "{{$.PrimaryResourceId}}" { + provider = google-beta + name = "{{index $.Vars "name"}}" + location = "us-west1" + description = "test admin cluster" + bootstrap_cluster_membership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test" + on_prem_version = "1.31.0-gke.35" + image_type = "ubuntu_containerd" + vcenter { + resource_pool = "test resource pool" + datastore = "test data store" + datacenter = "test data center" + cluster = "test cluster" + folder = "test folder" + ca_cert_data = "test ca cert data" + address = "10.0.0.1" + data_disk = "test data disk" + } + network_config { + service_address_cidr_blocks = ["10.96.0.0/12"] + pod_address_cidr_blocks = ["192.168.0.0/16"] + dhcp_ip_config { + enabled = true + } + } + control_plane_node { + cpus = 4 + memory = 8192 + } + load_balancer { + vip_config { + control_plane_vip = "10.251.133.5" + addons_vip = "10.251.135.19" + } + f5_config { + address = "10.251.135.22" + partition = "test-parition" + snat_pool = "test-snat-pool" + } + } +} diff --git a/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_full.tf.tmpl b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_full.tf.tmpl new file mode 100644 index 000000000000..b446a094452f --- /dev/null +++ b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_full.tf.tmpl @@ -0,0 +1,88 @@ +resource "google_gkeonprem_vmware_admin_cluster" "{{$.PrimaryResourceId}}" { + provider = google-beta + name = "{{index $.Vars "name"}}" + location = "us-west1" + description = "test admin cluster" + bootstrap_cluster_membership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test" + on_prem_version = "1.31.0-gke.35" + image_type = "ubuntu_containerd" + annotations = {} + vcenter { + resource_pool = "test resource pool" + datastore = "test data store" + datacenter = "test data center" + cluster = "test cluster" + folder = "test folder" + ca_cert_data = "test ca cert data" + address = "10.0.0.1" + data_disk = "test data disk" + storage_policy_name = "storage_policy_name" + } + network_config { + service_address_cidr_blocks = ["10.96.0.0/12"] + pod_address_cidr_blocks = ["192.168.0.0/16"] + ha_control_plane_config { + control_plane_ip_block { + gateway = "10.0.0.3" + ips { + hostname = "hostname" + ip = "10.0.0.4" + } + netmask = "10.0.0.3/32" + } + } + host_config { + dns_servers = ["10.254.41.1"] + ntp_servers = ["216.239.35.8"] + dns_search_domains = ["test-domain"] + } + static_ip_config { + ip_blocks { + gateway = "10.0.0.1" + ips { + hostname = "hostname" + ip = "10.0.0.2" + } + netmask = "10.0.0.3/32" + } + } + vcenter_network = "test-vcenter-network" + } + control_plane_node { + cpus = 4 + memory = 8192 + replicas = 3 + } + load_balancer { + vip_config { + control_plane_vip = "10.251.133.5" + addons_vip = "10.251.135.19" + } + manual_lb_config { + addons_node_port = 30005 + control_plane_node_port = 30006 + ingress_http_node_port = 30007 + ingress_https_node_port = 30008 + konnectivity_server_node_port = 30009 + } + } + addon_node { + auto_resize_config { + enabled = true + } + } + anti_affinity_groups { + aag_config_disabled = true + } + authorization { + viewer_users { + username = "user1@gmail.com" + } + } + auto_repair_config { + enabled = true + } + platform_config { + required_platform_version = "1.31.0" + } +} diff --git a/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_metallb.tf.tmpl b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_metallb.tf.tmpl new file mode 100644 index 000000000000..7c63fca0f19f --- /dev/null +++ b/mmv1/templates/terraform/examples/gkeonprem_vmware_admin_cluster_metallb.tf.tmpl @@ -0,0 +1,39 @@ +resource "google_gkeonprem_vmware_admin_cluster" "{{$.PrimaryResourceId}}" { + provider = google-beta + name = "{{index $.Vars "name"}}" + location = "us-west1" + description = "test admin cluster" + bootstrap_cluster_membership = "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test" + on_prem_version = "1.31.0-gke.35" + image_type = "ubuntu_containerd" + vcenter { + resource_pool = "test resource pool" + datastore = "test data store" + datacenter = "test data center" + cluster = "test cluster" + folder = "test folder" + ca_cert_data = "test ca cert data" + address = "10.0.0.1" + data_disk = "test data disk" + } + network_config { + service_address_cidr_blocks = ["10.96.0.0/12"] + pod_address_cidr_blocks = ["192.168.0.0/16"] + dhcp_ip_config { + enabled = true + } + } + control_plane_node { + cpus = 4 + memory = 8192 + } + load_balancer { + vip_config { + control_plane_vip = "10.251.133.5" + addons_vip = "10.251.135.19" + } + metal_lb_config { + enabled = true + } + } +} diff --git a/mmv1/third_party/terraform/services/gkeonprem/resource_gkeonprem_vmware_cluster_test.go.tmpl b/mmv1/third_party/terraform/services/gkeonprem/resource_gkeonprem_vmware_cluster_test.go.tmpl index 97237b8f65ee..20820c3de790 100644 --- a/mmv1/third_party/terraform/services/gkeonprem/resource_gkeonprem_vmware_cluster_test.go.tmpl +++ b/mmv1/third_party/terraform/services/gkeonprem/resource_gkeonprem_vmware_cluster_test.go.tmpl @@ -463,7 +463,6 @@ func testAccGkeonpremVmwareCluster_vmwareClusterUpdateManualLb(context map[strin advanced_networking = true } vm_tracking_enabled = false - enable_control_plane_v2 = false disable_bundled_ingress = false upgrade_policy { control_plane_only = true