import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * A Google VMware User Cluster. * * To get more information about VmwareCluster, see: * * * [API documentation](https://cloud.google.com/kubernetes-engine/distributed-cloud/reference/on-prem-api/rest/v1/projects.locations.vmwareClusters) * * ## Example Usage * * ### Gkeonprem Vmware Cluster Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const cluster_basic = new gcp.gkeonprem.VMwareCluster("cluster-basic", { * name: "cluster-basic", * location: "us-west1", * adminClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * description: "test cluster", * onPremVersion: "1.13.1-gke.35", * annotations: {}, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * dhcpIpConfig: { * enabled: true, * }, * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * replicas: 1, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * ingressVip: "10.251.135.19", * }, * metalLbConfig: { * addressPools: [ * { * pool: "ingress-ip", * manualAssign: true, * addresses: ["10.251.135.19"], * avoidBuggyIps: true, * }, * { * pool: "lb-test-ip", * manualAssign: true, * addresses: ["10.251.135.19"], * avoidBuggyIps: true, * }, * ], * }, * }, * }); * ``` * ### Gkeonprem Vmware Cluster F5lb * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const cluster_f5lb = new gcp.gkeonprem.VMwareCluster("cluster-f5lb", { * name: "cluster-f5lb", * location: "us-west1", * adminClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * description: "test cluster", * onPremVersion: "1.13.1-gke.35", * annotations: {}, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * dhcpIpConfig: { * enabled: true, * }, * controlPlaneV2Config: { * controlPlaneIpBlock: { * ips: [{ * hostname: "test-hostname", * ip: "10.0.0.1", * }], * netmask: "10.0.0.1/32", * gateway: "test-gateway", * }, * }, * vcenterNetwork: "test-vcenter-network", * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * replicas: 1, * autoResizeConfig: { * enabled: true, * }, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * ingressVip: "10.251.135.19", * }, * f5Config: { * address: "10.0.0.1", * partition: "test-partition", * snatPool: "test-snap-pool", * }, * }, * dataplaneV2: { * dataplaneV2Enabled: true, * windowsDataplaneV2Enabled: true, * advancedNetworking: true, * }, * vmTrackingEnabled: true, * enableControlPlaneV2: true, * disableBundledIngress: true, * authorization: { * adminUsers: [{ * username: "testuser@gmail.com", * }], * }, * antiAffinityGroups: { * aagConfigDisabled: true, * }, * autoRepairConfig: { * enabled: true, * }, * storage: { * vsphereCsiDisabled: true, * }, * }); * ``` * ### Gkeonprem Vmware Cluster Manuallb * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const cluster_manuallb = new gcp.gkeonprem.VMwareCluster("cluster-manuallb", { * name: "cluster-manuallb", * skipValidations: [ * "WORKSTATION", * "CONFIG", * "DOCKER", * ], * location: "us-west1", * adminClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * description: "test cluster", * onPremVersion: "1.13.1-gke.35", * annotations: {}, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * hostConfig: { * dnsServers: ["10.254.41.1"], * ntpServers: ["216.239.35.8"], * dnsSearchDomains: ["test-domain"], * }, * staticIpConfig: { * ipBlocks: [{ * netmask: "255.255.252.0", * gateway: "10.251.31.254", * ips: [ * { * ip: "10.251.30.153", * hostname: "test-hostname1", * }, * { * ip: "10.251.31.206", * hostname: "test-hostname2", * }, * { * ip: "10.251.31.193", * hostname: "test-hostname3", * }, * { * ip: "10.251.30.230", * hostname: "test-hostname4", * }, * ], * }], * }, * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * replicas: 1, * autoResizeConfig: { * enabled: true, * }, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * ingressVip: "10.251.135.19", * }, * manualLbConfig: { * ingressHttpNodePort: 30005, * ingressHttpsNodePort: 30006, * controlPlaneNodePort: 30007, * konnectivityServerNodePort: 30008, * }, * }, * vcenter: { * resourcePool: "test-resource-pool", * datastore: "test-datastore", * datacenter: "test-datacenter", * cluster: "test-cluster", * folder: "test-folder", * caCertData: "test-ca-cert-data", * storagePolicyName: "test-storage-policy-name", * }, * dataplaneV2: { * dataplaneV2Enabled: true, * windowsDataplaneV2Enabled: true, * advancedNetworking: true, * }, * vmTrackingEnabled: true, * enableControlPlaneV2: true, * enableAdvancedCluster: true, * upgradePolicy: { * controlPlaneOnly: true, * }, * authorization: { * adminUsers: [{ * username: "testuser@gmail.com", * }], * }, * antiAffinityGroups: { * aagConfigDisabled: true, * }, * autoRepairConfig: { * enabled: true, * }, * }); * ``` * * ## Import * * VmwareCluster can be imported using any of these accepted formats: * * * `projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}` * * `{{project}}/{{location}}/{{name}}` * * `{{location}}/{{name}}` * * When using the `pulumi import` command, VmwareCluster can be imported using one of the formats above. For example: * * ```sh * $ 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}} * ``` */ export declare class VMwareCluster extends pulumi.CustomResource { /** * Get an existing VMwareCluster resource's state with the given name, ID, and optional extra * properties used to qualify the lookup. * * @param name The _unique_ name of the resulting resource. * @param id The _unique_ provider ID of the resource to lookup. * @param state Any extra arguments used during the lookup. * @param opts Optional settings to control the behavior of the CustomResource. */ static get(name: string, id: pulumi.Input, state?: VMwareClusterState, opts?: pulumi.CustomResourceOptions): VMwareCluster; /** * Returns true if the given object is an instance of VMwareCluster. This is designed to work even * when multiple copies of the Pulumi SDK have been loaded into the same process. */ static isInstance(obj: any): obj is VMwareCluster; /** * The admin cluster this VMware User Cluster belongs to. * This is the full resource name of the admin cluster's hub membership. * In the future, references to other resource types might be allowed if * admin clusters are modeled as their own resources. */ readonly adminClusterMembership: pulumi.Output; /** * 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 `effectiveAnnotations` for all of the annotations present on the resource. */ readonly annotations: pulumi.Output<{ [key: string]: string; } | undefined>; /** * AAGConfig specifies whether to spread VMware User Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ readonly antiAffinityGroups: pulumi.Output; /** * RBAC policy that will be applied and managed by GKE On-Prem. * Structure is documented below. */ readonly authorization: pulumi.Output; /** * Configuration for auto repairing. * Structure is documented below. */ readonly autoRepairConfig: pulumi.Output; /** * VMware User Cluster control plane nodes must have either 1 or 3 replicas. * Structure is documented below. */ readonly controlPlaneNode: pulumi.Output; /** * The time at which VMware User Cluster was created. */ readonly createTime: pulumi.Output; /** * VmwareDataplaneV2Config specifies configuration for Dataplane V2. * Structure is documented below. */ readonly dataplaneV2: pulumi.Output; /** * The time at which VMware User Cluster was deleted. */ readonly deleteTime: pulumi.Output; /** * A human readable description of this VMware User Cluster. */ readonly description: pulumi.Output; /** * Disable bundled ingress. */ readonly disableBundledIngress: pulumi.Output; /** * All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services. */ readonly effectiveAnnotations: pulumi.Output<{ [key: string]: string; }>; /** * Enable advanced cluster. Default to false. */ readonly enableAdvancedCluster: pulumi.Output; /** * Enable control plane V2. Default to false. */ readonly enableControlPlaneV2: pulumi.Output; /** * The DNS name of VMware User Cluster's API server. */ readonly endpoint: pulumi.Output; /** * 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. */ readonly etag: pulumi.Output; /** * Fleet configuration for the cluster. * Structure is documented below. */ readonly fleets: pulumi.Output; /** * Load Balancer configuration. * Structure is documented below. */ readonly loadBalancer: pulumi.Output; /** * 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. */ readonly localName: pulumi.Output; /** * The location of the resource. */ readonly location: pulumi.Output; /** * The VMware cluster name. */ readonly name: pulumi.Output; /** * The VMware User Cluster network configuration. * Structure is documented below. */ readonly networkConfig: pulumi.Output; /** * The Anthos clusters on the VMware version for your user cluster. */ readonly onPremVersion: pulumi.Output; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ readonly project: pulumi.Output; /** * If set, there are currently changes in flight to the VMware User Cluster. */ readonly reconciling: pulumi.Output; /** * A list of validations to skip during preflight checks. * Each value may be one of: `VALIDATION_SKIP_UNSPECIFIED`, `ALL`, `WORKSTATION`, `CONFIG`, `DOCKER`, `INFRA`, `LOAD_BALANCER`, `VIPS`, `NODE_IPS`, `DNS`, `TOD`, `NET_CONFIG`, `STORAGE_DRIVER`, `PROXY`, `INTERNET`, `GCP`, `GKEHUB`, `RESERVED_IPS`, `STACKDRIVER`, `NODEPOOL_AUTOSCALING`, `OS_IMAGES`, `CLUSTER_VERSION`, `CLUSTER_HEALTH`, `WINDOWS`, `HSM_SECRET_ENCRYPTION`, `BACKUP_ADMIN`, `CONNECTIVITY`, `CLUSTER_SECRETS_CONFIG`, `CSI_WORKLOAD`, `VSPHERE_VERSION`, `MIGRATION`. */ readonly skipValidations: pulumi.Output; /** * (Output) * The lifecycle state of the condition. */ readonly state: pulumi.Output; /** * (Output) * Specifies the detailed validation check status * Structure is documented below. */ readonly statuses: pulumi.Output; /** * Storage configuration. * Structure is documented below. */ readonly storage: pulumi.Output; /** * The unique identifier of the VMware User Cluster. */ readonly uid: pulumi.Output; /** * The time at which VMware User Cluster was last updated. */ readonly updateTime: pulumi.Output; /** * Specifies upgrade policy for the cluster. * Structure is documented below. */ readonly upgradePolicy: pulumi.Output; /** * ValidationCheck represents the result of the preflight check job. * Structure is documented below. */ readonly validationChecks: pulumi.Output; /** * VmwareVCenterConfig specifies vCenter config for the user cluster. * Inherited from the admin cluster. * Structure is documented below. */ readonly vcenter: pulumi.Output; /** * Enable VM tracking. */ readonly vmTrackingEnabled: pulumi.Output; /** * Create a VMwareCluster resource with the given unique name, arguments, and options. * * @param name The _unique_ name of the resource. * @param args The arguments to use to populate this resource's properties. * @param opts A bag of options that control this resource's behavior. */ constructor(name: string, args: VMwareClusterArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering VMwareCluster resources. */ export interface VMwareClusterState { /** * The admin cluster this VMware User Cluster belongs to. * This is the full resource name of the admin cluster's hub membership. * In the future, references to other resource types might be allowed if * admin clusters are modeled as their own resources. */ adminClusterMembership?: pulumi.Input; /** * 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 `effectiveAnnotations` for all of the annotations present on the resource. */ annotations?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * AAGConfig specifies whether to spread VMware User Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ antiAffinityGroups?: pulumi.Input; /** * RBAC policy that will be applied and managed by GKE On-Prem. * Structure is documented below. */ authorization?: pulumi.Input; /** * Configuration for auto repairing. * Structure is documented below. */ autoRepairConfig?: pulumi.Input; /** * VMware User Cluster control plane nodes must have either 1 or 3 replicas. * Structure is documented below. */ controlPlaneNode?: pulumi.Input; /** * The time at which VMware User Cluster was created. */ createTime?: pulumi.Input; /** * VmwareDataplaneV2Config specifies configuration for Dataplane V2. * Structure is documented below. */ dataplaneV2?: pulumi.Input; /** * The time at which VMware User Cluster was deleted. */ deleteTime?: pulumi.Input; /** * A human readable description of this VMware User Cluster. */ description?: pulumi.Input; /** * Disable bundled ingress. */ disableBundledIngress?: pulumi.Input; /** * All of annotations (key/value pairs) present on the resource in GCP, including the annotations configured through Terraform, other clients and services. */ effectiveAnnotations?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * Enable advanced cluster. Default to false. */ enableAdvancedCluster?: pulumi.Input; /** * Enable control plane V2. Default to false. */ enableControlPlaneV2?: pulumi.Input; /** * The DNS name of VMware User Cluster's API server. */ endpoint?: pulumi.Input; /** * 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. */ etag?: pulumi.Input; /** * Fleet configuration for the cluster. * Structure is documented below. */ fleets?: pulumi.Input[]>; /** * Load Balancer configuration. * Structure is documented below. */ loadBalancer?: pulumi.Input; /** * 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. */ localName?: pulumi.Input; /** * The location of the resource. */ location?: pulumi.Input; /** * The VMware cluster name. */ name?: pulumi.Input; /** * The VMware User Cluster network configuration. * Structure is documented below. */ networkConfig?: pulumi.Input; /** * The Anthos clusters on the VMware version for your user cluster. */ onPremVersion?: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * If set, there are currently changes in flight to the VMware User Cluster. */ reconciling?: pulumi.Input; /** * A list of validations to skip during preflight checks. * Each value may be one of: `VALIDATION_SKIP_UNSPECIFIED`, `ALL`, `WORKSTATION`, `CONFIG`, `DOCKER`, `INFRA`, `LOAD_BALANCER`, `VIPS`, `NODE_IPS`, `DNS`, `TOD`, `NET_CONFIG`, `STORAGE_DRIVER`, `PROXY`, `INTERNET`, `GCP`, `GKEHUB`, `RESERVED_IPS`, `STACKDRIVER`, `NODEPOOL_AUTOSCALING`, `OS_IMAGES`, `CLUSTER_VERSION`, `CLUSTER_HEALTH`, `WINDOWS`, `HSM_SECRET_ENCRYPTION`, `BACKUP_ADMIN`, `CONNECTIVITY`, `CLUSTER_SECRETS_CONFIG`, `CSI_WORKLOAD`, `VSPHERE_VERSION`, `MIGRATION`. */ skipValidations?: pulumi.Input[]>; /** * (Output) * The lifecycle state of the condition. */ state?: pulumi.Input; /** * (Output) * Specifies the detailed validation check status * Structure is documented below. */ statuses?: pulumi.Input[]>; /** * Storage configuration. * Structure is documented below. */ storage?: pulumi.Input; /** * The unique identifier of the VMware User Cluster. */ uid?: pulumi.Input; /** * The time at which VMware User Cluster was last updated. */ updateTime?: pulumi.Input; /** * Specifies upgrade policy for the cluster. * Structure is documented below. */ upgradePolicy?: pulumi.Input; /** * ValidationCheck represents the result of the preflight check job. * Structure is documented below. */ validationChecks?: pulumi.Input[]>; /** * VmwareVCenterConfig specifies vCenter config for the user cluster. * Inherited from the admin cluster. * Structure is documented below. */ vcenter?: pulumi.Input; /** * Enable VM tracking. */ vmTrackingEnabled?: pulumi.Input; } /** * The set of arguments for constructing a VMwareCluster resource. */ export interface VMwareClusterArgs { /** * The admin cluster this VMware User Cluster belongs to. * This is the full resource name of the admin cluster's hub membership. * In the future, references to other resource types might be allowed if * admin clusters are modeled as their own resources. */ adminClusterMembership: pulumi.Input; /** * 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 `effectiveAnnotations` for all of the annotations present on the resource. */ annotations?: pulumi.Input<{ [key: string]: pulumi.Input; }>; /** * AAGConfig specifies whether to spread VMware User Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ antiAffinityGroups?: pulumi.Input; /** * RBAC policy that will be applied and managed by GKE On-Prem. * Structure is documented below. */ authorization?: pulumi.Input; /** * Configuration for auto repairing. * Structure is documented below. */ autoRepairConfig?: pulumi.Input; /** * VMware User Cluster control plane nodes must have either 1 or 3 replicas. * Structure is documented below. */ controlPlaneNode: pulumi.Input; /** * VmwareDataplaneV2Config specifies configuration for Dataplane V2. * Structure is documented below. */ dataplaneV2?: pulumi.Input; /** * A human readable description of this VMware User Cluster. */ description?: pulumi.Input; /** * Disable bundled ingress. */ disableBundledIngress?: pulumi.Input; /** * Enable advanced cluster. Default to false. */ enableAdvancedCluster?: pulumi.Input; /** * Enable control plane V2. Default to false. */ enableControlPlaneV2?: pulumi.Input; /** * Load Balancer configuration. * Structure is documented below. */ loadBalancer?: pulumi.Input; /** * The location of the resource. */ location: pulumi.Input; /** * The VMware cluster name. */ name?: pulumi.Input; /** * The VMware User Cluster network configuration. * Structure is documented below. */ networkConfig?: pulumi.Input; /** * The Anthos clusters on the VMware version for your user cluster. */ onPremVersion: pulumi.Input; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input; /** * A list of validations to skip during preflight checks. * Each value may be one of: `VALIDATION_SKIP_UNSPECIFIED`, `ALL`, `WORKSTATION`, `CONFIG`, `DOCKER`, `INFRA`, `LOAD_BALANCER`, `VIPS`, `NODE_IPS`, `DNS`, `TOD`, `NET_CONFIG`, `STORAGE_DRIVER`, `PROXY`, `INTERNET`, `GCP`, `GKEHUB`, `RESERVED_IPS`, `STACKDRIVER`, `NODEPOOL_AUTOSCALING`, `OS_IMAGES`, `CLUSTER_VERSION`, `CLUSTER_HEALTH`, `WINDOWS`, `HSM_SECRET_ENCRYPTION`, `BACKUP_ADMIN`, `CONNECTIVITY`, `CLUSTER_SECRETS_CONFIG`, `CSI_WORKLOAD`, `VSPHERE_VERSION`, `MIGRATION`. */ skipValidations?: pulumi.Input[]>; /** * Storage configuration. * Structure is documented below. */ storage?: pulumi.Input; /** * Specifies upgrade policy for the cluster. * Structure is documented below. */ upgradePolicy?: pulumi.Input; /** * VmwareVCenterConfig specifies vCenter config for the user cluster. * Inherited from the admin cluster. * Structure is documented below. */ vcenter?: pulumi.Input; /** * Enable VM tracking. */ vmTrackingEnabled?: pulumi.Input; }