mmv1/products/gkeonprem/VmwareAdminCluster.yaml (673 lines of code) (raw):
# 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:
insert_minutes: 60
delete_minutes: 60
update_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
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
- name: 'lastTransitionTime'
type: Time
description: |
Last time the condition transit from one status to another.
output: true
- name: 'state'
type: String
description: The lifecycle state of the condition.
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
- name: 'lastTransitionTime'
type: Time
description: |
Last time the condition transit from one status to another.
output: true
- name: 'state'
type: String
description: The lifecycle state of the condition.
output: true
- type: String
name: "uid"
description: |
The unique identifier of the VMware Admin Cluster.
output: true
- name: "state"
type: String
description: The lifecycle state of the VMware admin cluster.
output: true
- 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
- name: "createTime"
type: Time
description: |
The time the cluster was created, in RFC3339 text format.
output: true
- name: "updateTime"
type: Time
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/<project-number>/locations/<location>/memberships/<cluster-id>`.
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
- name: 'lastTransitionTime'
type: Time
description: |
Last time the condition transit from one status to another.
output: true
- name: 'state'
type: String
description: The lifecycle state of the condition.
output: true
- type: Boolean
name: enableAdvancedCluster
description: If set, the advanced cluster feature is enabled.
output: true