mmv1/products/gkeonprem/VmwareCluster.yaml (726 lines of code) (raw):

# Copyright 2024 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: 'VmwareCluster' description: 'A Google VMware User Cluster.' docs: id_format: 'projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}' base_url: 'projects/{{project}}/locations/{{location}}/vmwareClusters' self_link: 'projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}' create_url: 'projects/{{project}}/locations/{{location}}/vmwareClusters?vmware_cluster_id={{name}}' update_url: 'projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}' update_verb: 'PATCH' update_mask: true delete_url: 'projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}?force=true' import_format: - 'projects/{{project}}/locations/{{location}}/vmwareClusters/{{name}}' timeouts: insert_minutes: 60 update_minutes: 60 delete_minutes: 60 async: actions: ['create', 'delete', 'update'] type: 'OpAsync' operation: base_url: '{{op_id}}' result: resource_inside_response: true custom_code: taint_resource_on_failed_create: true sweeper: url_substitutions: - region: "us-west1" examples: - name: 'gkeonprem_vmware_cluster_basic' primary_resource_id: 'cluster-basic' vars: name: 'cluster-basic' test_env_vars: project: 'fake-backend-360322' - name: 'gkeonprem_vmware_cluster_f5lb' primary_resource_id: 'cluster-f5lb' vars: name: 'cluster-f5lb' test_env_vars: project: 'fake-backend-360322' - name: 'gkeonprem_vmware_cluster_manuallb' primary_resource_id: 'cluster-manuallb' vars: name: 'cluster-manuallb' test_env_vars: project: 'fake-backend-360322' parameters: - name: 'name' type: String description: The VMware cluster name. url_param_only: true required: true immutable: true - name: 'location' type: String description: The location of the resource. url_param_only: true required: true immutable: true properties: - name: 'adminClusterMembership' type: String description: | 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. required: true immutable: true diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' - name: 'description' type: String description: | A human readable description of this VMware User Cluster. - name: 'onPremVersion' type: String description: | The Anthos clusters on the VMware version for your user cluster. required: true - name: 'annotations' type: KeyValueAnnotations description: | 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. - name: 'controlPlaneNode' type: NestedObject description: | VMware User Cluster control plane nodes must have either 1 or 3 replicas. required: true properties: - name: 'cpus' type: Integer description: | The number of CPUs for each admin cluster node that serve as control planes for this VMware User Cluster. (default: 4 CPUs) default_value: 4 - name: 'memory' type: Integer description: | The megabytes of memory for each admin cluster node that serves as a control plane for this VMware User Cluster (default: 8192 MB memory). default_value: 8192 - name: 'replicas' type: Integer description: | The number of control plane nodes for this VMware User Cluster. (default: 1 replica). default_value: 1 - name: 'autoResizeConfig' type: NestedObject description: | AutoResizeConfig provides auto resizing configurations. default_from_api: true properties: - name: 'enabled' type: Boolean description: | Whether to enable control plane node auto resizing. required: true - name: 'vsphereConfig' type: NestedObject description: Vsphere-specific config. output: true properties: - name: 'datastore' type: String description: The Vsphere datastore used by the Control Plane Node. output: true - name: 'storagePolicyName' type: String description: | The Vsphere storage policy used by the control plane Node. output: true - name: 'antiAffinityGroups' type: NestedObject description: | AAGConfig specifies whether to spread VMware User Cluster nodes across at least three physical hosts in the datacenter. default_from_api: true properties: - name: 'aagConfigDisabled' type: Boolean description: | Spread nodes across at least three physical hosts (requires at least three hosts). Enabled by default. required: true - name: 'storage' type: NestedObject description: Storage configuration. default_from_api: true properties: - name: 'vsphereCsiDisabled' type: Boolean description: | Whether or not to deploy vSphere CSI components in the VMware User Cluster. Enabled by default. required: true - name: 'networkConfig' type: NestedObject description: The VMware User Cluster network configuration. properties: - name: 'serviceAddressCidrBlocks' type: Array 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. required: true item_type: type: String - name: 'podAddressCidrBlocks' type: Array 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. required: true item_type: type: String - name: 'staticIpConfig' type: NestedObject description: Configuration settings for a static IP configuration. exactly_one_of: - 'network_config.0.static_ip_config' - 'network_config.0.dhcp_ip_config' properties: - name: 'ipBlocks' type: Array description: Represents the configuration values for static IP allocation to nodes. required: true item_type: type: NestedObject properties: - name: 'netmask' type: String description: The netmask used by the VMware User Cluster. required: true - name: 'gateway' type: String description: The network gateway used by the VMware User Cluster. required: true - name: 'ips' type: Array description: The node's network configurations used by the VMware User Cluster. required: true item_type: type: NestedObject properties: - name: 'ip' type: String description: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). required: true - name: 'hostname' type: String description: Hostname of the machine. VM's name will be used if this field is empty. default_from_api: true - name: 'dhcpIpConfig' type: NestedObject description: Configuration settings for a DHCP IP configuration. default_from_api: true exactly_one_of: - 'network_config.0.static_ip_config' - 'network_config.0.dhcp_ip_config' properties: - name: 'enabled' type: Boolean description: | enabled is a flag to mark if DHCP IP allocation is used for VMware user clusters. required: true - name: 'vcenterNetwork' type: String description: vcenter_network specifies vCenter network name. Inherited from the admin cluster. immutable: true default_from_api: true - name: 'hostConfig' type: NestedObject description: Represents common network settings irrespective of the host's IP address. default_from_api: true properties: - name: 'dnsServers' type: Array description: DNS servers. item_type: type: String - name: 'ntpServers' type: Array description: NTP servers. item_type: type: String - name: 'dnsSearchDomains' type: Array description: DNS search domains. item_type: type: String - name: 'controlPlaneV2Config' type: NestedObject description: Configuration for control plane V2 mode. properties: - name: 'controlPlaneIpBlock' type: NestedObject description: Static IP addresses for the control plane nodes. properties: - name: 'netmask' type: String description: The netmask used by the VMware User Cluster. - name: 'gateway' type: String description: The network gateway used by the VMware User Cluster. - name: 'ips' type: Array description: The node's network configurations used by the VMware User Cluster. item_type: type: NestedObject properties: - name: 'ip' type: String description: IP could be an IP address (like 1.2.3.4) or a CIDR (like 1.2.3.0/24). - name: 'hostname' type: String description: Hostname of the machine. VM's name will be used if this field is empty. default_from_api: true - name: 'loadBalancer' type: NestedObject description: Load Balancer configuration. properties: - name: 'vipConfig' type: NestedObject description: The VIPs used by the load balancer. properties: - name: 'controlPlaneVip' type: String description: The VIP which you previously set aside for the Kubernetes API of this cluster. - name: 'ingressVip' type: String description: The VIP which you previously set aside for ingress traffic into this cluster. - name: 'f5Config' type: NestedObject 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: - name: 'address' type: String description: The load balancer's IP address. - name: 'partition' type: String 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'. - name: 'snatPool' type: String description: The pool name. Only necessary, if using SNAT. default_from_api: true - name: 'manualLbConfig' type: NestedObject description: Manually configured load balancers. exactly_one_of: - 'loadBalancer.0.f5_config' - 'loadBalancer.0.manual_lb_config' - 'loadBalancer.0.metal_lb_config' properties: - name: 'ingressHttpNodePort' type: Integer 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 - name: 'ingressHttpsNodePort' type: Integer 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 - name: 'controlPlaneNodePort' type: Integer 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 - name: 'konnectivityServerNodePort' type: Integer description: | NodePort for konnectivity server service running as a sidecar in each kube-apiserver pod (ex. 30564). default_from_api: true - name: 'metalLbConfig' type: NestedObject description: Configuration for MetalLB typed load balancers. exactly_one_of: - 'loadBalancer.0.f5_config' - 'loadBalancer.0.manual_lb_config' - 'loadBalancer.0.metal_lb_config' properties: - name: 'addressPools' type: Array description: | AddressPools is a list of non-overlapping IP pools used by load balancer typed services. All addresses must be routable to load balancer nodes. IngressVIP must be included in the pools. required: true item_type: type: NestedObject properties: - name: 'pool' type: String description: | The name of the address pool. required: true - name: 'addresses' type: Array description: | The addresses that are part of this pool. Each address must be either in the CIDR form (1.2.3.0/24) or range form (1.2.3.1-1.2.3.5). required: true item_type: type: String - name: 'avoidBuggyIps' type: Boolean description: | If true, avoid using IPs ending in .0 or .255. This avoids buggy consumer devices mistakenly dropping IPv4 traffic for those special IP addresses. default_from_api: true - name: 'manualAssign' type: Boolean description: | If true, prevent IP addresses from being automatically assigned. default_from_api: true - name: 'dataplaneV2' type: NestedObject description: VmwareDataplaneV2Config specifies configuration for Dataplane V2. default_from_api: true properties: - name: 'dataplaneV2Enabled' type: Boolean description: Enables Dataplane V2. - name: 'windowsDataplaneV2Enabled' type: Boolean description: Enable Dataplane V2 for clusters with Windows nodes. - name: 'advancedNetworking' type: Boolean description: Enable advanced networking which requires dataplane_v2_enabled to be set true. - name: 'vmTrackingEnabled' type: Boolean description: Enable VM tracking. default_from_api: true - name: 'autoRepairConfig' type: NestedObject description: Configuration for auto repairing. default_from_api: true properties: - name: 'enabled' type: Boolean description: Whether auto repair is enabled. required: true - name: 'authorization' type: NestedObject description: RBAC policy that will be applied and managed by GKE On-Prem. properties: - name: 'adminUsers' type: Array description: | Users that will be granted the cluster-admin role on the cluster, providing full access to the cluster. item_type: type: NestedObject properties: - name: 'username' type: String description: The name of the user, e.g. `my-gcp-id@gmail.com`. required: true - name: 'validationCheck' type: NestedObject description: ValidationCheck represents the result of the preflight check job. output: true properties: - name: 'options' type: Enum description: Options used for the validation check. output: true enum_values: - 'OPTIONS_UNSPECIFIED' - 'SKIP_VALIDATION_CHECK_BLOCKING' - 'SKIP_VALIDATION_ALL' - name: 'status' type: NestedObject description: | Specifies the detailed validation check status output: true properties: - name: 'result' type: Array description: Individual checks which failed as part of the Preflight check execution. output: true item_type: type: NestedObject properties: - name: 'options' type: Enum description: Options used for the validation check. output: true enum_values: - 'STATE_UNKNOWN' - 'STATE_FAILURE' - 'STATE_SKIPPED' - 'STATE_UNKNOWN' - 'STATE_FATAL' - 'STATE_WARNING' - name: 'description' type: String description: | The description of the validation check. output: true - name: 'category' type: String description: | The category of the validation. output: true - name: 'reason' type: String description: | A human-readable message of the check failure. output: true - name: 'details' type: String description: | Detailed failure information, which might be unformatted. output: true - name: 'scenario' type: Enum description: The scenario when the preflight checks were run.. output: true enum_values: - 'SCENARIO_UNSPECIFIED' - 'CREATE' - 'UPDATE' - name: 'enableControlPlaneV2' type: Boolean description: Enable control plane V2. Default to false. - name: 'enableAdvancedCluster' type: Boolean description: Enable advanced cluster. Default to false. - name: 'disableBundledIngress' type: Boolean description: Disable bundled ingress. - name: 'upgradePolicy' type: NestedObject description: Specifies upgrade policy for the cluster. properties: - name: 'controlPlaneOnly' type: Boolean description: | Controls whether the upgrade applies to the control plane only. - name: 'uid' type: String description: | The unique identifier of the VMware User Cluster. output: true - name: 'state' type: Enum description: The current state of this cluster. output: true enum_values: - 'STATE_UNSPECIFIED' - 'PROVISIONING' - 'RUNNING' - 'RECONCILING' - 'STOPPING' - 'ERROR' - 'DEGRADED' - name: 'endpoint' type: String description: | The DNS name of VMware User Cluster's API server. output: true - name: 'reconciling' type: Boolean description: | If set, there are currently changes in flight to the VMware User Cluster. output: true - name: 'createTime' type: Time description: | The time at which VMware User Cluster was created. output: true - name: 'updateTime' type: Time description: | The time at which VMware User Cluster was last updated. output: true - name: 'deleteTime' type: Time description: | The time at which VMware User Cluster was deleted. output: true - name: 'localName' type: String description: | 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. output: true - name: 'etag' type: String 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 - name: 'fleet' type: NestedObject description: Fleet configuration for the cluster. output: true properties: - name: 'membership' type: String description: | The name of the managed Hub Membership resource associated to this cluster. Membership names are formatted as `projects/<project-number>/locations/<location>/memberships/<cluster-id>`. output: true - name: 'vcenter' type: NestedObject 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. output: true - 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. output: true properties: - name: 'errorMessage' type: String description: | Human-friendly representation of the error message from the user cluster controller. The error message can be temporary as the user 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 - name: 'conditions' type: Array description: | ResourceConditions provide a standard mechanism for higher-level status reporting from user cluster controller. output: true item_type: type: NestedObject properties: - name: 'type' type: String description: | Type of the condition. (e.g., ClusterRunning, NodePoolRunning or ServerSidePreflightReady) output: true - name: 'reason' type: String description: | Machine-readable message indicating details about last transition. output: true - name: 'message' type: String description: | Human-readable message indicating details about last transition. output: true - name: 'lastTransitionTime' type: Time description: | Last time the condition transit from one status to another. output: true - name: 'state' type: Enum description: The lifecycle state of the condition. output: true enum_values: - 'STATE_UNSPECIFIED' - 'STATE_TRUE' - 'STATE_FALSE' - 'STATE_UNKNOWN'