VMware Cluster
A Google VMware User Cluster.
Example Usage
Gkeonprem Vmware Cluster Basic
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.VMwareCluster;
import com.pulumi.gcp.gkeonprem.VMwareClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerMetalLbConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var cluster_basic = new VMwareCluster("cluster-basic", VMwareClusterArgs.builder()
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.annotations()
.controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()
.cpus(4)
.memory(8192)
.replicas(1)
.build())
.description("test cluster")
.loadBalancer(VMwareClusterLoadBalancerArgs.builder()
.metalLbConfig(VMwareClusterLoadBalancerMetalLbConfigArgs.builder()
.addressPools(
VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()
.addresses("10.251.135.19")
.avoidBuggyIps(true)
.manualAssign("true")
.pool("ingress-ip")
.build(),
VMwareClusterLoadBalancerMetalLbConfigAddressPoolArgs.builder()
.addresses("10.251.135.19")
.avoidBuggyIps(true)
.manualAssign("true")
.pool("lb-test-ip")
.build())
.build())
.vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.251.133.5")
.ingressVip("10.251.135.19")
.build())
.build())
.location("us-west1")
.networkConfig(VMwareClusterNetworkConfigArgs.builder()
.dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()
.enabled(true)
.build())
.podAddressCidrBlocks("192.168.0.0/16")
.serviceAddressCidrBlocks("10.96.0.0/12")
.build())
.onPremVersion("1.13.1-gke.35")
.build());
}
}Gkeonprem Vmware Cluster F5lb
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.VMwareCluster;
import com.pulumi.gcp.gkeonprem.VMwareClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerF5ConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigDhcpIpConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterStorageArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var cluster_f5lb = new VMwareCluster("cluster-f5lb", VMwareClusterArgs.builder()
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.annotations()
.antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()
.aagConfigDisabled(true)
.build())
.authorization(VMwareClusterAuthorizationArgs.builder()
.adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()
.username("testuser@gmail.com")
.build())
.build())
.autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()
.enabled(true)
.build())
.controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()
.autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()
.enabled(true)
.build())
.cpus(4)
.memory(8192)
.replicas(1)
.build())
.dataplaneV2(VMwareClusterDataplaneV2Args.builder()
.advancedNetworking(true)
.dataplaneV2Enabled(true)
.windowsDataplaneV2Enabled(true)
.build())
.description("test cluster")
.enableControlPlaneV2(true)
.loadBalancer(VMwareClusterLoadBalancerArgs.builder()
.f5Config(VMwareClusterLoadBalancerF5ConfigArgs.builder()
.address("10.0.0.1")
.partition("test-partition")
.snatPool("test-snap-pool")
.build())
.vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.251.133.5")
.ingressVip("10.251.135.19")
.build())
.build())
.location("us-west1")
.networkConfig(VMwareClusterNetworkConfigArgs.builder()
.controlPlaneV2Config(VMwareClusterNetworkConfigControlPlaneV2ConfigArgs.builder()
.controlPlaneIpBlock(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockArgs.builder()
.gateway("test-gateway")
.ips(VMwareClusterNetworkConfigControlPlaneV2ConfigControlPlaneIpBlockIpArgs.builder()
.hostname("test-hostname")
.ip("10.0.0.1")
.build())
.netmask("10.0.0.1/32")
.build())
.build())
.dhcpIpConfig(VMwareClusterNetworkConfigDhcpIpConfigArgs.builder()
.enabled(true)
.build())
.podAddressCidrBlocks("192.168.0.0/16")
.serviceAddressCidrBlocks("10.96.0.0/12")
.build())
.onPremVersion("1.13.1-gke.35")
.storage(VMwareClusterStorageArgs.builder()
.vsphereCsiDisabled(true)
.build())
.vmTrackingEnabled(true)
.build());
}
}Gkeonprem Vmware Cluster Manuallb
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.gcp.gkeonprem.VMwareCluster;
import com.pulumi.gcp.gkeonprem.VMwareClusterArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAntiAffinityGroupsArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAuthorizationArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterAutoRepairConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterControlPlaneNodeAutoResizeConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterDataplaneV2Args;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerManualLbConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterLoadBalancerVipConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigHostConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterNetworkConfigStaticIpConfigArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterUpgradePolicyArgs;
import com.pulumi.gcp.gkeonprem.inputs.VMwareClusterVcenterArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var cluster_manuallb = new VMwareCluster("cluster-manuallb", VMwareClusterArgs.builder()
.adminClusterMembership("projects/870316890899/locations/global/memberships/gkeonprem-terraform-test")
.annotations()
.antiAffinityGroups(VMwareClusterAntiAffinityGroupsArgs.builder()
.aagConfigDisabled(true)
.build())
.authorization(VMwareClusterAuthorizationArgs.builder()
.adminUsers(VMwareClusterAuthorizationAdminUserArgs.builder()
.username("testuser@gmail.com")
.build())
.build())
.autoRepairConfig(VMwareClusterAutoRepairConfigArgs.builder()
.enabled(true)
.build())
.controlPlaneNode(VMwareClusterControlPlaneNodeArgs.builder()
.autoResizeConfig(VMwareClusterControlPlaneNodeAutoResizeConfigArgs.builder()
.enabled(true)
.build())
.cpus(4)
.memory(8192)
.replicas(1)
.build())
.dataplaneV2(VMwareClusterDataplaneV2Args.builder()
.advancedNetworking(true)
.dataplaneV2Enabled(true)
.windowsDataplaneV2Enabled(true)
.build())
.description("test cluster")
.enableControlPlaneV2(true)
.loadBalancer(VMwareClusterLoadBalancerArgs.builder()
.manualLbConfig(VMwareClusterLoadBalancerManualLbConfigArgs.builder()
.controlPlaneNodePort(30007)
.ingressHttpNodePort(30005)
.ingressHttpsNodePort(30006)
.konnectivityServerNodePort(30008)
.build())
.vipConfig(VMwareClusterLoadBalancerVipConfigArgs.builder()
.controlPlaneVip("10.251.133.5")
.ingressVip("10.251.135.19")
.build())
.build())
.location("us-west1")
.networkConfig(VMwareClusterNetworkConfigArgs.builder()
.hostConfig(VMwareClusterNetworkConfigHostConfigArgs.builder()
.dnsSearchDomains("test-domain")
.dnsServers("10.254.41.1")
.ntpServers("216.239.35.8")
.build())
.podAddressCidrBlocks("192.168.0.0/16")
.serviceAddressCidrBlocks("10.96.0.0/12")
.staticIpConfig(VMwareClusterNetworkConfigStaticIpConfigArgs.builder()
.ipBlocks(VMwareClusterNetworkConfigStaticIpConfigIpBlockArgs.builder()
.gateway("10.251.31.254")
.ips(
VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()
.hostname("test-hostname1")
.ip("10.251.30.153")
.build(),
VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()
.hostname("test-hostname2")
.ip("10.251.31.206")
.build(),
VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()
.hostname("test-hostname3")
.ip("10.251.31.193")
.build(),
VMwareClusterNetworkConfigStaticIpConfigIpBlockIpArgs.builder()
.hostname("test-hostname4")
.ip("10.251.30.230")
.build())
.netmask("255.255.252.0")
.build())
.build())
.build())
.onPremVersion("1.13.1-gke.35")
.upgradePolicy(VMwareClusterUpgradePolicyArgs.builder()
.controlPlaneOnly(true)
.build())
.vcenters(VMwareClusterVcenterArgs.builder()
.caCertData("test-ca-cert-data")
.cluster("test-cluster")
.datacenter("test-datacenter")
.datastore("test-datastore")
.folder("test-folder")
.resourcePool("test-resource-pool")
.storagePolicyName("test-storage-policy-name")
.build())
.vmTrackingEnabled(true)
.build());
}
}Import
VmwareCluster can be imported using any of these accepted formats* projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}} * {{project}}/{{location}}/{{name}} * {{location}}/{{name}} In Terraform v1.5.0 and later, use an import block to import VmwareCluster using one of the formats above. For exampletf import { id = "projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}" to = google_gkeonprem_vmware_cluster.default }
$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster When using the [`terraform import` command](https://developer.hashicorp.com/terraform/cli/commands/import), VmwareCluster can be imported using one of the formats above. For example$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{project}}/{{location}}/{{name}}$ pulumi import gcp:gkeonprem/vMwareCluster:VMwareCluster default {{location}}/{{name}}Properties
Annotations on the VMware User 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. Note: This field is non-authoritative, and will only manage the annotations present in your configuration. Please refer to the field effective_annotations for all of the annotations present on the resource.
The object name of the VMware OnPremUserCluster 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.