import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * A Google VMware Admin Cluster. * * To get more information about VmwareAdminCluster, see: * * * [API documentation](https://cloud.google.com/kubernetes-engine/distributed-cloud/reference/on-prem-api/rest/v1/projects.locations.vmwareAdminClusters) * * ## Example Usage * * ### Gkeonprem Vmware Admin Cluster Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const admin_cluster_basic = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-basic", { * name: "basic", * location: "us-west1", * description: "test admin cluster", * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * onPremVersion: "1.31.0-gke.35", * imageType: "ubuntu_containerd", * vcenter: { * resourcePool: "test resource pool", * datastore: "test data store", * datacenter: "test data center", * cluster: "test cluster", * folder: "test folder", * caCertData: "test ca cert data", * address: "10.0.0.1", * dataDisk: "test data disk", * }, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * dhcpIpConfig: { * enabled: true, * }, * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * addonsVip: "10.251.135.19", * }, * f5Config: { * address: "10.251.135.22", * partition: "test-parition", * snatPool: "test-snat-pool", * }, * }, * privateRegistryConfig: { * address: "test-address", * caCert: "test-ca-cert", * }, * }); * ``` * ### Gkeonprem Vmware Admin Cluster Full * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const admin_cluster_full = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-full", { * name: "full", * location: "us-west1", * description: "test admin cluster", * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * onPremVersion: "1.31.0-gke.35", * imageType: "ubuntu_containerd", * annotations: {}, * vcenter: { * resourcePool: "test resource pool", * datastore: "test data store", * datacenter: "test data center", * cluster: "test cluster", * folder: "test folder", * caCertData: "test ca cert data", * address: "10.0.0.1", * dataDisk: "test data disk", * storagePolicyName: "storage_policy_name", * }, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * haControlPlaneConfig: { * controlPlaneIpBlock: { * gateway: "10.0.0.3", * ips: [{ * hostname: "hostname", * ip: "10.0.0.4", * }], * netmask: "10.0.0.3/32", * }, * }, * hostConfig: { * dnsServers: ["10.254.41.1"], * ntpServers: ["216.239.35.8"], * dnsSearchDomains: ["test-domain"], * }, * staticIpConfig: { * ipBlocks: [{ * gateway: "10.0.0.1", * ips: [{ * hostname: "hostname", * ip: "10.0.0.2", * }], * netmask: "10.0.0.3/32", * }], * }, * vcenterNetwork: "test-vcenter-network", * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * replicas: 3, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * addonsVip: "10.251.135.19", * }, * manualLbConfig: { * addonsNodePort: 30005, * controlPlaneNodePort: 30006, * ingressHttpNodePort: 30007, * ingressHttpsNodePort: 30008, * konnectivityServerNodePort: 30009, * }, * }, * addonNode: { * autoResizeConfig: { * enabled: true, * }, * }, * antiAffinityGroups: { * aagConfigDisabled: true, * }, * authorization: { * viewerUsers: [{ * username: "user1@gmail.com", * }], * }, * autoRepairConfig: { * enabled: true, * }, * platformConfig: { * requiredPlatformVersion: "1.31.0", * }, * privateRegistryConfig: { * address: "test-address", * caCert: "test-ca-cert", * }, * proxy: { * url: "http://my-proxy.example.local:80", * noProxy: "10.151.222.0/24,my-host.example.local,10.151.2.1", * }, * }); * ``` * ### Gkeonprem Vmware Admin Cluster Metallb * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const admin_cluster_metallb = new gcp.gkeonprem.VmwareAdminCluster("admin-cluster-metallb", { * name: "metallb", * location: "us-west1", * description: "test admin cluster", * bootstrapClusterMembership: "projects/870316890899/locations/global/memberships/gkeonprem-terraform-test", * onPremVersion: "1.33.0-gke.35", * imageType: "ubuntu_containerd", * enableAdvancedCluster: true, * vcenter: { * resourcePool: "test resource pool", * datastore: "test data store", * datacenter: "test data center", * cluster: "test cluster", * folder: "test folder", * caCertData: "test ca cert data", * address: "10.0.0.1", * dataDisk: "test data disk", * }, * networkConfig: { * serviceAddressCidrBlocks: ["10.96.0.0/12"], * podAddressCidrBlocks: ["192.168.0.0/16"], * dhcpIpConfig: { * enabled: true, * }, * }, * controlPlaneNode: { * cpus: 4, * memory: 8192, * }, * loadBalancer: { * vipConfig: { * controlPlaneVip: "10.251.133.5", * addonsVip: "10.251.135.19", * }, * metalLbConfig: { * enabled: true, * }, * }, * privateRegistryConfig: { * address: "test-address", * caCert: "test-ca-cert", * }, * proxy: { * url: "http://my-proxy.example.local:80", * noProxy: "10.151.222.0/24,my-host.example.local,10.151.2.1", * }, * }); * ``` * * ## Import * * VmwareAdminCluster can be imported using any of these accepted formats: * * * `projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}}` * * `{{project}}/{{location}}/{{name}}` * * `{{location}}/{{name}}` * * When using the `pulumi import` command, VmwareAdminCluster can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default projects/{{project}}/locations/{{location}}/vmwareAdminClusters/{{name}} * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{project}}/{{location}}/{{name}} * $ pulumi import gcp:gkeonprem/vmwareAdminCluster:VmwareAdminCluster default {{location}}/{{name}} * ``` */ export declare class VmwareAdminCluster extends pulumi.CustomResource { /** * Get an existing VmwareAdminCluster 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?: VmwareAdminClusterState, opts?: pulumi.CustomResourceOptions): VmwareAdminCluster; /** * Returns true if the given object is an instance of VmwareAdminCluster. 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 VmwareAdminCluster; /** * The VMware admin cluster addon node configuration. * Structure is documented below. */ readonly addonNode: pulumi.Output; /** * 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. * * **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; }>; /** * AAGConfig specifies whether to spread VMware Admin Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ readonly antiAffinityGroups: pulumi.Output; /** * The VMware admin cluster authorization configuration. * Structure is documented below. */ readonly authorization: pulumi.Output; /** * Configuration for auto repairing. * Structure is documented below. */ readonly autoRepairConfig: pulumi.Output; /** * The bootstrap cluster this VMware admin cluster belongs to. */ readonly bootstrapClusterMembership: pulumi.Output; /** * The VMware admin cluster control plane node configuration. * Structure is documented below. */ readonly controlPlaneNode: pulumi.Output; /** * The time the cluster was created, in RFC3339 text format. */ readonly createTime: pulumi.Output; /** * A human readable description of this VMware admin cluster. */ readonly description: 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; }>; /** * If set, the advanced cluster feature is enabled. */ readonly enableAdvancedCluster: pulumi.Output; /** * The DNS name of VMware admin 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; /** * The OS image type for the VMware admin cluster. */ readonly imageType: pulumi.Output; /** * Specifies the load balancer configuration for VMware admin cluster. * Structure is documented below. */ readonly loadBalancer: pulumi.Output; /** * 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. */ readonly localName: pulumi.Output; /** * The location of the resource. */ readonly location: pulumi.Output; /** * The VMware admin cluster resource name. */ readonly name: pulumi.Output; /** * The VMware admin cluster network configuration. * Structure is documented below. */ readonly networkConfig: pulumi.Output; /** * The Anthos clusters on the VMware version for the admin cluster. */ readonly onPremVersion: pulumi.Output; /** * The VMware platform configuration. * Structure is documented below. */ readonly platformConfig: pulumi.Output; /** * Configuration for private registry. * Structure is documented below. */ readonly privateRegistryConfig: 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; /** * Configuration for proxy. * Structure is documented below. */ readonly proxy: pulumi.Output; /** * If set, there are currently changes in flight to the VMware admin cluster. */ readonly reconciling: pulumi.Output; /** * (Output) * The lifecycle state of the condition. */ readonly state: pulumi.Output; /** * ResourceStatus representing detailed cluster state. * Structure is documented below. */ readonly statuses: pulumi.Output; /** * The unique identifier of the VMware Admin Cluster. */ readonly uid: pulumi.Output; /** * The time the cluster was last updated, in RFC3339 text format. */ readonly updateTime: pulumi.Output; /** * Specifies vCenter config for the admin cluster. * Structure is documented below. */ readonly vcenter: pulumi.Output; /** * Create a VmwareAdminCluster 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: VmwareAdminClusterArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering VmwareAdminCluster resources. */ export interface VmwareAdminClusterState { /** * The VMware admin cluster addon node configuration. * Structure is documented below. */ addonNode?: pulumi.Input; /** * 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. * * **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 Admin Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ antiAffinityGroups?: pulumi.Input; /** * The VMware admin cluster authorization configuration. * Structure is documented below. */ authorization?: pulumi.Input; /** * Configuration for auto repairing. * Structure is documented below. */ autoRepairConfig?: pulumi.Input; /** * The bootstrap cluster this VMware admin cluster belongs to. */ bootstrapClusterMembership?: pulumi.Input; /** * The VMware admin cluster control plane node configuration. * Structure is documented below. */ controlPlaneNode?: pulumi.Input; /** * The time the cluster was created, in RFC3339 text format. */ createTime?: pulumi.Input; /** * A human readable description of this VMware admin cluster. */ description?: 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; }>; /** * If set, the advanced cluster feature is enabled. */ enableAdvancedCluster?: pulumi.Input; /** * The DNS name of VMware admin 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[]>; /** * The OS image type for the VMware admin cluster. */ imageType?: pulumi.Input; /** * Specifies the load balancer configuration for VMware admin cluster. * Structure is documented below. */ loadBalancer?: pulumi.Input; /** * 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. */ localName?: pulumi.Input; /** * The location of the resource. */ location?: pulumi.Input; /** * The VMware admin cluster resource name. */ name?: pulumi.Input; /** * The VMware admin cluster network configuration. * Structure is documented below. */ networkConfig?: pulumi.Input; /** * The Anthos clusters on the VMware version for the admin cluster. */ onPremVersion?: pulumi.Input; /** * The VMware platform configuration. * Structure is documented below. */ platformConfig?: pulumi.Input; /** * Configuration for private registry. * Structure is documented below. */ privateRegistryConfig?: 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; /** * Configuration for proxy. * Structure is documented below. */ proxy?: pulumi.Input; /** * If set, there are currently changes in flight to the VMware admin cluster. */ reconciling?: pulumi.Input; /** * (Output) * The lifecycle state of the condition. */ state?: pulumi.Input; /** * ResourceStatus representing detailed cluster state. * Structure is documented below. */ statuses?: pulumi.Input[]>; /** * The unique identifier of the VMware Admin Cluster. */ uid?: pulumi.Input; /** * The time the cluster was last updated, in RFC3339 text format. */ updateTime?: pulumi.Input; /** * Specifies vCenter config for the admin cluster. * Structure is documented below. */ vcenter?: pulumi.Input; } /** * The set of arguments for constructing a VmwareAdminCluster resource. */ export interface VmwareAdminClusterArgs { /** * The VMware admin cluster addon node configuration. * Structure is documented below. */ addonNode?: pulumi.Input; /** * 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. * * **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 Admin Cluster nodes across at * least three physical hosts in the datacenter. * Structure is documented below. */ antiAffinityGroups?: pulumi.Input; /** * The VMware admin cluster authorization configuration. * Structure is documented below. */ authorization?: pulumi.Input; /** * Configuration for auto repairing. * Structure is documented below. */ autoRepairConfig?: pulumi.Input; /** * The bootstrap cluster this VMware admin cluster belongs to. */ bootstrapClusterMembership?: pulumi.Input; /** * The VMware admin cluster control plane node configuration. * Structure is documented below. */ controlPlaneNode?: pulumi.Input; /** * A human readable description of this VMware admin cluster. */ description?: pulumi.Input; /** * If set, the advanced cluster feature is enabled. */ enableAdvancedCluster?: pulumi.Input; /** * The OS image type for the VMware admin cluster. */ imageType?: pulumi.Input; /** * Specifies the load balancer configuration for VMware admin cluster. * Structure is documented below. */ loadBalancer?: pulumi.Input; /** * The location of the resource. */ location: pulumi.Input; /** * The VMware admin cluster resource name. */ name?: pulumi.Input; /** * The VMware admin cluster network configuration. * Structure is documented below. */ networkConfig: pulumi.Input; /** * The Anthos clusters on the VMware version for the admin cluster. */ onPremVersion?: pulumi.Input; /** * The VMware platform configuration. * Structure is documented below. */ platformConfig?: pulumi.Input; /** * Configuration for private registry. * Structure is documented below. */ privateRegistryConfig?: 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; /** * Configuration for proxy. * Structure is documented below. */ proxy?: pulumi.Input; /** * Specifies vCenter config for the admin cluster. * Structure is documented below. */ vcenter?: pulumi.Input; }