diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedcluster_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedcluster_v1alpha1.json new file mode 100644 index 00000000..ed761861 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedcluster_v1alpha1.json @@ -0,0 +1,105 @@ +{ + "description": "AzureASOManagedCluster is the Schema for the azureasomanagedclusters API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedClusterSpec defines the desired state of AzureASOManagedCluster.", + "properties": { + "controlPlaneEndpoint": { + "description": "ControlPlaneEndpoint is the location of the API server within the control plane. CAPZ manages this field\nand it should not be set by the user. It fulfills Cluster API's cluster infrastructure provider contract.\nBecause this field is programmatically set by CAPZ after resource creation, we define it as +optional\nin the API schema to permit resource admission.", + "properties": { + "host": { + "description": "The hostname on which the API server is serving.", + "type": "string" + }, + "port": { + "description": "The port on which the API server is serving.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "host", + "port" + ], + "type": "object", + "additionalProperties": false + }, + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "AzureASOManagedClusterStatus defines the observed state of AzureASOManagedCluster.", + "properties": { + "ready": { + "description": "Ready represents whether or not the cluster has been provisioned and is ready. It fulfills Cluster\nAPI's cluster infrastructure provider contract.", + "type": "boolean" + }, + "resources": { + "items": { + "description": "ResourceStatus represents the status of a resource.", + "properties": { + "ready": { + "type": "boolean" + }, + "resource": { + "description": "StatusResource is a handle to a resource.", + "properties": { + "group": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "group", + "kind", + "name", + "version" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "ready", + "resource" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedclustertemplate_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedclustertemplate_v1alpha1.json new file mode 100644 index 00000000..5faf2475 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedclustertemplate_v1alpha1.json @@ -0,0 +1,49 @@ +{ + "description": "AzureASOManagedClusterTemplate is the Schema for the azureasomanagedclustertemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedClusterTemplateSpec defines the desired state of AzureASOManagedClusterTemplate.", + "properties": { + "template": { + "description": "AzureASOManagedClusterTemplateResource defines the templated resource.", + "properties": { + "spec": { + "description": "AzureASOManagedClusterTemplateResourceSpec defines the desired state of the templated resource.", + "properties": { + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplane_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplane_v1alpha1.json new file mode 100644 index 00000000..b07ea9c2 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplane_v1alpha1.json @@ -0,0 +1,117 @@ +{ + "description": "AzureASOManagedControlPlane is the Schema for the azureasomanagedcontrolplanes API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedControlPlaneSpec defines the desired state of AzureASOManagedControlPlane.", + "properties": { + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "version": { + "description": "Version is the Kubernetes version of the control plane. It fulfills Cluster API's control plane\nprovider contract.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "AzureASOManagedControlPlaneStatus defines the observed state of AzureASOManagedControlPlane.", + "properties": { + "controlPlaneEndpoint": { + "description": "ControlPlaneEndpoint represents the endpoint for the cluster's API server.", + "properties": { + "host": { + "description": "The hostname on which the API server is serving.", + "type": "string" + }, + "port": { + "description": "The port on which the API server is serving.", + "format": "int32", + "type": "integer" + } + }, + "required": [ + "host", + "port" + ], + "type": "object", + "additionalProperties": false + }, + "initialized": { + "description": "Initialized represents whether or not the API server has been provisioned. It fulfills Cluster API's\ncontrol plane provider contract. For AKS, this is equivalent to `ready`.", + "type": "boolean" + }, + "ready": { + "description": "Ready represents whether or not the API server is ready to receive requests. It fulfills Cluster API's\ncontrol plane provider contract. For AKS, this is equivalent to `initialized`.", + "type": "boolean" + }, + "resources": { + "items": { + "description": "ResourceStatus represents the status of a resource.", + "properties": { + "ready": { + "type": "boolean" + }, + "resource": { + "description": "StatusResource is a handle to a resource.", + "properties": { + "group": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "group", + "kind", + "name", + "version" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "ready", + "resource" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "version": { + "description": "Version is the observed Kubernetes version of the control plane. It fulfills Cluster API's control\nplane provider contract.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplanetemplate_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplanetemplate_v1alpha1.json new file mode 100644 index 00000000..407d0392 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedcontrolplanetemplate_v1alpha1.json @@ -0,0 +1,53 @@ +{ + "description": "AzureASOManagedControlPlaneTemplate is the Schema for the azureasomanagedcontrolplanetemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedControlPlaneTemplateSpec defines the desired state of AzureASOManagedControlPlane.", + "properties": { + "template": { + "description": "AzureASOManagedControlPlaneResource defines the templated resource.", + "properties": { + "spec": { + "description": "AzureASOManagedControlPlaneTemplateResourceSpec defines the desired state of the templated resource.", + "properties": { + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "version": { + "description": "Version is the Kubernetes version of the control plane. It fulfills Cluster API's control plane\nprovider contract.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepool_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepool_v1alpha1.json new file mode 100644 index 00000000..edae6ac8 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepool_v1alpha1.json @@ -0,0 +1,97 @@ +{ + "description": "AzureASOManagedMachinePool is the Schema for the azureasomanagedmachinepools API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedMachinePoolSpec defines the desired state of AzureASOManagedMachinePool.", + "properties": { + "providerIDList": { + "description": "ProviderIDList is the list of cloud provider IDs for the instances. It fulfills Cluster API's machine\npool infrastructure provider contract.", + "items": { + "type": "string" + }, + "type": "array" + }, + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "status": { + "description": "AzureASOManagedMachinePoolStatus defines the observed state of AzureASOManagedMachinePool.", + "properties": { + "ready": { + "description": "Ready represents whether or not the infrastructure is ready to be used. It fulfills Cluster API's\nmachine pool infrastructure provider contract.", + "type": "boolean" + }, + "replicas": { + "description": "Replicas is the current number of provisioned replicas. It fulfills Cluster API's machine pool\ninfrastructure provider contract.", + "format": "int32", + "type": "integer" + }, + "resources": { + "items": { + "description": "ResourceStatus represents the status of a resource.", + "properties": { + "ready": { + "type": "boolean" + }, + "resource": { + "description": "StatusResource is a handle to a resource.", + "properties": { + "group": { + "type": "string" + }, + "kind": { + "type": "string" + }, + "name": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "required": [ + "group", + "kind", + "name", + "version" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "ready", + "resource" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepooltemplate_v1alpha1.json b/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepooltemplate_v1alpha1.json new file mode 100644 index 00000000..5ccd724a --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azureasomanagedmachinepooltemplate_v1alpha1.json @@ -0,0 +1,53 @@ +{ + "description": "AzureASOManagedMachinePoolTemplate is the Schema for the azureasomanagedmachinepooltemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureASOManagedMachinePoolTemplateSpec defines the desired state of AzureASOManagedMachinePoolTemplate.", + "properties": { + "template": { + "description": "AzureASOManagedControlPlaneResource defines the templated resource.", + "properties": { + "spec": { + "description": "AzureASOManagedControlPlaneTemplateResourceSpec defines the desired state of the templated resource.", + "properties": { + "resources": { + "description": "Resources are embedded ASO resources to be managed by this resource.", + "items": { + "type": "object", + "x-kubernetes-preserve-unknown-fields": true + }, + "type": "array" + }, + "version": { + "description": "Version is the Kubernetes version of the control plane. It fulfills Cluster API's control plane\nprovider contract.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azurecluster_v1beta1.json b/infrastructure.cluster.x-k8s.io/azurecluster_v1beta1.json index a83d7b2a..c12d59de 100644 --- a/infrastructure.cluster.x-k8s.io/azurecluster_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azurecluster_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureCluster is the Schema for the azureclusters API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -19,11 +19,11 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the ones added by default.", + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the\nones added by default.", "type": "object" }, "azureEnvironment": { - "description": "AzureEnvironment is the name of the AzureCloud to be used. The default value that would be used by most users is \"AzurePublicCloud\", other values are: - ChinaCloud: \"AzureChinaCloud\" - GermanCloud: \"AzureGermanCloud\" - PublicCloud: \"AzurePublicCloud\" - USGovernmentCloud: \"AzureUSGovernmentCloud\"", + "description": "AzureEnvironment is the name of the AzureCloud to be used.\nThe default value that would be used by most users is \"AzurePublicCloud\", other values are:\n- ChinaCloud: \"AzureChinaCloud\"\n- GermanCloud: \"AzureGermanCloud\"\n- PublicCloud: \"AzurePublicCloud\"\n- USGovernmentCloud: \"AzureUSGovernmentCloud\"\n\n\nNote that values other than the default must also be accompanied by corresponding changes to the\naso-controller-settings Secret to configure ASO to refer to the non-Public cloud. ASO currently does\nnot support referring to multiple different clouds in a single installation. The following fields must\nbe defined in the Secret:\n- AZURE_AUTHORITY_HOST\n- AZURE_RESOURCE_MANAGER_ENDPOINT\n- AZURE_RESOURCE_MANAGER_AUDIENCE\n\n\nSee the [ASO docs] for more details.\n\n\n[ASO docs]: https://azure.github.io/azure-service-operator/guide/aso-controller-settings-options/", "type": "string" }, "bastionSpec": { @@ -98,7 +98,7 @@ "type": "array" }, "id": { - "description": "ID is the Azure resource ID of the subnet. READ-ONLY", + "description": "ID is the Azure resource ID of the subnet.\nREAD-ONLY", "type": "string" }, "name": { @@ -109,7 +109,7 @@ "description": "NatGateway associated with this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the NAT gateway. READ-ONLY", + "description": "ID is the Azure resource ID of the NAT gateway.\nREAD-ONLY", "type": "string" }, "ip": { @@ -181,7 +181,7 @@ "type": "string" }, "manualApproval": { - "description": "ManualApproval specifies if the connection approval needs to be done manually or not. Set it true when the network admin does not have access to approve connections to the remote resource. Defaults to false.", + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", "type": "boolean" }, "name": { @@ -189,7 +189,7 @@ "type": "string" }, "privateIPAddresses": { - "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint. They have to be part of the subnet where the private endpoint is linked.", + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", "items": { "type": "string" }, @@ -244,7 +244,8 @@ "enum": [ "node", "control-plane", - "bastion" + "bastion", + "all" ], "type": "string" }, @@ -252,7 +253,7 @@ "description": "RouteTable defines the route table that should be attached to this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the route table. READ-ONLY", + "description": "ID is the Azure resource ID of the route table.\nREAD-ONLY", "type": "string" }, "name": { @@ -269,7 +270,7 @@ "description": "SecurityGroup defines the NSG (network security group) that should be attached to this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the security group. READ-ONLY", + "description": "ID is the Azure resource ID of the security group.\nREAD-ONLY", "type": "string" }, "name": { @@ -280,6 +281,15 @@ "items": { "description": "SecurityRule defines an Azure security rule for security groups.", "properties": { + "action": { + "default": "Allow", + "description": "Action specifies whether network traffic is allowed or denied. Can either be \"Allow\" or \"Deny\". Defaults to \"Allow\".", + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, "description": { "description": "A description for this rule. Restricted to 140 chars.", "type": "string" @@ -326,6 +336,13 @@ "sourcePorts": { "description": "SourcePorts specifies source port or range. Integer or range between 0 and 65535. Asterix '*' can also be used to match all ports.", "type": "string" + }, + "sources": { + "description": "Sources specifies The CIDR or source IP ranges.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ @@ -402,7 +419,7 @@ "additionalProperties": false }, "cloudProviderConfigOverrides": { - "description": "CloudProviderConfigOverrides is an optional set of configuration values that can be overridden in azure cloud provider config. This is only a subset of options that are available in azure cloud provider config. Some values for the cloud provider config are inferred from other parts of cluster api provider azure spec, and may not be available for overrides. See: https://kubernetes-sigs.github.io/cloud-provider-azure/install/configs Note: All cloud provider config values can be customized by creating the secret beforehand. CloudProviderConfigOverrides is only used when the secret is managed by the Azure Provider.", + "description": "CloudProviderConfigOverrides is an optional set of configuration values that can be overridden in azure cloud provider config.\nThis is only a subset of options that are available in azure cloud provider config.\nSome values for the cloud provider config are inferred from other parts of cluster api provider azure spec, and may not be available for overrides.\nSee: https://cloud-provider-azure.sigs.k8s.io/install/configs\nNote: All cloud provider config values can be customized by creating the secret beforehand. CloudProviderConfigOverrides is only used when the secret is managed by the Azure Provider.", "properties": { "backOffs": { "description": "BackOffConfig indicates the back-off config options.", @@ -446,7 +463,7 @@ }, "rateLimits": { "items": { - "description": "RateLimitSpec represents the rate limit configuration for a particular kind of resource. Eg. loadBalancerRateLimit is used to configure rate limits for load balancers. This eventually gets converted to CloudProviderRateLimitConfig that cloud-provider-azure expects. See: https://github.com/kubernetes-sigs/cloud-provider-azure/blob/d585c2031925b39c925624302f22f8856e29e352/pkg/provider/azure_ratelimit.go#L25 We cannot use CloudProviderRateLimitConfig directly because floating point values are not supported in controller-tools. See: https://github.com/kubernetes-sigs/controller-tools/issues/245", + "description": "RateLimitSpec represents the rate limit configuration for a particular kind of resource.\nEg. loadBalancerRateLimit is used to configure rate limits for load balancers.\nThis eventually gets converted to CloudProviderRateLimitConfig that cloud-provider-azure expects.\nSee: https://github.com/kubernetes-sigs/cloud-provider-azure/blob/d585c2031925b39c925624302f22f8856e29e352/pkg/provider/azure_ratelimit.go#L25\nWe cannot use CloudProviderRateLimitConfig directly because floating point values are not supported in controller-tools.\nSee: https://github.com/kubernetes-sigs/controller-tools/issues/245", "properties": { "config": { "description": "RateLimitConfig indicates the rate limit config options.", @@ -523,7 +540,7 @@ "additionalProperties": false }, "controlPlaneEndpoint": { - "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. It is not recommended to set this when creating an AzureCluster as CAPZ will set this for you. However, if it is set, CAPZ will not change it.", + "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. It is not recommended to set\nthis when creating an AzureCluster as CAPZ will set this for you. However, if it is set, CAPZ will not change it.", "properties": { "host": { "description": "The hostname on which the API server is serving.", @@ -564,6 +581,28 @@ "type": "object", "additionalProperties": false }, + "failureDomains": { + "additionalProperties": { + "description": "FailureDomainSpec is the Schema for Cluster API failure domains.\nIt allows controllers to understand how many failure domains a cluster can optionally span across.", + "properties": { + "attributes": { + "additionalProperties": { + "type": "string" + }, + "description": "Attributes is a free form map of attributes an infrastructure provider might use or require.", + "type": "object" + }, + "controlPlane": { + "description": "ControlPlane determines if this failure domain is suitable for use by control plane machines.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": "FailureDomains is a list of failure domains in the cluster's region, used to restrict\neligibility to host the control plane. A FailureDomain maps to an availability zone,\nwhich is a separated group of datacenters within a region.\nSee: https://learn.microsoft.com/azure/reliability/availability-zones-overview", + "type": "object" + }, "identityRef": { "description": "IdentityRef is a reference to an AzureIdentity to be used when reconciling this cluster", "properties": { @@ -572,27 +611,27 @@ "type": "string" }, "fieldPath": { - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", + "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.", "type": "string" }, "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { - "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { - "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, @@ -613,7 +652,7 @@ "description": "BackendPool describes the backend pool of the load balancer.", "properties": { "name": { - "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will be set, depending on the load balancer role.", + "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will\nbe set, depending on the load balancer role.", "type": "string" } }, @@ -684,7 +723,7 @@ "type": "integer" }, "id": { - "description": "ID is the Azure resource ID of the load balancer. READ-ONLY", + "description": "ID is the Azure resource ID of the load balancer.\nREAD-ONLY", "type": "string" }, "idleTimeoutInMinutes": { @@ -708,13 +747,13 @@ "additionalProperties": false }, "controlPlaneOutboundLB": { - "description": "ControlPlaneOutboundLB is the configuration for the control-plane outbound load balancer. This is different from APIServerLB, and is used only in private clusters (optionally) for enabling outbound traffic.", + "description": "ControlPlaneOutboundLB is the configuration for the control-plane outbound load balancer.\nThis is different from APIServerLB, and is used only in private clusters (optionally) for enabling outbound traffic.", "properties": { "backendPool": { "description": "BackendPool describes the backend pool of the load balancer.", "properties": { "name": { - "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will be set, depending on the load balancer role.", + "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will\nbe set, depending on the load balancer role.", "type": "string" } }, @@ -785,7 +824,7 @@ "type": "integer" }, "id": { - "description": "ID is the Azure resource ID of the load balancer. READ-ONLY", + "description": "ID is the Azure resource ID of the load balancer.\nREAD-ONLY", "type": "string" }, "idleTimeoutInMinutes": { @@ -815,7 +854,7 @@ "description": "BackendPool describes the backend pool of the load balancer.", "properties": { "name": { - "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will be set, depending on the load balancer role.", + "description": "Name specifies the name of backend pool for the load balancer. If not specified, the default name will\nbe set, depending on the load balancer role.", "type": "string" } }, @@ -886,7 +925,7 @@ "type": "integer" }, "id": { - "description": "ID is the Azure resource ID of the load balancer. READ-ONLY", + "description": "ID is the Azure resource ID of the load balancer.\nREAD-ONLY", "type": "string" }, "idleTimeoutInMinutes": { @@ -926,7 +965,7 @@ "type": "array" }, "id": { - "description": "ID is the Azure resource ID of the subnet. READ-ONLY", + "description": "ID is the Azure resource ID of the subnet.\nREAD-ONLY", "type": "string" }, "name": { @@ -937,7 +976,7 @@ "description": "NatGateway associated with this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the NAT gateway. READ-ONLY", + "description": "ID is the Azure resource ID of the NAT gateway.\nREAD-ONLY", "type": "string" }, "ip": { @@ -1009,7 +1048,7 @@ "type": "string" }, "manualApproval": { - "description": "ManualApproval specifies if the connection approval needs to be done manually or not. Set it true when the network admin does not have access to approve connections to the remote resource. Defaults to false.", + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", "type": "boolean" }, "name": { @@ -1017,7 +1056,7 @@ "type": "string" }, "privateIPAddresses": { - "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint. They have to be part of the subnet where the private endpoint is linked.", + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", "items": { "type": "string" }, @@ -1072,7 +1111,8 @@ "enum": [ "node", "control-plane", - "bastion" + "bastion", + "all" ], "type": "string" }, @@ -1080,7 +1120,7 @@ "description": "RouteTable defines the route table that should be attached to this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the route table. READ-ONLY", + "description": "ID is the Azure resource ID of the route table.\nREAD-ONLY", "type": "string" }, "name": { @@ -1097,7 +1137,7 @@ "description": "SecurityGroup defines the NSG (network security group) that should be attached to this subnet.", "properties": { "id": { - "description": "ID is the Azure resource ID of the security group. READ-ONLY", + "description": "ID is the Azure resource ID of the security group.\nREAD-ONLY", "type": "string" }, "name": { @@ -1108,6 +1148,15 @@ "items": { "description": "SecurityRule defines an Azure security rule for security groups.", "properties": { + "action": { + "default": "Allow", + "description": "Action specifies whether network traffic is allowed or denied. Can either be \"Allow\" or \"Deny\". Defaults to \"Allow\".", + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, "description": { "description": "A description for this rule. Restricted to 140 chars.", "type": "string" @@ -1154,6 +1203,13 @@ "sourcePorts": { "description": "SourcePorts specifies source port or range. Integer or range between 0 and 65535. Asterix '*' can also be used to match all ports.", "type": "string" + }, + "sources": { + "description": "Sources specifies The CIDR or source IP ranges.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ @@ -1238,7 +1294,7 @@ "type": "array" }, "id": { - "description": "ID is the Azure resource ID of the virtual network. READ-ONLY", + "description": "ID is the Azure resource ID of the virtual network.\nREAD-ONLY", "type": "string" }, "name": { @@ -1250,6 +1306,29 @@ "items": { "description": "VnetPeeringSpec specifies an existing remote virtual network to peer with the AzureCluster's virtual network.", "properties": { + "forwardPeeringProperties": { + "description": "ForwardPeeringProperties specifies VnetPeeringProperties for peering from the cluster's virtual network to the\nremote virtual network.", + "properties": { + "allowForwardedTraffic": { + "description": "AllowForwardedTraffic specifies whether the forwarded traffic from the VMs in the local virtual network will be\nallowed/disallowed in remote virtual network.", + "type": "boolean" + }, + "allowGatewayTransit": { + "description": "AllowGatewayTransit specifies if gateway links can be used in remote virtual networking to link to this virtual\nnetwork.", + "type": "boolean" + }, + "allowVirtualNetworkAccess": { + "description": "AllowVirtualNetworkAccess specifies whether the VMs in the local virtual network space would be able to access\nthe VMs in remote virtual network space.", + "type": "boolean" + }, + "useRemoteGateways": { + "description": "UseRemoteGateways specifies if remote gateways can be used on this virtual network.\nIf the flag is set to true, and allowGatewayTransit on remote peering is also set to true, the virtual network\nwill use the gateways of the remote virtual network for transit. Only one peering can have this flag set to true.\nThis flag cannot be set if virtual network already has a gateway.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, "remoteVnetName": { "description": "RemoteVnetName defines name of the remote virtual network.", "type": "string" @@ -1257,6 +1336,29 @@ "resourceGroup": { "description": "ResourceGroup is the resource group name of the remote virtual network.", "type": "string" + }, + "reversePeeringProperties": { + "description": "ReversePeeringProperties specifies VnetPeeringProperties for peering from the remote virtual network to the\ncluster's virtual network.", + "properties": { + "allowForwardedTraffic": { + "description": "AllowForwardedTraffic specifies whether the forwarded traffic from the VMs in the local virtual network will be\nallowed/disallowed in remote virtual network.", + "type": "boolean" + }, + "allowGatewayTransit": { + "description": "AllowGatewayTransit specifies if gateway links can be used in remote virtual networking to link to this virtual\nnetwork.", + "type": "boolean" + }, + "allowVirtualNetworkAccess": { + "description": "AllowVirtualNetworkAccess specifies whether the VMs in the local virtual network space would be able to access\nthe VMs in remote virtual network space.", + "type": "boolean" + }, + "useRemoteGateways": { + "description": "UseRemoteGateways specifies if remote gateways can be used on this virtual network.\nIf the flag is set to true, and allowGatewayTransit on remote peering is also set to true, the virtual network\nwill use the gateways of the remote virtual network for transit. Only one peering can have this flag set to true.\nThis flag cannot be set if virtual network already has a gateway.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false } }, "required": [ @@ -1268,7 +1370,7 @@ "type": "array" }, "resourceGroup": { - "description": "ResourceGroup is the name of the resource group of the existing virtual network or the resource group where a managed virtual network should be created.", + "description": "ResourceGroup is the name of the resource group of the existing virtual network\nor the resource group where a managed virtual network should be created.", "type": "string" }, "tags": { @@ -1311,20 +1413,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -1332,7 +1434,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -1348,7 +1450,7 @@ }, "failureDomains": { "additionalProperties": { - "description": "FailureDomainSpec is the Schema for Cluster API failure domains. It allows controllers to understand how many failure domains a cluster can optionally span across.", + "description": "FailureDomainSpec is the Schema for Cluster API failure domains.\nIt allows controllers to understand how many failure domains a cluster can optionally span across.", "properties": { "attributes": { "additionalProperties": { @@ -1365,11 +1467,11 @@ "type": "object", "additionalProperties": false }, - "description": "FailureDomains specifies the list of unique failure domains for the location/region of the cluster. A FailureDomain maps to Availability Zone with an Azure Region (if the region support them). An Availability Zone is a separate data center within a region and they can be used to ensure the cluster is more resilient to failure. See: https://learn.microsoft.com/azure/reliability/availability-zones-overview This list will be used by Cluster API to try and spread the machines across the failure domains.", + "description": "FailureDomains specifies the list of unique failure domains for the location/region of the cluster.\nA FailureDomain maps to Availability Zone with an Azure Region (if the region support them). An\nAvailability Zone is a separate data center within a region and they can be used to ensure\nthe cluster is more resilient to failure.\nSee: https://learn.microsoft.com/azure/reliability/availability-zones-overview\nThis list will be used by Cluster API to try and spread the machines across the failure domains.", "type": "object" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -1378,7 +1480,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -1386,7 +1488,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { diff --git a/infrastructure.cluster.x-k8s.io/azureclusteridentity_v1beta1.json b/infrastructure.cluster.x-k8s.io/azureclusteridentity_v1beta1.json index 1f0b2dd7..917717d7 100644 --- a/infrastructure.cluster.x-k8s.io/azureclusteridentity_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azureclusteridentity_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureClusterIdentity is the Schema for the azureclustersidentities API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -16,7 +16,7 @@ "description": "AzureClusterIdentitySpec defines the parameters that are used to create an AzureIdentity.", "properties": { "allowedNamespaces": { - "description": "AllowedNamespaces is used to identify the namespaces the clusters are allowed to use the identity from. Namespaces can be selected either using an array of namespaces or with label selector. An empty allowedNamespaces object indicates that AzureClusters can use this identity from any namespace. If this object is nil, no namespaces will be allowed (default behaviour, if this field is not provided) A namespace should be either in the NamespaceList or match with Selector to use the identity.", + "description": "AllowedNamespaces is used to identify the namespaces the clusters are allowed to use the identity from.\nNamespaces can be selected either using an array of namespaces or with label selector.\nAn empty allowedNamespaces object indicates that AzureClusters can use this identity from any namespace.\nIf this object is nil, no namespaces will be allowed (default behaviour, if this field is not provided)\nA namespace should be either in the NamespaceList or match with Selector to use the identity.", "nullable": true, "properties": { "list": { @@ -28,23 +28,23 @@ "type": "array" }, "selector": { - "description": "Selector is a selector of namespaces that AzureCluster can use this Identity from. This is a standard Kubernetes LabelSelector, a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. \n A nil or empty selector indicates that AzureCluster cannot use this AzureClusterIdentity from any namespace.", + "description": "Selector is a selector of namespaces that AzureCluster can\nuse this Identity from. This is a standard Kubernetes LabelSelector,\na label query over a set of resources. The result of matchLabels and\nmatchExpressions are ANDed.\n\n\nA nil or empty selector indicates that AzureCluster cannot use this\nAzureClusterIdentity from any namespace.", "properties": { "matchExpressions": { "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.", "items": { - "description": "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.", + "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.", "properties": { "key": { "description": "key is the label key that the selector applies to.", "type": "string" }, "operator": { - "description": "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.", + "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.", "type": "string" }, "values": { - "description": "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.", + "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.", "items": { "type": "string" }, @@ -64,7 +64,7 @@ "additionalProperties": { "type": "string" }, - "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", + "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.", "type": "object" } }, @@ -77,7 +77,7 @@ "additionalProperties": false }, "clientID": { - "description": "ClientID is the service principal client ID. Both User Assigned MSI and SP can use this field.", + "description": "ClientID is the service principal client ID.\nBoth User Assigned MSI and SP can use this field.", "type": "string" }, "clientSecret": { @@ -97,7 +97,7 @@ "additionalProperties": false }, "resourceID": { - "description": "ResourceID is the Azure resource ID for the User Assigned MSI resource. Only applicable when type is UserAssignedMSI.", + "description": "ResourceID is the Azure resource ID for the User Assigned MSI resource.\nOnly applicable when type is UserAssignedMSI.\n\n\nDeprecated: This field no longer has any effect.", "type": "string" }, "tenantID": { @@ -105,12 +105,13 @@ "type": "string" }, "type": { - "description": "Type is the type of Azure Identity used. ServicePrincipal, ServicePrincipalCertificate, UserAssignedMSI or ManualServicePrincipal.", + "description": "Type is the type of Azure Identity used.\nServicePrincipal, ServicePrincipalCertificate, UserAssignedMSI, ManualServicePrincipal or WorkloadIdentity.", "enum": [ "ServicePrincipal", "UserAssignedMSI", "ManualServicePrincipal", - "ServicePrincipalCertificate" + "ServicePrincipalCertificate", + "WorkloadIdentity" ], "type": "string" } @@ -132,20 +133,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -153,7 +154,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, diff --git a/infrastructure.cluster.x-k8s.io/azureclustertemplate_v1beta1.json b/infrastructure.cluster.x-k8s.io/azureclustertemplate_v1beta1.json index 5d262ea5..b6fc05d0 100644 --- a/infrastructure.cluster.x-k8s.io/azureclustertemplate_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azureclustertemplate_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureClusterTemplate is the Schema for the azureclustertemplates API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -25,11 +25,11 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the ones added by default.", + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the\nones added by default.", "type": "object" }, "azureEnvironment": { - "description": "AzureEnvironment is the name of the AzureCloud to be used. The default value that would be used by most users is \"AzurePublicCloud\", other values are: - ChinaCloud: \"AzureChinaCloud\" - GermanCloud: \"AzureGermanCloud\" - PublicCloud: \"AzurePublicCloud\" - USGovernmentCloud: \"AzureUSGovernmentCloud\"", + "description": "AzureEnvironment is the name of the AzureCloud to be used.\nThe default value that would be used by most users is \"AzurePublicCloud\", other values are:\n- ChinaCloud: \"AzureChinaCloud\"\n- GermanCloud: \"AzureGermanCloud\"\n- PublicCloud: \"AzurePublicCloud\"\n- USGovernmentCloud: \"AzureUSGovernmentCloud\"\n\n\nNote that values other than the default must also be accompanied by corresponding changes to the\naso-controller-settings Secret to configure ASO to refer to the non-Public cloud. ASO currently does\nnot support referring to multiple different clouds in a single installation. The following fields must\nbe defined in the Secret:\n- AZURE_AUTHORITY_HOST\n- AZURE_RESOURCE_MANAGER_ENDPOINT\n- AZURE_RESOURCE_MANAGER_AUDIENCE\n\n\nSee the [ASO docs] for more details.\n\n\n[ASO docs]: https://azure.github.io/azure-service-operator/guide/aso-controller-settings-options/", "type": "string" }, "bastionSpec": { @@ -86,7 +86,7 @@ "type": "string" }, "manualApproval": { - "description": "ManualApproval specifies if the connection approval needs to be done manually or not. Set it true when the network admin does not have access to approve connections to the remote resource. Defaults to false.", + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", "type": "boolean" }, "name": { @@ -94,7 +94,7 @@ "type": "string" }, "privateIPAddresses": { - "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint. They have to be part of the subnet where the private endpoint is linked.", + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", "items": { "type": "string" }, @@ -149,7 +149,8 @@ "enum": [ "node", "control-plane", - "bastion" + "bastion", + "all" ], "type": "string" }, @@ -161,6 +162,15 @@ "items": { "description": "SecurityRule defines an Azure security rule for security groups.", "properties": { + "action": { + "default": "Allow", + "description": "Action specifies whether network traffic is allowed or denied. Can either be \"Allow\" or \"Deny\". Defaults to \"Allow\".", + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, "description": { "description": "A description for this rule. Restricted to 140 chars.", "type": "string" @@ -207,6 +217,13 @@ "sourcePorts": { "description": "SourcePorts specifies source port or range. Integer or range between 0 and 65535. Asterix '*' can also be used to match all ports.", "type": "string" + }, + "sources": { + "description": "Sources specifies The CIDR or source IP ranges.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ @@ -280,7 +297,7 @@ "additionalProperties": false }, "cloudProviderConfigOverrides": { - "description": "CloudProviderConfigOverrides is an optional set of configuration values that can be overridden in azure cloud provider config. This is only a subset of options that are available in azure cloud provider config. Some values for the cloud provider config are inferred from other parts of cluster api provider azure spec, and may not be available for overrides. See: https://kubernetes-sigs.github.io/cloud-provider-azure/install/configs Note: All cloud provider config values can be customized by creating the secret beforehand. CloudProviderConfigOverrides is only used when the secret is managed by the Azure Provider.", + "description": "CloudProviderConfigOverrides is an optional set of configuration values that can be overridden in azure cloud provider config.\nThis is only a subset of options that are available in azure cloud provider config.\nSome values for the cloud provider config are inferred from other parts of cluster api provider azure spec, and may not be available for overrides.\nSee: https://cloud-provider-azure.sigs.k8s.io/install/configs\nNote: All cloud provider config values can be customized by creating the secret beforehand. CloudProviderConfigOverrides is only used when the secret is managed by the Azure Provider.", "properties": { "backOffs": { "description": "BackOffConfig indicates the back-off config options.", @@ -324,7 +341,7 @@ }, "rateLimits": { "items": { - "description": "RateLimitSpec represents the rate limit configuration for a particular kind of resource. Eg. loadBalancerRateLimit is used to configure rate limits for load balancers. This eventually gets converted to CloudProviderRateLimitConfig that cloud-provider-azure expects. See: https://github.com/kubernetes-sigs/cloud-provider-azure/blob/d585c2031925b39c925624302f22f8856e29e352/pkg/provider/azure_ratelimit.go#L25 We cannot use CloudProviderRateLimitConfig directly because floating point values are not supported in controller-tools. See: https://github.com/kubernetes-sigs/controller-tools/issues/245", + "description": "RateLimitSpec represents the rate limit configuration for a particular kind of resource.\nEg. loadBalancerRateLimit is used to configure rate limits for load balancers.\nThis eventually gets converted to CloudProviderRateLimitConfig that cloud-provider-azure expects.\nSee: https://github.com/kubernetes-sigs/cloud-provider-azure/blob/d585c2031925b39c925624302f22f8856e29e352/pkg/provider/azure_ratelimit.go#L25\nWe cannot use CloudProviderRateLimitConfig directly because floating point values are not supported in controller-tools.\nSee: https://github.com/kubernetes-sigs/controller-tools/issues/245", "properties": { "config": { "description": "RateLimitConfig indicates the rate limit config options.", @@ -422,6 +439,28 @@ "type": "object", "additionalProperties": false }, + "failureDomains": { + "additionalProperties": { + "description": "FailureDomainSpec is the Schema for Cluster API failure domains.\nIt allows controllers to understand how many failure domains a cluster can optionally span across.", + "properties": { + "attributes": { + "additionalProperties": { + "type": "string" + }, + "description": "Attributes is a free form map of attributes an infrastructure provider might use or require.", + "type": "object" + }, + "controlPlane": { + "description": "ControlPlane determines if this failure domain is suitable for use by control plane machines.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "description": "FailureDomains is a list of failure domains in the cluster's region, used to restrict\neligibility to host the control plane. A FailureDomain maps to an availability zone,\nwhich is a separated group of datacenters within a region.\nSee: https://learn.microsoft.com/azure/reliability/availability-zones-overview", + "type": "object" + }, "identityRef": { "description": "IdentityRef is a reference to an AzureIdentity to be used when reconciling this cluster", "properties": { @@ -430,27 +469,27 @@ "type": "string" }, "fieldPath": { - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", + "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.", "type": "string" }, "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { - "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { - "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, @@ -485,7 +524,7 @@ "additionalProperties": false }, "controlPlaneOutboundLB": { - "description": "ControlPlaneOutboundLB is the configuration for the control-plane outbound load balancer. This is different from APIServerLB, and is used only in private clusters (optionally) for enabling outbound traffic.", + "description": "ControlPlaneOutboundLB is the configuration for the control-plane outbound load balancer.\nThis is different from APIServerLB, and is used only in private clusters (optionally) for enabling outbound traffic.", "properties": { "idleTimeoutInMinutes": { "description": "IdleTimeoutInMinutes specifies the timeout for the TCP idle connection.", @@ -578,7 +617,7 @@ "type": "string" }, "manualApproval": { - "description": "ManualApproval specifies if the connection approval needs to be done manually or not. Set it true when the network admin does not have access to approve connections to the remote resource. Defaults to false.", + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", "type": "boolean" }, "name": { @@ -586,7 +625,7 @@ "type": "string" }, "privateIPAddresses": { - "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint. They have to be part of the subnet where the private endpoint is linked.", + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", "items": { "type": "string" }, @@ -641,7 +680,8 @@ "enum": [ "node", "control-plane", - "bastion" + "bastion", + "all" ], "type": "string" }, @@ -653,6 +693,15 @@ "items": { "description": "SecurityRule defines an Azure security rule for security groups.", "properties": { + "action": { + "default": "Allow", + "description": "Action specifies whether network traffic is allowed or denied. Can either be \"Allow\" or \"Deny\". Defaults to \"Allow\".", + "enum": [ + "Allow", + "Deny" + ], + "type": "string" + }, "description": { "description": "A description for this rule. Restricted to 140 chars.", "type": "string" @@ -699,6 +748,13 @@ "sourcePorts": { "description": "SourcePorts specifies source port or range. Integer or range between 0 and 65535. Asterix '*' can also be used to match all ports.", "type": "string" + }, + "sources": { + "description": "Sources specifies The CIDR or source IP ranges.", + "items": { + "type": "string" + }, + "type": "array" } }, "required": [ @@ -784,6 +840,29 @@ "items": { "description": "VnetPeeringClassSpec specifies a virtual network peering class.", "properties": { + "forwardPeeringProperties": { + "description": "ForwardPeeringProperties specifies VnetPeeringProperties for peering from the cluster's virtual network to the\nremote virtual network.", + "properties": { + "allowForwardedTraffic": { + "description": "AllowForwardedTraffic specifies whether the forwarded traffic from the VMs in the local virtual network will be\nallowed/disallowed in remote virtual network.", + "type": "boolean" + }, + "allowGatewayTransit": { + "description": "AllowGatewayTransit specifies if gateway links can be used in remote virtual networking to link to this virtual\nnetwork.", + "type": "boolean" + }, + "allowVirtualNetworkAccess": { + "description": "AllowVirtualNetworkAccess specifies whether the VMs in the local virtual network space would be able to access\nthe VMs in remote virtual network space.", + "type": "boolean" + }, + "useRemoteGateways": { + "description": "UseRemoteGateways specifies if remote gateways can be used on this virtual network.\nIf the flag is set to true, and allowGatewayTransit on remote peering is also set to true, the virtual network\nwill use the gateways of the remote virtual network for transit. Only one peering can have this flag set to true.\nThis flag cannot be set if virtual network already has a gateway.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, "remoteVnetName": { "description": "RemoteVnetName defines name of the remote virtual network.", "type": "string" @@ -791,6 +870,29 @@ "resourceGroup": { "description": "ResourceGroup is the resource group name of the remote virtual network.", "type": "string" + }, + "reversePeeringProperties": { + "description": "ReversePeeringProperties specifies VnetPeeringProperties for peering from the remote virtual network to the\ncluster's virtual network.", + "properties": { + "allowForwardedTraffic": { + "description": "AllowForwardedTraffic specifies whether the forwarded traffic from the VMs in the local virtual network will be\nallowed/disallowed in remote virtual network.", + "type": "boolean" + }, + "allowGatewayTransit": { + "description": "AllowGatewayTransit specifies if gateway links can be used in remote virtual networking to link to this virtual\nnetwork.", + "type": "boolean" + }, + "allowVirtualNetworkAccess": { + "description": "AllowVirtualNetworkAccess specifies whether the VMs in the local virtual network space would be able to access\nthe VMs in remote virtual network space.", + "type": "boolean" + }, + "useRemoteGateways": { + "description": "UseRemoteGateways specifies if remote gateways can be used on this virtual network.\nIf the flag is set to true, and allowGatewayTransit on remote peering is also set to true, the virtual network\nwill use the gateways of the remote virtual network for transit. Only one peering can have this flag set to true.\nThis flag cannot be set if virtual network already has a gateway.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false } }, "required": [ diff --git a/infrastructure.cluster.x-k8s.io/azuremachine_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremachine_v1beta1.json index 6eadec39..bf6b8ffa 100644 --- a/infrastructure.cluster.x-k8s.io/azuremachine_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremachine_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureMachine is the Schema for the azuremachines API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -23,7 +23,7 @@ "description": "AdditionalCapabilities specifies additional capabilities enabled or disabled on the virtual machine.", "properties": { "ultraSSDEnabled": { - "description": "UltraSSDEnabled enables or disables Azure UltraSSD capability for the virtual machine. Defaults to true if Ultra SSD data disks are specified, otherwise it doesn't set the capability on the VM.", + "description": "UltraSSDEnabled enables or disables Azure UltraSSD capability for the virtual machine.\nDefaults to true if Ultra SSD data disks are specified,\notherwise it doesn't set the capability on the VM.", "type": "boolean" } }, @@ -34,13 +34,17 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the Azure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the AzureMachine's value takes precedence.", + "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the\nAzure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the\nAzureMachine's value takes precedence.", "type": "object" }, "allocatePublicIP": { "description": "AllocatePublicIP allows the ability to create dynamic public ips for machines where this value is true.", "type": "boolean" }, + "capacityReservationGroupID": { + "description": "CapacityReservationGroupID specifies the capacity reservation group resource id that should be\nused for allocating the virtual machine.\nThe field size should be greater than 0 and the field input must start with '/'.\nThe input for capacityReservationGroupID must be similar to '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}'.\nThe keys which are used should be among 'subscriptions', 'providers' and 'resourcegroups' followed by valid ID or names respectively.\nIt is optional but may not be changed once set.", + "type": "string" + }, "dataDisks": { "description": "DataDisk specifies the parameters that are used to add one or more data disks to the machine", "items": { @@ -61,7 +65,7 @@ "type": "integer" }, "lun": { - "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. The value must be between 0 and 63.", + "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.\nThe value must be between 0 and 63.", "format": "int32", "type": "integer" }, @@ -69,7 +73,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the data disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -79,6 +83,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -87,7 +117,7 @@ "additionalProperties": false }, "nameSuffix": { - "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name. Each disk name will be in format _.", + "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name.\nEach disk name will be in format _.", "type": "string" } }, @@ -101,13 +131,13 @@ "type": "array" }, "diagnostics": { - "description": "Diagnostics specifies the diagnostics settings for a virtual machine. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Diagnostics specifies the diagnostics settings for a virtual machine.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "boot": { - "description": "Boot configures the boot diagnostics settings for the virtual machine. This allows to configure capturing serial output from the virtual machine on boot. This is useful for debugging software based launch issues. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Boot configures the boot diagnostics settings for the virtual machine.\nThis allows to configure capturing serial output from the virtual machine on boot.\nThis is useful for debugging software based launch issues.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "storageAccountType": { - "description": "StorageAccountType determines if the storage account for storing the diagnostics data should be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", + "description": "StorageAccountType determines if the storage account for storing the diagnostics data\nshould be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", "enum": [ "Managed", "UserManaged", @@ -119,7 +149,7 @@ "description": "UserManaged provides a reference to the user-managed storage account.", "properties": { "storageAccountURI": { - "description": "StorageAccountURI is the URI of the user-managed storage account. The URI typically will be `https://.blob.core.windows.net/` but may differ if you are using Azure DNS zone endpoints. You can find the correct endpoint by looking for the Blob Primary Endpoint in the endpoints tab in the Azure console or with the CLI by issuing `az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", + "description": "StorageAccountURI is the URI of the user-managed storage account.\nThe URI typically will be `https://.blob.core.windows.net/`\nbut may differ if you are using Azure DNS zone endpoints.\nYou can find the correct endpoint by looking for the Blob Primary Endpoint in the\nendpoints tab in the Azure console or with the CLI by issuing\n`az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", "maxLength": 1024, "pattern": "^https://", "type": "string" @@ -142,6 +172,10 @@ "type": "object", "additionalProperties": false }, + "disableExtensionOperations": { + "description": "DisableExtensionOperations specifies whether extension operations should be disabled on the virtual machine.\nUse this setting only if VMExtensions are not supported by your image, as it disables CAPZ bootstrapping extension used for detecting Kubernetes bootstrap failure.\nThis may only be set to True when no extensions are configured on the virtual machine.", + "type": "boolean" + }, "dnsServers": { "description": "DNSServers adds a list of DNS Server IP addresses to the VM NICs.", "items": { @@ -150,16 +184,16 @@ "type": "array" }, "enableIPForwarding": { - "description": "EnableIPForwarding enables IP Forwarding in Azure which is required for some CNI's to send traffic from a pods on one machine to another. This is required for IpV6 with Calico in combination with User Defined Routes (set by the Azure Cloud Controller manager). Default is false for disabled.", + "description": "EnableIPForwarding enables IP Forwarding in Azure which is required for some CNI's to send traffic from a pods on one machine\nto another. This is required for IpV6 with Calico in combination with User Defined Routes (set by the Azure Cloud Controller\nmanager). Default is false for disabled.", "type": "boolean" }, "failureDomain": { - "description": "FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. This relates to an Azure Availability Zone", + "description": "FailureDomain is the failure domain unique identifier this Machine should be attached to,\nas defined in Cluster API. This relates to an Azure Availability Zone", "type": "string" }, "identity": { "default": "None", - "description": "Identity is the type of identity used for the virtual machine. The type 'SystemAssigned' is an implicitly created identity. The generated identity will be assigned a Subscription contributor role. The type 'UserAssigned' is a standalone Azure resource provided by the user and assigned to the VM", + "description": "Identity is the type of identity used for the virtual machine.\nThe type 'SystemAssigned' is an implicitly created identity.\nThe generated identity will be assigned a Subscription contributor role.\nThe type 'UserAssigned' is a standalone Azure resource provided by the user\nand assigned to the VM", "enum": [ "None", "SystemAssigned", @@ -168,7 +202,7 @@ "type": "string" }, "image": { - "description": "Image is used to provide details of an image to use during VM creation. If image details are omitted the image will default the Azure Marketplace \"capi\" offer, which is based on Ubuntu.", + "description": "Image is used to provide details of an image to use during VM creation.\nIf image details are omitted the image will default the Azure Marketplace \"capi\" offer,\nwhich is based on Ubuntu.", "properties": { "computeGallery": { "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery", @@ -187,7 +221,7 @@ "description": "Plan contains plan information.", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -197,7 +231,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" } @@ -219,7 +253,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -240,7 +274,7 @@ "description": "Marketplace specifies an image to use from the Azure Marketplace", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -250,17 +284,17 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" }, "thirdPartyImage": { "default": false, - "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan will be generated for it.", + "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.", "type": "boolean" }, "version": { - "description": "Version specifies the version of an image sku. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -275,7 +309,7 @@ "additionalProperties": false }, "sharedGallery": { - "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery Deprecated: use ComputeGallery instead.", + "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.", "properties": { "gallery": { "description": "Gallery specifies the name of the shared image gallery that contains the image", @@ -288,11 +322,11 @@ "type": "string" }, "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "publisher": { - "description": "Publisher is the name of the organization that created the image. This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "resourceGroup": { @@ -301,7 +335,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "subscriptionID": { @@ -310,7 +344,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -330,16 +364,16 @@ "additionalProperties": false }, "networkInterfaces": { - "description": "NetworkInterfaces specifies a list of network interface configurations. If left unspecified, the VM will get a single network interface with a single IPConfig in the subnet specified in the cluster's node subnet field. The primary interface will be the first networkInterface specified (index 0) in the list.", + "description": "NetworkInterfaces specifies a list of network interface configurations.\nIf left unspecified, the VM will get a single network interface with a\nsingle IPConfig in the subnet specified in the cluster's node subnet field.\nThe primary interface will be the first networkInterface specified (index 0) in the list.", "items": { "description": "NetworkInterface defines a network interface.", "properties": { "acceleratedNetworking": { - "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on whether the requested VMSize supports accelerated networking. If AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", + "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on\nwhether the requested VMSize supports accelerated networking.\nIf AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", "type": "boolean" }, "privateIPConfigs": { - "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface. Defaults to 1 if not specified.", + "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface.\nDefaults to 1 if not specified.", "type": "integer" }, "subnetName": { @@ -368,11 +402,20 @@ "description": "DiffDiskSettings describe ephemeral disk settings for the os disk.", "properties": { "option": { - "description": "Option enables ephemeral OS when set to \"Local\" See https://docs.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks for full details", + "description": "Option enables ephemeral OS when set to \"Local\"\nSee https://learn.microsoft.com/azure/virtual-machines/ephemeral-os-disks for full details", "enum": [ "Local" ], "type": "string" + }, + "placement": { + "description": "Placement specifies the ephemeral disk placement for operating system disk. If placement is specified, Option must be set to \"Local\".", + "enum": [ + "CacheDisk", + "NvmeDisk", + "ResourceDisk" + ], + "type": "string" } }, "required": [ @@ -382,7 +425,7 @@ "additionalProperties": false }, "diskSizeGB": { - "description": "DiskSizeGB is the size in GB to assign to the OS disk. Will have a default of 30GB if not provided", + "description": "DiskSizeGB is the size in GB to assign to the OS disk.\nWill have a default of 30GB if not provided", "format": "int32", "type": "integer" }, @@ -390,7 +433,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the OS disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -400,6 +443,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -429,8 +498,31 @@ "description": "SecurityProfile specifies the Security profile settings for a virtual machine.", "properties": { "encryptionAtHost": { - "description": "This field indicates whether Host Encryption should be enabled or disabled for a virtual machine or virtual machine scale set. Default is disabled.", + "description": "This field indicates whether Host Encryption should be enabled\nor disabled for a virtual machine or virtual machine scale set.\nThis should be disabled when SecurityEncryptionType is set to DiskWithVMGuestState.\nDefault is disabled.", "type": "boolean" + }, + "securityType": { + "description": "SecurityType specifies the SecurityType of the virtual machine. It has to be set to any specified value to\nenable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.", + "enum": [ + "ConfidentialVM", + "TrustedLaunch" + ], + "type": "string" + }, + "uefiSettings": { + "description": "UefiSettings specifies the security settings like secure boot and vTPM used while creating the virtual machine.", + "properties": { + "secureBootEnabled": { + "description": "SecureBootEnabled specifies whether secure boot should be enabled on the virtual machine.\nSecure Boot verifies the digital signature of all boot components and halts the boot process if signature verification fails.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + }, + "vTpmEnabled": { + "description": "VTpmEnabled specifies whether vTPM should be enabled on the virtual machine.\nWhen true it enables the virtualized trusted platform module measurements to create a known good boot integrity policy baseline.\nThe integrity policy baseline is used for comparison with measurements from subsequent VM boots to determine if anything has changed.\nThis is required to be set to Enabled if SecurityEncryptionType is defined.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false } }, "type": "object", @@ -465,7 +557,7 @@ "additionalProperties": false }, "sshPublicKey": { - "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only. Refer to documentation on how to set up SSH access on Windows instances.", + "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only.\nRefer to documentation on how to set up SSH access on Windows instances.", "type": "string" }, "subnetName": { @@ -476,15 +568,15 @@ "description": "SystemAssignedIdentityRole defines the role and scope to assign to the system-assigned identity.", "properties": { "definitionID": { - "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role. Refer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", + "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role.\nRefer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", "type": "string" }, "name": { - "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID. If not specified, a random UUID will be generated.", + "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID.\nIf not specified, a random UUID will be generated.", "type": "string" }, "scope": { - "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance. If not specified, the scope will be the subscription.", + "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance.\nIf not specified, the scope will be the subscription.", "type": "string" } }, @@ -492,12 +584,12 @@ "additionalProperties": false }, "userAssignedIdentities": { - "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user The lifecycle of a user-assigned identity is managed separately from the lifecycle of the AzureMachine. See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", + "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user\nThe lifecycle of a user-assigned identity is managed separately from the lifecycle of\nthe AzureMachine.\nSee https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", "items": { - "description": "UserAssignedIdentity defines the user-assigned identities provided by the user to be assigned to Azure resources.", + "description": "UserAssignedIdentity defines the user-assigned identities provided\nby the user to be assigned to Azure resources.", "properties": { "providerID": { - "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is: 'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", + "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is:\n'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", "type": "string" } }, @@ -594,20 +686,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -615,7 +707,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -630,15 +722,15 @@ "type": "array" }, "failureMessage": { - "description": "ErrorMessage will be set in the event that there is a terminal problem reconciling the Machine and will contain a more verbose string suitable for logging and human consumption. \n This field should not be set for transitive errors that a controller faces that are expected to be fixed automatically over time (like service outages), but instead indicate that something is fundamentally wrong with the Machine's spec or the configuration of the controller, and that manual intervention is required. Examples of terminal errors would be invalid combinations of settings in the spec, values that are unsupported by the controller, or the responsible controller itself being critically misconfigured. \n Any transient errors that occur during the reconciliation of Machines can be added as events to the Machine object and/or logged in the controller's output.", + "description": "ErrorMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.", "type": "string" }, "failureReason": { - "description": "ErrorReason will be set in the event that there is a terminal problem reconciling the Machine and will contain a succinct value suitable for machine interpretation. \n This field should not be set for transitive errors that a controller faces that are expected to be fixed automatically over time (like service outages), but instead indicate that something is fundamentally wrong with the Machine's spec or the configuration of the controller, and that manual intervention is required. Examples of terminal errors would be invalid combinations of settings in the spec, values that are unsupported by the controller, or the responsible controller itself being critically misconfigured. \n Any transient errors that occur during the reconciliation of Machines can be added as events to the Machine object and/or logged in the controller's output.", + "description": "ErrorReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.", "type": "string" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -647,7 +739,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -655,7 +747,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { diff --git a/infrastructure.cluster.x-k8s.io/azuremachinepool_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremachinepool_v1beta1.json index 2cfe1a56..aaec2cbb 100644 --- a/infrastructure.cluster.x-k8s.io/azuremachinepool_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremachinepool_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureMachinePool is the Schema for the azuremachinepools API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -19,12 +19,12 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the Azure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the AzureMachine's value takes precedence.", + "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the\nAzure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the\nAzureMachine's value takes precedence.", "type": "object" }, "identity": { "default": "None", - "description": "Identity is the type of identity used for the Virtual Machine Scale Set. The type 'SystemAssigned' is an implicitly created identity. The generated identity will be assigned a Subscription contributor role. The type 'UserAssigned' is a standalone Azure resource provided by the user and assigned to the VM", + "description": "Identity is the type of identity used for the Virtual Machine Scale Set.\nThe type 'SystemAssigned' is an implicitly created identity.\nThe generated identity will be assigned a Subscription contributor role.\nThe type 'UserAssigned' is a standalone Azure resource provided by the user\nand assigned to the VM", "enum": [ "None", "SystemAssigned", @@ -36,10 +36,6 @@ "description": "Location is the Azure region location e.g. westus2", "type": "string" }, - "nodeDrainTimeout": { - "description": "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. The default value is 0, meaning that the node can be drained without any time limitations. NOTE: NodeDrainTimeout is different from `kubectl drain --timeout`", - "type": "string" - }, "orchestrationMode": { "default": "Uniform", "description": "OrchestrationMode specifies the orchestration mode for the Virtual Machine Scale Set", @@ -49,12 +45,17 @@ ], "type": "string" }, + "platformFaultDomainCount": { + "description": "PlatformFaultDomainCount specifies the number of fault domains that the Virtual Machine Scale Set can use.\nThe count determines the spreading algorithm of the Azure fault domain.", + "format": "int32", + "type": "integer" + }, "providerID": { "description": "ProviderID is the identification ID of the Virtual Machine Scale Set", "type": "string" }, "providerIDList": { - "description": "ProviderIDList are the identification IDs of machine instances provided by the provider. This field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances.", + "description": "ProviderIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances.", "items": { "type": "string" }, @@ -76,11 +77,11 @@ "description": "The deployment strategy to use to replace existing AzureMachinePoolMachines with new ones.", "properties": { "rollingUpdate": { - "description": "Rolling update config params. Present only if MachineDeploymentStrategyType = RollingUpdate.", + "description": "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate.", "properties": { "deletePolicy": { "default": "Oldest", - "description": "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. Valid values are \"Random, \"Newest\", \"Oldest\" When no value is supplied, the default is Oldest", + "description": "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default is Oldest", "enum": [ "Random", "Newest", @@ -98,7 +99,7 @@ } ], "default": 1, - "description": "The maximum number of machines that can be scheduled above the desired number of machines. Value can be an absolute number (ex: 5) or a percentage of desired machines (ex: 10%). This can not be 0 if MaxUnavailable is 0. Absolute number is calculated from percentage by rounding up. Defaults to 1. Example: when this is set to 30%, the new MachineSet can be scaled up immediately when the rolling update starts, such that the total number of old and new machines do not exceed 130% of desired machines. Once old machines have been killed, new MachineSet can be scaled up further, ensuring that total number of machines running at any time during the update is at most 130% of desired machines.", + "description": "The maximum number of machines that can be scheduled above the\ndesired number of machines.\nValue can be an absolute number (ex: 5) or a percentage of\ndesired machines (ex: 10%).\nThis can not be 0 if MaxUnavailable is 0.\nAbsolute number is calculated from percentage by rounding up.\nDefaults to 1.\nExample: when this is set to 30%, the new MachineSet can be scaled\nup immediately when the rolling update starts, such that the total\nnumber of old and new machines do not exceed 130% of desired\nmachines. Once old machines have been killed, new MachineSet can\nbe scaled up further, ensuring that total number of machines running\nat any time during the update is at most 130% of desired machines.", "x-kubernetes-int-or-string": true }, "maxUnavailable": { @@ -111,7 +112,7 @@ } ], "default": 0, - "description": "The maximum number of machines that can be unavailable during the update. Value can be an absolute number (ex: 5) or a percentage of desired machines (ex: 10%). Absolute number is calculated from percentage by rounding down. This can not be 0 if MaxSurge is 0. Defaults to 0. Example: when this is set to 30%, the old MachineSet can be scaled down to 70% of desired machines immediately when the rolling update starts. Once new machines are ready, old MachineSet can be scaled down further, followed by scaling up the new MachineSet, ensuring that the total number of machines available at all times during the update is at least 70% of desired machines.", + "description": "The maximum number of machines that can be unavailable during the update.\nValue can be an absolute number (ex: 5) or a percentage of desired\nmachines (ex: 10%).\nAbsolute number is calculated from percentage by rounding down.\nThis can not be 0 if MaxSurge is 0.\nDefaults to 0.\nExample: when this is set to 30%, the old MachineSet can be scaled\ndown to 70% of desired machines immediately when the rolling update\nstarts. Once new machines are ready, old MachineSet can be scaled\ndown further, followed by scaling up the new MachineSet, ensuring\nthat the total number of machines available at all times\nduring the update is at least 70% of desired machines.", "x-kubernetes-int-or-string": true } }, @@ -134,15 +135,15 @@ "description": "SystemAssignedIdentityRole defines the role and scope to assign to the system assigned identity.", "properties": { "definitionID": { - "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role. Refer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", + "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role.\nRefer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", "type": "string" }, "name": { - "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID. If not specified, a random UUID will be generated.", + "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID.\nIf not specified, a random UUID will be generated.", "type": "string" }, "scope": { - "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance. If not specified, the scope will be the subscription.", + "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance.\nIf not specified, the scope will be the subscription.", "type": "string" } }, @@ -176,7 +177,7 @@ "type": "integer" }, "lun": { - "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. The value must be between 0 and 63.", + "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.\nThe value must be between 0 and 63.", "format": "int32", "type": "integer" }, @@ -184,7 +185,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the data disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -194,6 +195,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -202,7 +229,7 @@ "additionalProperties": false }, "nameSuffix": { - "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name. Each disk name will be in format _.", + "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name.\nEach disk name will be in format _.", "type": "string" } }, @@ -216,13 +243,13 @@ "type": "array" }, "diagnostics": { - "description": "Diagnostics specifies the diagnostics settings for a virtual machine. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Diagnostics specifies the diagnostics settings for a virtual machine.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "boot": { - "description": "Boot configures the boot diagnostics settings for the virtual machine. This allows to configure capturing serial output from the virtual machine on boot. This is useful for debugging software based launch issues. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Boot configures the boot diagnostics settings for the virtual machine.\nThis allows to configure capturing serial output from the virtual machine on boot.\nThis is useful for debugging software based launch issues.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "storageAccountType": { - "description": "StorageAccountType determines if the storage account for storing the diagnostics data should be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", + "description": "StorageAccountType determines if the storage account for storing the diagnostics data\nshould be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", "enum": [ "Managed", "UserManaged", @@ -234,7 +261,7 @@ "description": "UserManaged provides a reference to the user-managed storage account.", "properties": { "storageAccountURI": { - "description": "StorageAccountURI is the URI of the user-managed storage account. The URI typically will be `https://.blob.core.windows.net/` but may differ if you are using Azure DNS zone endpoints. You can find the correct endpoint by looking for the Blob Primary Endpoint in the endpoints tab in the Azure console or with the CLI by issuing `az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", + "description": "StorageAccountURI is the URI of the user-managed storage account.\nThe URI typically will be `https://.blob.core.windows.net/`\nbut may differ if you are using Azure DNS zone endpoints.\nYou can find the correct endpoint by looking for the Blob Primary Endpoint in the\nendpoints tab in the Azure console or with the CLI by issuing\n`az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", "maxLength": 1024, "pattern": "^https://", "type": "string" @@ -258,7 +285,7 @@ "additionalProperties": false }, "image": { - "description": "Image is used to provide details of an image to use during VM creation. If image details are omitted the image will default the Azure Marketplace \"capi\" offer, which is based on Ubuntu.", + "description": "Image is used to provide details of an image to use during VM creation.\nIf image details are omitted the image will default the Azure Marketplace \"capi\" offer,\nwhich is based on Ubuntu.", "properties": { "computeGallery": { "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery", @@ -277,7 +304,7 @@ "description": "Plan contains plan information.", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -287,7 +314,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" } @@ -309,7 +336,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -330,7 +357,7 @@ "description": "Marketplace specifies an image to use from the Azure Marketplace", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -340,17 +367,17 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" }, "thirdPartyImage": { "default": false, - "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan will be generated for it.", + "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.", "type": "boolean" }, "version": { - "description": "Version specifies the version of an image sku. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -365,7 +392,7 @@ "additionalProperties": false }, "sharedGallery": { - "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery Deprecated: use ComputeGallery instead.", + "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.", "properties": { "gallery": { "description": "Gallery specifies the name of the shared image gallery that contains the image", @@ -378,11 +405,11 @@ "type": "string" }, "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "publisher": { - "description": "Publisher is the name of the organization that created the image. This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "resourceGroup": { @@ -391,7 +418,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "subscriptionID": { @@ -400,7 +427,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -420,16 +447,16 @@ "additionalProperties": false }, "networkInterfaces": { - "description": "NetworkInterfaces specifies a list of network interface configurations. If left unspecified, the VM will get a single network interface with a single IPConfig in the subnet specified in the cluster's node subnet field. The primary interface will be the first networkInterface specified (index 0) in the list.", + "description": "NetworkInterfaces specifies a list of network interface configurations.\nIf left unspecified, the VM will get a single network interface with a\nsingle IPConfig in the subnet specified in the cluster's node subnet field.\nThe primary interface will be the first networkInterface specified (index 0) in the list.", "items": { "description": "NetworkInterface defines a network interface.", "properties": { "acceleratedNetworking": { - "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on whether the requested VMSize supports accelerated networking. If AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", + "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on\nwhether the requested VMSize supports accelerated networking.\nIf AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", "type": "boolean" }, "privateIPConfigs": { - "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface. Defaults to 1 if not specified.", + "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface.\nDefaults to 1 if not specified.", "type": "integer" }, "subnetName": { @@ -458,11 +485,20 @@ "description": "DiffDiskSettings describe ephemeral disk settings for the os disk.", "properties": { "option": { - "description": "Option enables ephemeral OS when set to \"Local\" See https://docs.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks for full details", + "description": "Option enables ephemeral OS when set to \"Local\"\nSee https://learn.microsoft.com/azure/virtual-machines/ephemeral-os-disks for full details", "enum": [ "Local" ], "type": "string" + }, + "placement": { + "description": "Placement specifies the ephemeral disk placement for operating system disk. If placement is specified, Option must be set to \"Local\".", + "enum": [ + "CacheDisk", + "NvmeDisk", + "ResourceDisk" + ], + "type": "string" } }, "required": [ @@ -472,7 +508,7 @@ "additionalProperties": false }, "diskSizeGB": { - "description": "DiskSizeGB is the size in GB to assign to the OS disk. Will have a default of 30GB if not provided", + "description": "DiskSizeGB is the size in GB to assign to the OS disk.\nWill have a default of 30GB if not provided", "format": "int32", "type": "integer" }, @@ -480,7 +516,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the OS disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -490,6 +526,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -511,8 +573,31 @@ "description": "SecurityProfile specifies the Security profile settings for a virtual machine.", "properties": { "encryptionAtHost": { - "description": "This field indicates whether Host Encryption should be enabled or disabled for a virtual machine or virtual machine scale set. Default is disabled.", + "description": "This field indicates whether Host Encryption should be enabled\nor disabled for a virtual machine or virtual machine scale set.\nThis should be disabled when SecurityEncryptionType is set to DiskWithVMGuestState.\nDefault is disabled.", "type": "boolean" + }, + "securityType": { + "description": "SecurityType specifies the SecurityType of the virtual machine. It has to be set to any specified value to\nenable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.", + "enum": [ + "ConfidentialVM", + "TrustedLaunch" + ], + "type": "string" + }, + "uefiSettings": { + "description": "UefiSettings specifies the security settings like secure boot and vTPM used while creating the virtual machine.", + "properties": { + "secureBootEnabled": { + "description": "SecureBootEnabled specifies whether secure boot should be enabled on the virtual machine.\nSecure Boot verifies the digital signature of all boot components and halts the boot process if signature verification fails.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + }, + "vTpmEnabled": { + "description": "VTpmEnabled specifies whether vTPM should be enabled on the virtual machine.\nWhen true it enables the virtualized trusted platform module measurements to create a known good boot integrity policy baseline.\nThe integrity policy baseline is used for comparison with measurements from subsequent VM boots to determine if anything has changed.\nThis is required to be set to Enabled if SecurityEncryptionType is defined.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false } }, "type": "object", @@ -547,7 +632,7 @@ "additionalProperties": false }, "sshPublicKey": { - "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only. Refer to documentation on how to set up SSH access on Windows instances.", + "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only.\nRefer to documentation on how to set up SSH access on Windows instances.", "type": "string" }, "subnetName": { @@ -555,7 +640,7 @@ "type": "string" }, "terminateNotificationTimeout": { - "description": "TerminateNotificationTimeout enables or disables VMSS scheduled events termination notification with specified timeout allowed values are between 5 and 15 (mins)", + "description": "TerminateNotificationTimeout enables or disables VMSS scheduled events termination notification with specified timeout\nallowed values are between 5 and 15 (mins)", "type": "integer" }, "vmExtensions": { @@ -601,7 +686,7 @@ "type": "array" }, "vmSize": { - "description": "VMSize is the size of the Virtual Machine to build. See https://docs.microsoft.com/en-us/rest/api/compute/virtualmachines/createorupdate#virtualmachinesizetypes", + "description": "VMSize is the size of the Virtual Machine to build.\nSee https://learn.microsoft.com/rest/api/compute/virtualmachines/createorupdate#virtualmachinesizetypes", "type": "string" } }, @@ -613,12 +698,12 @@ "additionalProperties": false }, "userAssignedIdentities": { - "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user The lifecycle of a user-assigned identity is managed separately from the lifecycle of the AzureMachinePool. See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", + "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user\nThe lifecycle of a user-assigned identity is managed separately from the lifecycle of\nthe AzureMachinePool.\nSee https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", "items": { - "description": "UserAssignedIdentity defines the user-assigned identities provided by the user to be assigned to Azure resources.", + "description": "UserAssignedIdentity defines the user-assigned identities provided\nby the user to be assigned to Azure resources.", "properties": { "providerID": { - "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is: 'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", + "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is:\n'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", "type": "string" } }, @@ -629,6 +714,10 @@ "additionalProperties": false }, "type": "array" + }, + "zoneBalance": { + "description": "ZoneBalane dictates whether to force strictly even Virtual Machine distribution cross x-zones in case there is zone outage.", + "type": "boolean" } }, "required": [ @@ -647,20 +736,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -668,7 +757,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -683,15 +772,15 @@ "type": "array" }, "failureMessage": { - "description": "FailureMessage will be set in the event that there is a terminal problem reconciling the MachinePool and will contain a more verbose string suitable for logging and human consumption. \n This field should not be set for transitive errors that a controller faces that are expected to be fixed automatically over time (like service outages), but instead indicate that something is fundamentally wrong with the MachinePool's spec or the configuration of the controller, and that manual intervention is required. Examples of terminal errors would be invalid combinations of settings in the spec, values that are unsupported by the controller, or the responsible controller itself being critically misconfigured. \n Any transient errors that occur during the reconciliation of MachinePools can be added as events to the MachinePool object and/or logged in the controller's output.", + "description": "FailureMessage will be set in the event that there is a terminal problem\nreconciling the MachinePool and will contain a more verbose string suitable\nfor logging and human consumption.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the MachinePool's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.", "type": "string" }, "failureReason": { - "description": "FailureReason will be set in the event that there is a terminal problem reconciling the MachinePool and will contain a succinct value suitable for machine interpretation. \n This field should not be set for transitive errors that a controller faces that are expected to be fixed automatically over time (like service outages), but instead indicate that something is fundamentally wrong with the MachinePool's spec or the configuration of the controller, and that manual intervention is required. Examples of terminal errors would be invalid combinations of settings in the spec, values that are unsupported by the controller, or the responsible controller itself being critically misconfigured. \n Any transient errors that occur during the reconciliation of MachinePools can be added as events to the MachinePool object and/or logged in the controller's output.", + "description": "FailureReason will be set in the event that there is a terminal problem\nreconciling the MachinePool and will contain a succinct value suitable\nfor machine interpretation.\n\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the MachinePool's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.", "type": "string" }, "image": { - "description": "Image is the current image used in the AzureMachinePool. When the spec image is nil, this image is populated with the details of the defaulted Azure Marketplace \"capi\" offer.", + "description": "Image is the current image used in the AzureMachinePool. When the spec image is nil, this image is populated\nwith the details of the defaulted Azure Marketplace \"capi\" offer.", "properties": { "computeGallery": { "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery", @@ -710,7 +799,7 @@ "description": "Plan contains plan information.", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -720,7 +809,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" } @@ -742,7 +831,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -763,7 +852,7 @@ "description": "Marketplace specifies an image to use from the Azure Marketplace", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -773,17 +862,17 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" }, "thirdPartyImage": { "default": false, - "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan will be generated for it.", + "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.", "type": "boolean" }, "version": { - "description": "Version specifies the version of an image sku. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -798,7 +887,7 @@ "additionalProperties": false }, "sharedGallery": { - "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery Deprecated: use ComputeGallery instead.", + "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.", "properties": { "gallery": { "description": "Gallery specifies the name of the shared image gallery that contains the image", @@ -811,11 +900,11 @@ "type": "string" }, "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "publisher": { - "description": "Publisher is the name of the organization that created the image. This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "resourceGroup": { @@ -824,7 +913,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "subscriptionID": { @@ -833,7 +922,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -852,6 +941,10 @@ "type": "object", "additionalProperties": false }, + "infrastructureMachineKind": { + "description": "InfrastructureMachineKind is the kind of the infrastructure resources behind MachinePool Machines.", + "type": "string" + }, "instances": { "description": "Instances is the VM instance status for each VM in the VMSS", "items": { @@ -866,7 +959,7 @@ "type": "string" }, "latestModelApplied": { - "description": "LatestModelApplied indicates the instance is running the most up-to-date VMSS model. A VMSS model describes the image version the VM is running. If the instance is not running the latest model, it means the instance may not be running the version of Kubernetes the Machine Pool has specified and needs to be updated.", + "description": "LatestModelApplied indicates the instance is running the most up-to-date VMSS model. A VMSS model describes\nthe image version the VM is running. If the instance is not running the latest model, it means the instance\nmay not be running the version of Kubernetes the Machine Pool has specified and needs to be updated.", "type": "boolean" }, "providerID": { @@ -891,7 +984,7 @@ "type": "array" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the state for Azure long-running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the state for Azure long-running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -900,7 +993,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -908,7 +1001,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { diff --git a/infrastructure.cluster.x-k8s.io/azuremachinepoolmachine_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremachinepoolmachine_v1beta1.json index 3cd6a0ee..5d182965 100644 --- a/infrastructure.cluster.x-k8s.io/azuremachinepoolmachine_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremachinepoolmachine_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureMachinePoolMachine is the Schema for the azuremachinepoolmachines API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -39,20 +39,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -60,7 +60,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -75,11 +75,11 @@ "type": "array" }, "failureMessage": { - "description": "FailureMessage will be set in the event that there is a terminal problem reconciling the MachinePool and will contain a more verbose string suitable for logging and human consumption. \n Any transient errors that occur during the reconciliation of MachinePools can be added as events to the MachinePool object and/or logged in the controller's output.", + "description": "FailureMessage will be set in the event that there is a terminal problem\nreconciling the MachinePool and will contain a more verbose string suitable\nfor logging and human consumption.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.", "type": "string" }, "failureReason": { - "description": "FailureReason will be set in the event that there is a terminal problem reconciling the MachinePool machine and will contain a succinct value suitable for machine interpretation. \n Any transient errors that occur during the reconciliation of MachinePools can be added as events to the MachinePool object and/or logged in the controller's output.", + "description": "FailureReason will be set in the event that there is a terminal problem\nreconciling the MachinePool machine and will contain a succinct value suitable\nfor machine interpretation.\n\n\nAny transient errors that occur during the reconciliation of MachinePools\ncan be added as events to the MachinePool object and/or logged in the\ncontroller's output.", "type": "string" }, "instanceName": { @@ -87,11 +87,11 @@ "type": "string" }, "latestModelApplied": { - "description": "LatestModelApplied indicates the instance is running the most up-to-date VMSS model. A VMSS model describes the image version the VM is running. If the instance is not running the latest model, it means the instance may not be running the version of Kubernetes the Machine Pool has specified and needs to be updated.", + "description": "LatestModelApplied indicates the instance is running the most up-to-date VMSS model. A VMSS model describes\nthe image version the VM is running. If the instance is not running the latest model, it means the instance\nmay not be running the version of Kubernetes the Machine Pool has specified and needs to be updated.", "type": "boolean" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the state for Azure long running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the state for Azure long running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -100,7 +100,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -108,7 +108,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { @@ -135,31 +135,32 @@ "type": "string" }, "fieldPath": { - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", + "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.", "type": "string" }, "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { - "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { - "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, "type": "object", + "x-kubernetes-map-type": "atomic", "additionalProperties": false }, "provisioningState": { diff --git a/infrastructure.cluster.x-k8s.io/azuremachinetemplate_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremachinetemplate_v1beta1.json index a89ef20c..ab251176 100644 --- a/infrastructure.cluster.x-k8s.io/azuremachinetemplate_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremachinetemplate_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureMachineTemplate is the Schema for the azuremachinetemplates API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -19,20 +19,20 @@ "description": "AzureMachineTemplateResource describes the data needed to create an AzureMachine from a template.", "properties": { "metadata": { - "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects users must create. This is a copy of customizable fields from metav1.ObjectMeta. \n ObjectMeta is embedded in `Machine.Spec`, `MachineDeployment.Template` and `MachineSet.Template`, which are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases and read-only fields which end up in the generated CRD validation, having it as a subset simplifies the API and some issues that can impact user experience. \n During the [upgrade to controller-tools@v2](https://github.com/kubernetes-sigs/cluster-api/pull/1054) for v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs, specifically `spec.metadata.creationTimestamp in body must be of type string: \"null\"`. The investigation showed that `controller-tools@v2` behaves differently than its previous version when handling types from [metav1](k8s.io/apimachinery/pkg/apis/meta/v1) package. \n In more details, we found that embedded (non-top level) types that embedded `metav1.ObjectMeta` had validation properties, including for `creationTimestamp` (metav1.Time). The `metav1.Time` type specifies a custom json marshaller that, when IsZero() is true, returns `null` which breaks validation because the field isn't marked as nullable. \n In future versions, controller-tools@v2 might allow overriding the type and validation for embedded types. When that happens, this hack should be revisited.", + "description": "ObjectMeta is metadata that all persisted resources must have, which includes all objects\nusers must create. This is a copy of customizable fields from metav1.ObjectMeta.\n\n\nObjectMeta is embedded in `Machine.Spec`, `MachineDeployment.Template` and `MachineSet.Template`,\nwhich are not top-level Kubernetes objects. Given that metav1.ObjectMeta has lots of special cases\nand read-only fields which end up in the generated CRD validation, having it as a subset simplifies\nthe API and some issues that can impact user experience.\n\n\nDuring the [upgrade to controller-tools@v2](https://github.com/kubernetes-sigs/cluster-api/pull/1054)\nfor v1alpha2, we noticed a failure would occur running Cluster API test suite against the new CRDs,\nspecifically `spec.metadata.creationTimestamp in body must be of type string: \"null\"`.\nThe investigation showed that `controller-tools@v2` behaves differently than its previous version\nwhen handling types from [metav1](k8s.io/apimachinery/pkg/apis/meta/v1) package.\n\n\nIn more details, we found that embedded (non-top level) types that embedded `metav1.ObjectMeta`\nhad validation properties, including for `creationTimestamp` (metav1.Time).\nThe `metav1.Time` type specifies a custom json marshaller that, when IsZero() is true, returns `null`\nwhich breaks validation because the field isn't marked as nullable.\n\n\nIn future versions, controller-tools@v2 might allow overriding the type and validation for embedded\ntypes. When that happens, this hack should be revisited.", "properties": { "annotations": { "additionalProperties": { "type": "string" }, - "description": "Annotations is an unstructured key value map stored with a resource that may be set by external tools to store and retrieve arbitrary metadata. They are not queryable and should be preserved when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations", + "description": "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations", "type": "object" }, "labels": { "additionalProperties": { "type": "string" }, - "description": "Map of string keys and values that can be used to organize and categorize (scope and select) objects. May match selectors of replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels", + "description": "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels", "type": "object" } }, @@ -50,7 +50,7 @@ "description": "AdditionalCapabilities specifies additional capabilities enabled or disabled on the virtual machine.", "properties": { "ultraSSDEnabled": { - "description": "UltraSSDEnabled enables or disables Azure UltraSSD capability for the virtual machine. Defaults to true if Ultra SSD data disks are specified, otherwise it doesn't set the capability on the VM.", + "description": "UltraSSDEnabled enables or disables Azure UltraSSD capability for the virtual machine.\nDefaults to true if Ultra SSD data disks are specified,\notherwise it doesn't set the capability on the VM.", "type": "boolean" } }, @@ -61,13 +61,17 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the Azure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the AzureMachine's value takes precedence.", + "description": "AdditionalTags is an optional set of tags to add to an instance, in addition to the ones added by default by the\nAzure provider. If both the AzureCluster and the AzureMachine specify the same tag name with different values, the\nAzureMachine's value takes precedence.", "type": "object" }, "allocatePublicIP": { "description": "AllocatePublicIP allows the ability to create dynamic public ips for machines where this value is true.", "type": "boolean" }, + "capacityReservationGroupID": { + "description": "CapacityReservationGroupID specifies the capacity reservation group resource id that should be\nused for allocating the virtual machine.\nThe field size should be greater than 0 and the field input must start with '/'.\nThe input for capacityReservationGroupID must be similar to '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/capacityReservationGroups/{capacityReservationGroupName}'.\nThe keys which are used should be among 'subscriptions', 'providers' and 'resourcegroups' followed by valid ID or names respectively.\nIt is optional but may not be changed once set.", + "type": "string" + }, "dataDisks": { "description": "DataDisk specifies the parameters that are used to add one or more data disks to the machine", "items": { @@ -88,7 +92,7 @@ "type": "integer" }, "lun": { - "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM. The value must be between 0 and 63.", + "description": "Lun Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.\nThe value must be between 0 and 63.", "format": "int32", "type": "integer" }, @@ -96,7 +100,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the data disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -106,6 +110,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -114,7 +144,7 @@ "additionalProperties": false }, "nameSuffix": { - "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name. Each disk name will be in format _.", + "description": "NameSuffix is the suffix to be appended to the machine name to generate the disk name.\nEach disk name will be in format _.", "type": "string" } }, @@ -128,13 +158,13 @@ "type": "array" }, "diagnostics": { - "description": "Diagnostics specifies the diagnostics settings for a virtual machine. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Diagnostics specifies the diagnostics settings for a virtual machine.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "boot": { - "description": "Boot configures the boot diagnostics settings for the virtual machine. This allows to configure capturing serial output from the virtual machine on boot. This is useful for debugging software based launch issues. If not specified then Boot diagnostics (Managed) will be enabled.", + "description": "Boot configures the boot diagnostics settings for the virtual machine.\nThis allows to configure capturing serial output from the virtual machine on boot.\nThis is useful for debugging software based launch issues.\nIf not specified then Boot diagnostics (Managed) will be enabled.", "properties": { "storageAccountType": { - "description": "StorageAccountType determines if the storage account for storing the diagnostics data should be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", + "description": "StorageAccountType determines if the storage account for storing the diagnostics data\nshould be disabled (Disabled), provisioned by Azure (Managed) or by the user (UserManaged).", "enum": [ "Managed", "UserManaged", @@ -146,7 +176,7 @@ "description": "UserManaged provides a reference to the user-managed storage account.", "properties": { "storageAccountURI": { - "description": "StorageAccountURI is the URI of the user-managed storage account. The URI typically will be `https://.blob.core.windows.net/` but may differ if you are using Azure DNS zone endpoints. You can find the correct endpoint by looking for the Blob Primary Endpoint in the endpoints tab in the Azure console or with the CLI by issuing `az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", + "description": "StorageAccountURI is the URI of the user-managed storage account.\nThe URI typically will be `https://.blob.core.windows.net/`\nbut may differ if you are using Azure DNS zone endpoints.\nYou can find the correct endpoint by looking for the Blob Primary Endpoint in the\nendpoints tab in the Azure console or with the CLI by issuing\n`az storage account list --query='[].{name: name, \"resource group\": resourceGroup, \"blob endpoint\": primaryEndpoints.blob}'`.", "maxLength": 1024, "pattern": "^https://", "type": "string" @@ -169,6 +199,10 @@ "type": "object", "additionalProperties": false }, + "disableExtensionOperations": { + "description": "DisableExtensionOperations specifies whether extension operations should be disabled on the virtual machine.\nUse this setting only if VMExtensions are not supported by your image, as it disables CAPZ bootstrapping extension used for detecting Kubernetes bootstrap failure.\nThis may only be set to True when no extensions are configured on the virtual machine.", + "type": "boolean" + }, "dnsServers": { "description": "DNSServers adds a list of DNS Server IP addresses to the VM NICs.", "items": { @@ -177,16 +211,16 @@ "type": "array" }, "enableIPForwarding": { - "description": "EnableIPForwarding enables IP Forwarding in Azure which is required for some CNI's to send traffic from a pods on one machine to another. This is required for IpV6 with Calico in combination with User Defined Routes (set by the Azure Cloud Controller manager). Default is false for disabled.", + "description": "EnableIPForwarding enables IP Forwarding in Azure which is required for some CNI's to send traffic from a pods on one machine\nto another. This is required for IpV6 with Calico in combination with User Defined Routes (set by the Azure Cloud Controller\nmanager). Default is false for disabled.", "type": "boolean" }, "failureDomain": { - "description": "FailureDomain is the failure domain unique identifier this Machine should be attached to, as defined in Cluster API. This relates to an Azure Availability Zone", + "description": "FailureDomain is the failure domain unique identifier this Machine should be attached to,\nas defined in Cluster API. This relates to an Azure Availability Zone", "type": "string" }, "identity": { "default": "None", - "description": "Identity is the type of identity used for the virtual machine. The type 'SystemAssigned' is an implicitly created identity. The generated identity will be assigned a Subscription contributor role. The type 'UserAssigned' is a standalone Azure resource provided by the user and assigned to the VM", + "description": "Identity is the type of identity used for the virtual machine.\nThe type 'SystemAssigned' is an implicitly created identity.\nThe generated identity will be assigned a Subscription contributor role.\nThe type 'UserAssigned' is a standalone Azure resource provided by the user\nand assigned to the VM", "enum": [ "None", "SystemAssigned", @@ -195,7 +229,7 @@ "type": "string" }, "image": { - "description": "Image is used to provide details of an image to use during VM creation. If image details are omitted the image will default the Azure Marketplace \"capi\" offer, which is based on Ubuntu.", + "description": "Image is used to provide details of an image to use during VM creation.\nIf image details are omitted the image will default the Azure Marketplace \"capi\" offer,\nwhich is based on Ubuntu.", "properties": { "computeGallery": { "description": "ComputeGallery specifies an image to use from the Azure Compute Gallery", @@ -214,7 +248,7 @@ "description": "Plan contains plan information.", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -224,7 +258,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" } @@ -246,7 +280,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -267,7 +301,7 @@ "description": "Marketplace specifies an image to use from the Azure Marketplace", "properties": { "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer", "minLength": 1, "type": "string" }, @@ -277,17 +311,17 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter", "minLength": 1, "type": "string" }, "thirdPartyImage": { "default": false, - "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan will be generated for it.", + "description": "ThirdPartyImage indicates the image is published by a third party publisher and a Plan\nwill be generated for it.", "type": "boolean" }, "version": { - "description": "Version specifies the version of an image sku. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of an image sku. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -302,7 +336,7 @@ "additionalProperties": false }, "sharedGallery": { - "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery Deprecated: use ComputeGallery instead.", + "description": "SharedGallery specifies an image to use from an Azure Shared Image Gallery\nDeprecated: use ComputeGallery instead.", "properties": { "gallery": { "description": "Gallery specifies the name of the shared image gallery that contains the image", @@ -315,11 +349,11 @@ "type": "string" }, "offer": { - "description": "Offer specifies the name of a group of related images created by the publisher. For example, UbuntuServer, WindowsServer This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Offer specifies the name of a group of related images created by the publisher.\nFor example, UbuntuServer, WindowsServer\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "publisher": { - "description": "Publisher is the name of the organization that created the image. This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "Publisher is the name of the organization that created the image.\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "resourceGroup": { @@ -328,7 +362,7 @@ "type": "string" }, "sku": { - "description": "SKU specifies an instance of an offer, such as a major release of a distribution. For example, 18.04-LTS, 2019-Datacenter This value will be used to add a `Plan` in the API request when creating the VM/VMSS resource. This is needed when the source image from which this SIG image was built requires the `Plan` to be used.", + "description": "SKU specifies an instance of an offer, such as a major release of a distribution.\nFor example, 18.04-LTS, 2019-Datacenter\nThis value will be used to add a `Plan` in the API request when creating the VM/VMSS resource.\nThis is needed when the source image from which this SIG image was built requires the `Plan` to be used.", "type": "string" }, "subscriptionID": { @@ -337,7 +371,7 @@ "type": "string" }, "version": { - "description": "Version specifies the version of the marketplace image. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.", + "description": "Version specifies the version of the marketplace image. The allowed formats\nare Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers.\nSpecify 'latest' to use the latest version of an image available at deploy time.\nEven if you use 'latest', the VM image will not automatically update after deploy\ntime even if a new version becomes available.", "minLength": 1, "type": "string" } @@ -357,16 +391,16 @@ "additionalProperties": false }, "networkInterfaces": { - "description": "NetworkInterfaces specifies a list of network interface configurations. If left unspecified, the VM will get a single network interface with a single IPConfig in the subnet specified in the cluster's node subnet field. The primary interface will be the first networkInterface specified (index 0) in the list.", + "description": "NetworkInterfaces specifies a list of network interface configurations.\nIf left unspecified, the VM will get a single network interface with a\nsingle IPConfig in the subnet specified in the cluster's node subnet field.\nThe primary interface will be the first networkInterface specified (index 0) in the list.", "items": { "description": "NetworkInterface defines a network interface.", "properties": { "acceleratedNetworking": { - "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on whether the requested VMSize supports accelerated networking. If AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", + "description": "AcceleratedNetworking enables or disables Azure accelerated networking. If omitted, it will be set based on\nwhether the requested VMSize supports accelerated networking.\nIf AcceleratedNetworking is set to true with a VMSize that does not support it, Azure will return an error.", "type": "boolean" }, "privateIPConfigs": { - "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface. Defaults to 1 if not specified.", + "description": "PrivateIPConfigs specifies the number of private IP addresses to attach to the interface.\nDefaults to 1 if not specified.", "type": "integer" }, "subnetName": { @@ -395,11 +429,20 @@ "description": "DiffDiskSettings describe ephemeral disk settings for the os disk.", "properties": { "option": { - "description": "Option enables ephemeral OS when set to \"Local\" See https://docs.microsoft.com/en-us/azure/virtual-machines/ephemeral-os-disks for full details", + "description": "Option enables ephemeral OS when set to \"Local\"\nSee https://learn.microsoft.com/azure/virtual-machines/ephemeral-os-disks for full details", "enum": [ "Local" ], "type": "string" + }, + "placement": { + "description": "Placement specifies the ephemeral disk placement for operating system disk. If placement is specified, Option must be set to \"Local\".", + "enum": [ + "CacheDisk", + "NvmeDisk", + "ResourceDisk" + ], + "type": "string" } }, "required": [ @@ -409,7 +452,7 @@ "additionalProperties": false }, "diskSizeGB": { - "description": "DiskSizeGB is the size in GB to assign to the OS disk. Will have a default of 30GB if not provided", + "description": "DiskSizeGB is the size in GB to assign to the OS disk.\nWill have a default of 30GB if not provided", "format": "int32", "type": "integer" }, @@ -417,7 +460,7 @@ "description": "ManagedDisk specifies the Managed Disk parameters for the OS disk.", "properties": { "diskEncryptionSet": { - "description": "DiskEncryptionSetParameters defines disk encryption options.", + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the managed disk.", "properties": { "id": { "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", @@ -427,6 +470,32 @@ "type": "object", "additionalProperties": false }, + "securityProfile": { + "description": "SecurityProfile specifies the security profile for the managed disk.", + "properties": { + "diskEncryptionSet": { + "description": "DiskEncryptionSet specifies the customer-managed disk encryption set resource id for the\nmanaged disk that is used for Customer Managed Key encrypted ConfidentialVM OS Disk and\nVMGuest blob.", + "properties": { + "id": { + "description": "ID defines resourceID for diskEncryptionSet resource. It must be in the same subscription", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "securityEncryptionType": { + "description": "SecurityEncryptionType specifies the encryption type of the managed disk.\nIt is set to DiskWithVMGuestState to encrypt the managed disk along with the VMGuestState\nblob, and to VMGuestStateOnly to encrypt the VMGuestState blob only.\nWhen set to VMGuestStateOnly, VirtualizedTrustedPlatformModule should be set to Enabled.\nWhen set to DiskWithVMGuestState, EncryptionAtHost should be disabled, SecureBoot and\nVirtualizedTrustedPlatformModule should be set to Enabled.\nIt can be set only for Confidential VMs.", + "enum": [ + "VMGuestStateOnly", + "DiskWithVMGuestState" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "storageAccountType": { "type": "string" } @@ -456,8 +525,31 @@ "description": "SecurityProfile specifies the Security profile settings for a virtual machine.", "properties": { "encryptionAtHost": { - "description": "This field indicates whether Host Encryption should be enabled or disabled for a virtual machine or virtual machine scale set. Default is disabled.", + "description": "This field indicates whether Host Encryption should be enabled\nor disabled for a virtual machine or virtual machine scale set.\nThis should be disabled when SecurityEncryptionType is set to DiskWithVMGuestState.\nDefault is disabled.", "type": "boolean" + }, + "securityType": { + "description": "SecurityType specifies the SecurityType of the virtual machine. It has to be set to any specified value to\nenable UefiSettings. The default behavior is: UefiSettings will not be enabled unless this property is set.", + "enum": [ + "ConfidentialVM", + "TrustedLaunch" + ], + "type": "string" + }, + "uefiSettings": { + "description": "UefiSettings specifies the security settings like secure boot and vTPM used while creating the virtual machine.", + "properties": { + "secureBootEnabled": { + "description": "SecureBootEnabled specifies whether secure boot should be enabled on the virtual machine.\nSecure Boot verifies the digital signature of all boot components and halts the boot process if signature verification fails.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + }, + "vTpmEnabled": { + "description": "VTpmEnabled specifies whether vTPM should be enabled on the virtual machine.\nWhen true it enables the virtualized trusted platform module measurements to create a known good boot integrity policy baseline.\nThe integrity policy baseline is used for comparison with measurements from subsequent VM boots to determine if anything has changed.\nThis is required to be set to Enabled if SecurityEncryptionType is defined.\nIf omitted, the platform chooses a default, which is subject to change over time, currently that default is false.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false } }, "type": "object", @@ -492,7 +584,7 @@ "additionalProperties": false }, "sshPublicKey": { - "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only. Refer to documentation on how to set up SSH access on Windows instances.", + "description": "SSHPublicKey is the SSH public key string, base64-encoded to add to a Virtual Machine. Linux only.\nRefer to documentation on how to set up SSH access on Windows instances.", "type": "string" }, "subnetName": { @@ -503,15 +595,15 @@ "description": "SystemAssignedIdentityRole defines the role and scope to assign to the system-assigned identity.", "properties": { "definitionID": { - "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role. Refer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", + "description": "DefinitionID is the ID of the role definition to create for a system assigned identity. It can be an Azure built-in role or a custom role.\nRefer to built-in roles: https://learn.microsoft.com/en-us/azure/role-based-access-control/built-in-roles", "type": "string" }, "name": { - "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID. If not specified, a random UUID will be generated.", + "description": "Name is the name of the role assignment to create for a system assigned identity. It can be any valid UUID.\nIf not specified, a random UUID will be generated.", "type": "string" }, "scope": { - "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance. If not specified, the scope will be the subscription.", + "description": "Scope is the scope that the role assignment or definition applies to. The scope can be any REST resource instance.\nIf not specified, the scope will be the subscription.", "type": "string" } }, @@ -519,12 +611,12 @@ "additionalProperties": false }, "userAssignedIdentities": { - "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user The lifecycle of a user-assigned identity is managed separately from the lifecycle of the AzureMachine. See https://docs.microsoft.com/en-us/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", + "description": "UserAssignedIdentities is a list of standalone Azure identities provided by the user\nThe lifecycle of a user-assigned identity is managed separately from the lifecycle of\nthe AzureMachine.\nSee https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/how-to-manage-ua-identity-cli", "items": { - "description": "UserAssignedIdentity defines the user-assigned identities provided by the user to be assigned to Azure resources.", + "description": "UserAssignedIdentity defines the user-assigned identities provided\nby the user to be assigned to Azure resources.", "properties": { "providerID": { - "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is: 'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", + "description": "ProviderID is the identification ID of the user-assigned Identity, the format of an identity is:\n'azure:///subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{identityName}'", "type": "string" } }, diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedcluster_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedcluster_v1beta1.json index 559ab458..1666d523 100644 --- a/infrastructure.cluster.x-k8s.io/azuremanagedcluster_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremanagedcluster_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureManagedCluster is the Schema for the azuremanagedclusters API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -16,7 +16,7 @@ "description": "AzureManagedClusterSpec defines the desired state of AzureManagedCluster.", "properties": { "controlPlaneEndpoint": { - "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.", + "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.\nImmutable, populated by the AKS API at create.\nBecause this field is programmatically set by CAPZ after resource creation, we define it as +optional\nin the API schema to permit resource admission.", "properties": { "host": { "description": "The hostname on which the API server is serving.", diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedclustertemplate_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedclustertemplate_v1beta1.json new file mode 100644 index 00000000..ab3aca1a --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azuremanagedclustertemplate_v1beta1.json @@ -0,0 +1,41 @@ +{ + "description": "AzureManagedClusterTemplate is the Schema for the AzureManagedClusterTemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureManagedClusterTemplateSpec defines the desired state of AzureManagedClusterTemplate.", + "properties": { + "template": { + "description": "AzureManagedClusterTemplateResource describes the data needed to create an AzureManagedCluster from a template.", + "properties": { + "spec": { + "description": "AzureManagedClusterTemplateResourceSpec specifies an Azure managed cluster template resource.", + "type": "object" + } + }, + "required": [ + "spec" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplane_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplane_v1beta1.json index eafa075d..9485df65 100644 --- a/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplane_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplane_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureManagedControlPlane is the Schema for the azuremanagedcontrolplanes API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -41,7 +41,7 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the ones added by default.", + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the\nones added by default.", "type": "object" }, "addonProfiles": { @@ -75,7 +75,7 @@ "type": "array" }, "apiServerAccessProfile": { - "description": "APIServerAccessProfile is the access profile for AKS API server.", + "description": "APIServerAccessProfile is the access profile for AKS API server.\nImmutable except for `authorizedIPRanges`.", "properties": { "authorizedIPRanges": { "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", @@ -85,18 +85,39 @@ "type": "array" }, "enablePrivateCluster": { - "description": "EnablePrivateCluster - Whether to create the cluster as a private cluster or not.", + "description": "EnablePrivateCluster indicates whether to create the cluster as a private cluster or not.", "type": "boolean" }, "enablePrivateClusterPublicFQDN": { - "description": "EnablePrivateClusterPublicFQDN - Whether to create additional public FQDN for private cluster or not.", + "description": "EnablePrivateClusterPublicFQDN indicates whether to create additional public FQDN for private cluster or not.", "type": "boolean" }, "privateDNSZone": { - "description": "PrivateDNSZone - Private dns zone mode for private cluster.", + "description": "PrivateDNSZone enables private dns zone mode for private cluster.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "asoManagedClusterPatches": { + "description": "ASOManagedClusterPatches defines JSON merge patches to be applied to the generated ASO ManagedCluster resource.\nWARNING: This is meant to be used sparingly to enable features for development and testing that are not\notherwise represented in the CAPZ API. Misconfiguration that conflicts with CAPZ's normal mode of\noperation is possible.", + "items": { + "type": "string" + }, + "type": "array" + }, + "autoUpgradeProfile": { + "description": "AutoUpgradeProfile defines the auto upgrade configuration.", + "properties": { + "upgradeChannel": { + "description": "UpgradeChannel determines the type of upgrade channel for automatically upgrading the cluster.", "enum": [ - "System", - "None" + "node-image", + "none", + "patch", + "rapid", + "stable" ], "type": "string" } @@ -209,8 +230,12 @@ "type": "object", "additionalProperties": false }, + "azureEnvironment": { + "description": "AzureEnvironment is the name of the AzureCloud to be used.\nThe default value that would be used by most users is \"AzurePublicCloud\", other values are:\n- ChinaCloud: \"AzureChinaCloud\"\n- PublicCloud: \"AzurePublicCloud\"\n- USGovernmentCloud: \"AzureUSGovernmentCloud\"\n\n\nNote that values other than the default must also be accompanied by corresponding changes to the\naso-controller-settings Secret to configure ASO to refer to the non-Public cloud. ASO currently does\nnot support referring to multiple different clouds in a single installation. The following fields must\nbe defined in the Secret:\n- AZURE_AUTHORITY_HOST\n- AZURE_RESOURCE_MANAGER_ENDPOINT\n- AZURE_RESOURCE_MANAGER_AUDIENCE\n\n\nSee the [ASO docs] for more details.\n\n\n[ASO docs]: https://azure.github.io/azure-service-operator/guide/aso-controller-settings-options/", + "type": "string" + }, "controlPlaneEndpoint": { - "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.", + "description": "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane.\nImmutable, populated by the AKS API at create.", "properties": { "host": { "description": "The hostname on which the API server is serving.", @@ -229,10 +254,205 @@ "type": "object", "additionalProperties": false }, + "disableLocalAccounts": { + "description": "DisableLocalAccounts disables getting static credentials for this cluster when set. Expected to only be used for AAD clusters.", + "type": "boolean" + }, + "dnsPrefix": { + "description": "DNSPrefix allows the user to customize dns prefix.\nImmutable.", + "type": "string" + }, "dnsServiceIP": { - "description": "DNSServiceIP is an IP address assigned to the Kubernetes DNS service. It must be within the Kubernetes service address range specified in serviceCidr.", + "description": "DNSServiceIP is an IP address assigned to the Kubernetes DNS service.\nIt must be within the Kubernetes service address range specified in serviceCidr.\nImmutable.", "type": "string" }, + "enablePreviewFeatures": { + "description": "EnablePreviewFeatures enables preview features for the cluster.", + "type": "boolean" + }, + "extensions": { + "description": "Extensions is a list of AKS extensions to be installed on the cluster.", + "items": { + "description": "AKSExtension represents the configuration for an AKS cluster extension.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/aks/cluster-extensions", + "properties": { + "aksAssignedIdentityType": { + "description": "AKSAssignedIdentityType is the type of the AKS assigned identity.", + "enum": [ + "SystemAssigned", + "UserAssigned" + ], + "type": "string" + }, + "autoUpgradeMinorVersion": { + "default": true, + "description": "AutoUpgradeMinorVersion is a flag to note if this extension participates in auto upgrade of minor version, or not.", + "type": "boolean" + }, + "configurationSettings": { + "additionalProperties": { + "type": "string" + }, + "description": "ConfigurationSettings are the name-value pairs for configuring this extension.", + "type": "object" + }, + "extensionType": { + "description": "ExtensionType is the type of the Extension of which this resource is an instance.\nIt must be one of the Extension Types registered with Microsoft.KubernetesConfiguration by the Extension publisher.", + "type": "string" + }, + "identity": { + "description": "Identity is the identity type of the Extension resource in an AKS cluster.", + "enum": [ + "SystemAssigned" + ], + "type": "string" + }, + "name": { + "description": "Name is the name of the extension.", + "type": "string" + }, + "plan": { + "description": "Plan is the plan of the extension.", + "properties": { + "name": { + "description": "Name is the user-defined name of the 3rd Party Artifact that is being procured.", + "type": "string" + }, + "product": { + "description": "Product is the name of the 3rd Party artifact that is being procured.", + "type": "string" + }, + "promotionCode": { + "description": "PromotionCode is a publisher-provided promotion code as provisioned in Data Market for the said product/artifact.", + "type": "string" + }, + "publisher": { + "description": "Publisher is the name of the publisher of the 3rd Party Artifact that is being bought.", + "type": "string" + }, + "version": { + "description": "Version is the version of the plan.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "releaseTrain": { + "description": "ReleaseTrain is the release train this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.)\nThis is only used if autoUpgradeMinorVersion is \u2018true\u2019.", + "type": "string" + }, + "scope": { + "description": "Scope is the scope at which this extension is enabled.", + "properties": { + "releaseNamespace": { + "description": "ReleaseNamespace is the namespace where the extension Release must be placed, for a Cluster-scoped extension.\nRequired for Cluster-scoped extensions.", + "type": "string" + }, + "scopeType": { + "description": "ScopeType is the scope of the extension. It can be either Cluster or Namespace, but not both.", + "enum": [ + "Cluster", + "Namespace" + ], + "type": "string" + }, + "targetNamespace": { + "description": "TargetNamespace is the namespace where the extension will be created for a Namespace-scoped extension.\nRequired for Namespace-scoped extensions.", + "type": "string" + } + }, + "required": [ + "scopeType" + ], + "type": "object", + "additionalProperties": false + }, + "version": { + "description": "Version is the version of the extension.", + "type": "string" + } + }, + "required": [ + "extensionType", + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "fleetsMember": { + "description": "FleetsMember is the spec for the fleet this cluster is a member of.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/templates/microsoft.containerservice/2023-03-15-preview/fleets/members", + "properties": { + "group": { + "description": "Group is the group this member belongs to for multi-cluster update management.", + "type": "string" + }, + "managerName": { + "description": "ManagerName is the name of the fleet manager.", + "type": "string" + }, + "managerResourceGroup": { + "description": "ManagerResourceGroup is the resource group of the fleet manager.", + "type": "string" + }, + "name": { + "description": "Name is the name of the member.", + "type": "string" + } + }, + "required": [ + "managerName", + "managerResourceGroup" + ], + "type": "object", + "additionalProperties": false + }, + "httpProxyConfig": { + "description": "HTTPProxyConfig is the HTTP proxy configuration for the cluster.\nImmutable.", + "properties": { + "httpProxy": { + "description": "HTTPProxy is the HTTP proxy server endpoint to use.", + "type": "string" + }, + "httpsProxy": { + "description": "HTTPSProxy is the HTTPS proxy server endpoint to use.", + "type": "string" + }, + "noProxy": { + "description": "NoProxy indicates the endpoints that should not go through proxy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "trustedCa": { + "description": "TrustedCA is the alternative CA cert to use for connecting to proxy servers.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "identity": { + "description": "Identity configuration used by the AKS control plane.", + "properties": { + "type": { + "description": "Type - The Identity type to use.", + "enum": [ + "SystemAssigned", + "UserAssigned" + ], + "type": "string" + }, + "userAssignedIdentityResourceID": { + "description": "UserAssignedIdentityResourceID - Identity ARM resource ID when using user-assigned identity.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "identityRef": { "description": "IdentityRef is a reference to a AzureClusterIdentity to be used when reconciling this cluster", "properties": { @@ -241,27 +461,27 @@ "type": "string" }, "fieldPath": { - "description": "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future.", + "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.", "type": "string" }, "kind": { - "description": "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "name": { - "description": "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", "type": "string" }, "namespace": { - "description": "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", "type": "string" }, "resourceVersion": { - "description": "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", "type": "string" }, "uid": { - "description": "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", "type": "string" } }, @@ -269,22 +489,23 @@ "x-kubernetes-map-type": "atomic", "additionalProperties": false }, + "kubeletUserAssignedIdentity": { + "description": "KubeletUserAssignedIdentity is the user-assigned identity for kubelet.\nFor authentication with Azure Container Registry.", + "type": "string" + }, "loadBalancerProfile": { "description": "LoadBalancerProfile is the profile of the cluster load balancer.", "properties": { "allocatedOutboundPorts": { "description": "AllocatedOutboundPorts - Desired number of allocated SNAT ports per VM. Allowed values must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure dynamically allocating ports.", - "format": "int32", "type": "integer" }, "idleTimeoutInMinutes": { "description": "IdleTimeoutInMinutes - Desired outbound flow idle timeout in minutes. Allowed values must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.", - "format": "int32", "type": "integer" }, "managedOutboundIPs": { "description": "ManagedOutboundIPs - Desired managed outbound IPs for the cluster load balancer.", - "format": "int32", "type": "integer" }, "outboundIPPrefixes": { @@ -306,7 +527,8 @@ "additionalProperties": false }, "loadBalancerSKU": { - "description": "LoadBalancerSKU is the SKU of the loadBalancer to be provisioned.", + "default": "Standard", + "description": "LoadBalancerSKU is the SKU of the loadBalancer to be provisioned.\nImmutable.", "enum": [ "Basic", "Standard" @@ -317,11 +539,31 @@ "description": "Location is a string matching one of the canonical Azure region names. Examples: \"westus2\", \"eastus\".", "type": "string" }, + "machineTemplate": { + "description": "MachineTemplate contains information about how machines\nshould be shaped when creating or updating a control plane.\nFor the AzureManagedControlPlaneTemplate, this field is used\nonly to fulfill the CAPI contract.", + "type": "object" + }, + "networkDataplane": { + "description": "NetworkDataplane is the dataplane used for building the Kubernetes network.", + "enum": [ + "azure", + "cilium" + ], + "type": "string" + }, "networkPlugin": { "description": "NetworkPlugin used for building Kubernetes network.", "enum": [ "azure", - "kubenet" + "kubenet", + "none" + ], + "type": "string" + }, + "networkPluginMode": { + "description": "NetworkPluginMode is the mode the network plugin should use.\nAllowed value is \"overlay\".", + "enum": [ + "overlay" ], "type": "string" }, @@ -329,14 +571,26 @@ "description": "NetworkPolicy used for building Kubernetes network.", "enum": [ "azure", - "calico" + "calico", + "cilium" ], "type": "string" }, "nodeResourceGroupName": { - "description": "NodeResourceGroupName is the name of the resource group containing cluster IaaS resources. Will be populated to default in webhook.", + "description": "NodeResourceGroupName is the name of the resource group\ncontaining cluster IaaS resources. Will be populated to default\nin webhook.\nImmutable.", "type": "string" }, + "oidcIssuerProfile": { + "description": "OIDCIssuerProfile is the OIDC issuer profile of the Managed Cluster.", + "properties": { + "enabled": { + "description": "Enabled is whether the OIDC issuer is enabled.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, "outboundType": { "description": "Outbound configuration used by Nodes.", "enum": [ @@ -348,9 +602,107 @@ "type": "string" }, "resourceGroupName": { - "description": "ResourceGroupName is the name of the Azure resource group for this AKS Cluster.", + "description": "ResourceGroupName is the name of the Azure resource group for this AKS Cluster.\nImmutable.", "type": "string" }, + "securityProfile": { + "description": "SecurityProfile defines the security profile for cluster.", + "properties": { + "azureKeyVaultKms": { + "description": "AzureKeyVaultKms defines Azure Key Vault Management Services Profile for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables the Azure Key Vault key management service. The default is false.", + "type": "boolean" + }, + "keyID": { + "description": "KeyID defines the Identifier of Azure Key Vault key.\nWhen Azure Key Vault key management service is enabled, this field is required and must be a valid key identifier.", + "type": "string" + }, + "keyVaultNetworkAccess": { + "default": "Public", + "description": "KeyVaultNetworkAccess defines the network access of key vault.\nThe possible values are Public and Private.\nPublic means the key vault allows public access from all networks.\nPrivate means the key vault disables public access and enables private link. The default value is Public.", + "type": "string" + }, + "keyVaultResourceID": { + "description": "KeyVaultResourceID is the Resource ID of key vault. When keyVaultNetworkAccess is Private, this field is required and must be a valid resource ID.", + "type": "string" + } + }, + "required": [ + "enabled", + "keyID" + ], + "type": "object", + "additionalProperties": false + }, + "defender": { + "description": "Defender settings for the security profile.", + "properties": { + "logAnalyticsWorkspaceResourceID": { + "description": "LogAnalyticsWorkspaceResourceID is the ID of the Log Analytics workspace that has to be associated with Microsoft Defender.\nWhen Microsoft Defender is enabled, this field is required and must be a valid workspace resource ID.", + "type": "string" + }, + "securityMonitoring": { + "description": "SecurityMonitoring profile defines the Microsoft Defender threat detection for Cloud settings for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables Defender threat detection", + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "logAnalyticsWorkspaceResourceID", + "securityMonitoring" + ], + "type": "object", + "additionalProperties": false + }, + "imageCleaner": { + "description": "ImageCleaner settings for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables the Image Cleaner on AKS cluster.", + "type": "boolean" + }, + "intervalHours": { + "description": "IntervalHours defines Image Cleaner scanning interval in hours. Default value is 24 hours.", + "maximum": 2160, + "minimum": 24, + "type": "integer" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + }, + "workloadIdentity": { + "description": "Workloadidentity enables Kubernetes applications to access Azure cloud resources securely with Azure AD. Ensure to enable OIDC issuer while enabling Workload Identity", + "properties": { + "enabled": { + "description": "Enabled enables the workload identity.", + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, "sku": { "description": "SKU is the SKU of the AKS to be provisioned.", "properties": { @@ -358,7 +710,8 @@ "description": "Tier - Tier of an AKS cluster.", "enum": [ "Free", - "Paid" + "Paid", + "Standard" ], "type": "string" } @@ -370,11 +723,11 @@ "additionalProperties": false }, "sshPublicKey": { - "description": "SSHPublicKey is a string literal containing an ssh public key base64 encoded.", + "description": "SSHPublicKey is a string literal containing an ssh public key base64 encoded.\nUse empty string to autogenerate new key. Use null value to not set key.\nImmutable.", "type": "string" }, "subscriptionID": { - "description": "SubscriptionID is the GUID of the Azure subscription to hold this cluster.", + "description": "SubscriptionID is the GUID of the Azure subscription that owns this cluster.", "type": "string" }, "version": { @@ -383,12 +736,13 @@ "type": "string" }, "virtualNetwork": { - "description": "VirtualNetwork describes the vnet for the AKS cluster. Will be created if it does not exist.", + "description": "VirtualNetwork describes the virtual network for the AKS cluster. It will be created if it does not already exist.", "properties": { "cidrBlock": { "type": "string" }, "name": { + "description": "Name is the name of the virtual network.", "type": "string" }, "resourceGroup": { @@ -425,7 +779,7 @@ "type": "string" }, "manualApproval": { - "description": "ManualApproval specifies if the connection approval needs to be done manually or not. Set it true when the network admin does not have access to approve connections to the remote resource. Defaults to false.", + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", "type": "boolean" }, "name": { @@ -433,7 +787,7 @@ "type": "string" }, "privateIPAddresses": { - "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint. They have to be part of the subnet where the private endpoint is linked.", + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", "items": { "type": "string" }, @@ -529,9 +883,9 @@ } }, "required": [ + "identityRef", "location", "resourceGroupName", - "sshPublicKey", "version" ], "type": "object", @@ -540,26 +894,31 @@ "status": { "description": "AzureManagedControlPlaneStatus defines the observed state of AzureManagedControlPlane.", "properties": { + "autoUpgradeVersion": { + "description": "AutoUpgradeVersion is the Kubernetes version populated after auto-upgrade based on the upgrade channel.", + "minLength": 2, + "type": "string" + }, "conditions": { "description": "Conditions defines current service state of the AzureManagedControlPlane.", "items": { "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -567,7 +926,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -582,11 +941,11 @@ "type": "array" }, "initialized": { - "description": "Initialized is true when the control plane is available for initial contact. This may occur before the control plane is fully ready. In the AzureManagedControlPlane implementation, these are identical.", + "description": "Initialized is true when the control plane is available for initial contact.\nThis may occur before the control plane is fully ready.\nIn the AzureManagedControlPlane implementation, these are identical.", "type": "boolean" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -595,7 +954,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -603,7 +962,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { @@ -622,9 +981,24 @@ }, "type": "array" }, + "oidcIssuerProfile": { + "description": "OIDCIssuerProfile is the OIDC issuer profile of the Managed Cluster.", + "properties": { + "issuerURL": { + "description": "IssuerURL is the OIDC issuer url of the Managed Cluster.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, "ready": { "description": "Ready is true when the provider resource is ready.", "type": "boolean" + }, + "version": { + "description": "Version defines the Kubernetes version for the control plane instance.", + "type": "string" } }, "type": "object", diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplanetemplate_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplanetemplate_v1beta1.json new file mode 100644 index 00000000..fe75a165 --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azuremanagedcontrolplanetemplate_v1beta1.json @@ -0,0 +1,880 @@ +{ + "description": "AzureManagedControlPlaneTemplate is the Schema for the AzureManagedControlPlaneTemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureManagedControlPlaneTemplateSpec defines the desired state of AzureManagedControlPlaneTemplate.", + "properties": { + "template": { + "description": "AzureManagedControlPlaneTemplateResource describes the data needed to create an AzureManagedCluster from a template.", + "properties": { + "spec": { + "description": "AzureManagedControlPlaneTemplateResourceSpec specifies an Azure managed control plane template resource.", + "properties": { + "aadProfile": { + "description": "AadProfile is Azure Active Directory configuration to integrate with AKS for aad authentication.", + "properties": { + "adminGroupObjectIDs": { + "description": "AdminGroupObjectIDs - AAD group object IDs that will have admin role of the cluster.", + "items": { + "type": "string" + }, + "type": "array" + }, + "managed": { + "description": "Managed - Whether to enable managed AAD.", + "type": "boolean" + } + }, + "required": [ + "adminGroupObjectIDs", + "managed" + ], + "type": "object", + "additionalProperties": false + }, + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the\nones added by default.", + "type": "object" + }, + "addonProfiles": { + "description": "AddonProfiles are the profiles of managed cluster add-on.", + "items": { + "description": "AddonProfile represents a managed cluster add-on.", + "properties": { + "config": { + "additionalProperties": { + "type": "string" + }, + "description": "Config - Key-value pairs for configuring the add-on.", + "type": "object" + }, + "enabled": { + "description": "Enabled - Whether the add-on is enabled or not.", + "type": "boolean" + }, + "name": { + "description": "Name - The name of the managed cluster add-on.", + "type": "string" + } + }, + "required": [ + "enabled", + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "apiServerAccessProfile": { + "description": "APIServerAccessProfile is the access profile for AKS API server.\nImmutable except for `authorizedIPRanges`.", + "properties": { + "authorizedIPRanges": { + "description": "AuthorizedIPRanges - Authorized IP Ranges to kubernetes API server.", + "items": { + "type": "string" + }, + "type": "array" + }, + "enablePrivateCluster": { + "description": "EnablePrivateCluster indicates whether to create the cluster as a private cluster or not.", + "type": "boolean" + }, + "enablePrivateClusterPublicFQDN": { + "description": "EnablePrivateClusterPublicFQDN indicates whether to create additional public FQDN for private cluster or not.", + "type": "boolean" + }, + "privateDNSZone": { + "description": "PrivateDNSZone enables private dns zone mode for private cluster.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "asoManagedClusterPatches": { + "description": "ASOManagedClusterPatches defines JSON merge patches to be applied to the generated ASO ManagedCluster resource.\nWARNING: This is meant to be used sparingly to enable features for development and testing that are not\notherwise represented in the CAPZ API. Misconfiguration that conflicts with CAPZ's normal mode of\noperation is possible.", + "items": { + "type": "string" + }, + "type": "array" + }, + "autoUpgradeProfile": { + "description": "AutoUpgradeProfile defines the auto upgrade configuration.", + "properties": { + "upgradeChannel": { + "description": "UpgradeChannel determines the type of upgrade channel for automatically upgrading the cluster.", + "enum": [ + "node-image", + "none", + "patch", + "rapid", + "stable" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "autoscalerProfile": { + "description": "AutoscalerProfile is the parameters to be applied to the cluster-autoscaler when enabled", + "properties": { + "balanceSimilarNodeGroups": { + "description": "BalanceSimilarNodeGroups - Valid values are 'true' and 'false'. The default is false.", + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "expander": { + "description": "Expander - If not specified, the default is 'random'. See [expanders](https://github.com/kubernetes/autoscaler/blob/master/cluster-autoscaler/FAQ.md#what-are-expanders) for more information.", + "enum": [ + "least-waste", + "most-pods", + "priority", + "random" + ], + "type": "string" + }, + "maxEmptyBulkDelete": { + "description": "MaxEmptyBulkDelete - The default is 10.", + "type": "string" + }, + "maxGracefulTerminationSec": { + "description": "MaxGracefulTerminationSec - The default is 600.", + "pattern": "^(\\d+)$", + "type": "string" + }, + "maxNodeProvisionTime": { + "description": "MaxNodeProvisionTime - The default is '15m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported.", + "pattern": "^(\\d+)m$", + "type": "string" + }, + "maxTotalUnreadyPercentage": { + "description": "MaxTotalUnreadyPercentage - The default is 45. The maximum is 100 and the minimum is 0.", + "maxLength": 3, + "minLength": 1, + "pattern": "^(\\d+)$", + "type": "string" + }, + "newPodScaleUpDelay": { + "description": "NewPodScaleUpDelay - For scenarios like burst/batch scale where you don't want CA to act before the kubernetes scheduler could schedule all the pods, you can tell CA to ignore unscheduled pods before they're a certain age. The default is '0s'. Values must be an integer followed by a unit ('s' for seconds, 'm' for minutes, 'h' for hours, etc).", + "type": "string" + }, + "okTotalUnreadyCount": { + "description": "OkTotalUnreadyCount - This must be an integer. The default is 3.", + "pattern": "^(\\d+)$", + "type": "string" + }, + "scaleDownDelayAfterAdd": { + "description": "ScaleDownDelayAfterAdd - The default is '10m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported.", + "pattern": "^(\\d+)m$", + "type": "string" + }, + "scaleDownDelayAfterDelete": { + "description": "ScaleDownDelayAfterDelete - The default is the scan-interval. Values must be an integer followed by an 's'. No unit of time other than seconds (s) is supported.", + "pattern": "^(\\d+)s$", + "type": "string" + }, + "scaleDownDelayAfterFailure": { + "description": "ScaleDownDelayAfterFailure - The default is '3m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported.", + "pattern": "^(\\d+)m$", + "type": "string" + }, + "scaleDownUnneededTime": { + "description": "ScaleDownUnneededTime - The default is '10m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported.", + "pattern": "^(\\d+)m$", + "type": "string" + }, + "scaleDownUnreadyTime": { + "description": "ScaleDownUnreadyTime - The default is '20m'. Values must be an integer followed by an 'm'. No unit of time other than minutes (m) is supported.", + "pattern": "^(\\d+)m$", + "type": "string" + }, + "scaleDownUtilizationThreshold": { + "description": "ScaleDownUtilizationThreshold - The default is '0.5'.", + "type": "string" + }, + "scanInterval": { + "description": "ScanInterval - How often cluster is reevaluated for scale up or down. The default is '10s'.", + "pattern": "^(\\d+)s$", + "type": "string" + }, + "skipNodesWithLocalStorage": { + "description": "SkipNodesWithLocalStorage - The default is false.", + "enum": [ + "true", + "false" + ], + "type": "string" + }, + "skipNodesWithSystemPods": { + "description": "SkipNodesWithSystemPods - The default is true.", + "enum": [ + "true", + "false" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "azureEnvironment": { + "description": "AzureEnvironment is the name of the AzureCloud to be used.\nThe default value that would be used by most users is \"AzurePublicCloud\", other values are:\n- ChinaCloud: \"AzureChinaCloud\"\n- PublicCloud: \"AzurePublicCloud\"\n- USGovernmentCloud: \"AzureUSGovernmentCloud\"\n\n\nNote that values other than the default must also be accompanied by corresponding changes to the\naso-controller-settings Secret to configure ASO to refer to the non-Public cloud. ASO currently does\nnot support referring to multiple different clouds in a single installation. The following fields must\nbe defined in the Secret:\n- AZURE_AUTHORITY_HOST\n- AZURE_RESOURCE_MANAGER_ENDPOINT\n- AZURE_RESOURCE_MANAGER_AUDIENCE\n\n\nSee the [ASO docs] for more details.\n\n\n[ASO docs]: https://azure.github.io/azure-service-operator/guide/aso-controller-settings-options/", + "type": "string" + }, + "disableLocalAccounts": { + "description": "DisableLocalAccounts disables getting static credentials for this cluster when set. Expected to only be used for AAD clusters.", + "type": "boolean" + }, + "dnsServiceIP": { + "description": "DNSServiceIP is an IP address assigned to the Kubernetes DNS service.\nIt must be within the Kubernetes service address range specified in serviceCidr.\nImmutable.", + "type": "string" + }, + "enablePreviewFeatures": { + "description": "EnablePreviewFeatures enables preview features for the cluster.", + "type": "boolean" + }, + "extensions": { + "description": "Extensions is a list of AKS extensions to be installed on the cluster.", + "items": { + "description": "AKSExtension represents the configuration for an AKS cluster extension.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/aks/cluster-extensions", + "properties": { + "aksAssignedIdentityType": { + "description": "AKSAssignedIdentityType is the type of the AKS assigned identity.", + "enum": [ + "SystemAssigned", + "UserAssigned" + ], + "type": "string" + }, + "autoUpgradeMinorVersion": { + "default": true, + "description": "AutoUpgradeMinorVersion is a flag to note if this extension participates in auto upgrade of minor version, or not.", + "type": "boolean" + }, + "configurationSettings": { + "additionalProperties": { + "type": "string" + }, + "description": "ConfigurationSettings are the name-value pairs for configuring this extension.", + "type": "object" + }, + "extensionType": { + "description": "ExtensionType is the type of the Extension of which this resource is an instance.\nIt must be one of the Extension Types registered with Microsoft.KubernetesConfiguration by the Extension publisher.", + "type": "string" + }, + "identity": { + "description": "Identity is the identity type of the Extension resource in an AKS cluster.", + "enum": [ + "SystemAssigned" + ], + "type": "string" + }, + "name": { + "description": "Name is the name of the extension.", + "type": "string" + }, + "plan": { + "description": "Plan is the plan of the extension.", + "properties": { + "name": { + "description": "Name is the user-defined name of the 3rd Party Artifact that is being procured.", + "type": "string" + }, + "product": { + "description": "Product is the name of the 3rd Party artifact that is being procured.", + "type": "string" + }, + "promotionCode": { + "description": "PromotionCode is a publisher-provided promotion code as provisioned in Data Market for the said product/artifact.", + "type": "string" + }, + "publisher": { + "description": "Publisher is the name of the publisher of the 3rd Party Artifact that is being bought.", + "type": "string" + }, + "version": { + "description": "Version is the version of the plan.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "releaseTrain": { + "description": "ReleaseTrain is the release train this extension participates in for auto-upgrade (e.g. Stable, Preview, etc.)\nThis is only used if autoUpgradeMinorVersion is \u2018true\u2019.", + "type": "string" + }, + "scope": { + "description": "Scope is the scope at which this extension is enabled.", + "properties": { + "releaseNamespace": { + "description": "ReleaseNamespace is the namespace where the extension Release must be placed, for a Cluster-scoped extension.\nRequired for Cluster-scoped extensions.", + "type": "string" + }, + "scopeType": { + "description": "ScopeType is the scope of the extension. It can be either Cluster or Namespace, but not both.", + "enum": [ + "Cluster", + "Namespace" + ], + "type": "string" + }, + "targetNamespace": { + "description": "TargetNamespace is the namespace where the extension will be created for a Namespace-scoped extension.\nRequired for Namespace-scoped extensions.", + "type": "string" + } + }, + "required": [ + "scopeType" + ], + "type": "object", + "additionalProperties": false + }, + "version": { + "description": "Version is the version of the extension.", + "type": "string" + } + }, + "required": [ + "extensionType", + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + }, + "fleetsMember": { + "description": "FleetsMember is the spec for the fleet this cluster is a member of.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/templates/microsoft.containerservice/2023-03-15-preview/fleets/members", + "properties": { + "group": { + "description": "Group is the group this member belongs to for multi-cluster update management.", + "type": "string" + }, + "managerName": { + "description": "ManagerName is the name of the fleet manager.", + "type": "string" + }, + "managerResourceGroup": { + "description": "ManagerResourceGroup is the resource group of the fleet manager.", + "type": "string" + } + }, + "required": [ + "managerName", + "managerResourceGroup" + ], + "type": "object", + "additionalProperties": false + }, + "httpProxyConfig": { + "description": "HTTPProxyConfig is the HTTP proxy configuration for the cluster.\nImmutable.", + "properties": { + "httpProxy": { + "description": "HTTPProxy is the HTTP proxy server endpoint to use.", + "type": "string" + }, + "httpsProxy": { + "description": "HTTPSProxy is the HTTPS proxy server endpoint to use.", + "type": "string" + }, + "noProxy": { + "description": "NoProxy indicates the endpoints that should not go through proxy.", + "items": { + "type": "string" + }, + "type": "array" + }, + "trustedCa": { + "description": "TrustedCA is the alternative CA cert to use for connecting to proxy servers.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "identity": { + "description": "Identity configuration used by the AKS control plane.", + "properties": { + "type": { + "description": "Type - The Identity type to use.", + "enum": [ + "SystemAssigned", + "UserAssigned" + ], + "type": "string" + }, + "userAssignedIdentityResourceID": { + "description": "UserAssignedIdentityResourceID - Identity ARM resource ID when using user-assigned identity.", + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "identityRef": { + "description": "IdentityRef is a reference to a AzureClusterIdentity to be used when reconciling this cluster", + "properties": { + "apiVersion": { + "description": "API version of the referent.", + "type": "string" + }, + "fieldPath": { + "description": "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future.", + "type": "string" + }, + "kind": { + "description": "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "name": { + "description": "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names", + "type": "string" + }, + "namespace": { + "description": "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/", + "type": "string" + }, + "resourceVersion": { + "description": "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency", + "type": "string" + }, + "uid": { + "description": "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids", + "type": "string" + } + }, + "type": "object", + "x-kubernetes-map-type": "atomic", + "additionalProperties": false + }, + "kubeletUserAssignedIdentity": { + "description": "KubeletUserAssignedIdentity is the user-assigned identity for kubelet.\nFor authentication with Azure Container Registry.", + "type": "string" + }, + "loadBalancerProfile": { + "description": "LoadBalancerProfile is the profile of the cluster load balancer.", + "properties": { + "allocatedOutboundPorts": { + "description": "AllocatedOutboundPorts - Desired number of allocated SNAT ports per VM. Allowed values must be in the range of 0 to 64000 (inclusive). The default value is 0 which results in Azure dynamically allocating ports.", + "type": "integer" + }, + "idleTimeoutInMinutes": { + "description": "IdleTimeoutInMinutes - Desired outbound flow idle timeout in minutes. Allowed values must be in the range of 4 to 120 (inclusive). The default value is 30 minutes.", + "type": "integer" + }, + "managedOutboundIPs": { + "description": "ManagedOutboundIPs - Desired managed outbound IPs for the cluster load balancer.", + "type": "integer" + }, + "outboundIPPrefixes": { + "description": "OutboundIPPrefixes - Desired outbound IP Prefix resources for the cluster load balancer.", + "items": { + "type": "string" + }, + "type": "array" + }, + "outboundIPs": { + "description": "OutboundIPs - Desired outbound IP resources for the cluster load balancer.", + "items": { + "type": "string" + }, + "type": "array" + } + }, + "type": "object", + "additionalProperties": false + }, + "loadBalancerSKU": { + "default": "Standard", + "description": "LoadBalancerSKU is the SKU of the loadBalancer to be provisioned.\nImmutable.", + "enum": [ + "Basic", + "Standard" + ], + "type": "string" + }, + "location": { + "description": "Location is a string matching one of the canonical Azure region names. Examples: \"westus2\", \"eastus\".", + "type": "string" + }, + "machineTemplate": { + "description": "MachineTemplate contains information about how machines\nshould be shaped when creating or updating a control plane.\nFor the AzureManagedControlPlaneTemplate, this field is used\nonly to fulfill the CAPI contract.", + "type": "object" + }, + "networkDataplane": { + "description": "NetworkDataplane is the dataplane used for building the Kubernetes network.", + "enum": [ + "azure", + "cilium" + ], + "type": "string" + }, + "networkPlugin": { + "description": "NetworkPlugin used for building Kubernetes network.", + "enum": [ + "azure", + "kubenet", + "none" + ], + "type": "string" + }, + "networkPluginMode": { + "description": "NetworkPluginMode is the mode the network plugin should use.\nAllowed value is \"overlay\".", + "enum": [ + "overlay" + ], + "type": "string" + }, + "networkPolicy": { + "description": "NetworkPolicy used for building Kubernetes network.", + "enum": [ + "azure", + "calico", + "cilium" + ], + "type": "string" + }, + "oidcIssuerProfile": { + "description": "OIDCIssuerProfile is the OIDC issuer profile of the Managed Cluster.", + "properties": { + "enabled": { + "description": "Enabled is whether the OIDC issuer is enabled.", + "type": "boolean" + } + }, + "type": "object", + "additionalProperties": false + }, + "outboundType": { + "description": "Outbound configuration used by Nodes.", + "enum": [ + "loadBalancer", + "managedNATGateway", + "userAssignedNATGateway", + "userDefinedRouting" + ], + "type": "string" + }, + "resourceGroupName": { + "description": "ResourceGroupName is the name of the Azure resource group for this AKS Cluster.\nImmutable.", + "type": "string" + }, + "securityProfile": { + "description": "SecurityProfile defines the security profile for cluster.", + "properties": { + "azureKeyVaultKms": { + "description": "AzureKeyVaultKms defines Azure Key Vault Management Services Profile for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables the Azure Key Vault key management service. The default is false.", + "type": "boolean" + }, + "keyID": { + "description": "KeyID defines the Identifier of Azure Key Vault key.\nWhen Azure Key Vault key management service is enabled, this field is required and must be a valid key identifier.", + "type": "string" + }, + "keyVaultNetworkAccess": { + "default": "Public", + "description": "KeyVaultNetworkAccess defines the network access of key vault.\nThe possible values are Public and Private.\nPublic means the key vault allows public access from all networks.\nPrivate means the key vault disables public access and enables private link. The default value is Public.", + "type": "string" + }, + "keyVaultResourceID": { + "description": "KeyVaultResourceID is the Resource ID of key vault. When keyVaultNetworkAccess is Private, this field is required and must be a valid resource ID.", + "type": "string" + } + }, + "required": [ + "enabled", + "keyID" + ], + "type": "object", + "additionalProperties": false + }, + "defender": { + "description": "Defender settings for the security profile.", + "properties": { + "logAnalyticsWorkspaceResourceID": { + "description": "LogAnalyticsWorkspaceResourceID is the ID of the Log Analytics workspace that has to be associated with Microsoft Defender.\nWhen Microsoft Defender is enabled, this field is required and must be a valid workspace resource ID.", + "type": "string" + }, + "securityMonitoring": { + "description": "SecurityMonitoring profile defines the Microsoft Defender threat detection for Cloud settings for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables Defender threat detection", + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "logAnalyticsWorkspaceResourceID", + "securityMonitoring" + ], + "type": "object", + "additionalProperties": false + }, + "imageCleaner": { + "description": "ImageCleaner settings for the security profile.", + "properties": { + "enabled": { + "description": "Enabled enables the Image Cleaner on AKS cluster.", + "type": "boolean" + }, + "intervalHours": { + "description": "IntervalHours defines Image Cleaner scanning interval in hours. Default value is 24 hours.", + "maximum": 2160, + "minimum": 24, + "type": "integer" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + }, + "workloadIdentity": { + "description": "Workloadidentity enables Kubernetes applications to access Azure cloud resources securely with Azure AD. Ensure to enable OIDC issuer while enabling Workload Identity", + "properties": { + "enabled": { + "description": "Enabled enables the workload identity.", + "type": "boolean" + } + }, + "required": [ + "enabled" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object", + "additionalProperties": false + }, + "sku": { + "description": "SKU is the SKU of the AKS to be provisioned.", + "properties": { + "tier": { + "description": "Tier - Tier of an AKS cluster.", + "enum": [ + "Free", + "Paid", + "Standard" + ], + "type": "string" + } + }, + "required": [ + "tier" + ], + "type": "object", + "additionalProperties": false + }, + "subscriptionID": { + "description": "SubscriptionID is the GUID of the Azure subscription that owns this cluster.", + "type": "string" + }, + "version": { + "description": "Version defines the desired Kubernetes version.", + "minLength": 2, + "type": "string" + }, + "virtualNetwork": { + "description": "VirtualNetwork describes the virtual network for the AKS cluster. It will be created if it does not already exist.", + "properties": { + "cidrBlock": { + "type": "string" + }, + "name": { + "description": "Name is the name of the virtual network.", + "type": "string" + }, + "resourceGroup": { + "description": "ResourceGroup is the name of the Azure resource group for the VNet and Subnet.", + "type": "string" + }, + "subnet": { + "description": "ManagedControlPlaneSubnet describes a subnet for an AKS cluster.", + "properties": { + "cidrBlock": { + "type": "string" + }, + "name": { + "type": "string" + }, + "privateEndpoints": { + "description": "PrivateEndpoints is a slice of Virtual Network private endpoints to create for the subnets.", + "items": { + "description": "PrivateEndpointSpec configures an Azure Private Endpoint.", + "properties": { + "applicationSecurityGroups": { + "description": "ApplicationSecurityGroups specifies the Application security group in which the private endpoint IP configuration is included.", + "items": { + "type": "string" + }, + "type": "array" + }, + "customNetworkInterfaceName": { + "description": "CustomNetworkInterfaceName specifies the network interface name associated with the private endpoint.", + "type": "string" + }, + "location": { + "description": "Location specifies the region to create the private endpoint.", + "type": "string" + }, + "manualApproval": { + "description": "ManualApproval specifies if the connection approval needs to be done manually or not.\nSet it true when the network admin does not have access to approve connections to the remote resource.\nDefaults to false.", + "type": "boolean" + }, + "name": { + "description": "Name specifies the name of the private endpoint.", + "type": "string" + }, + "privateIPAddresses": { + "description": "PrivateIPAddresses specifies the IP addresses for the network interface associated with the private endpoint.\nThey have to be part of the subnet where the private endpoint is linked.", + "items": { + "type": "string" + }, + "type": "array" + }, + "privateLinkServiceConnections": { + "description": "PrivateLinkServiceConnections specifies Private Link Service Connections of the private endpoint.", + "items": { + "description": "PrivateLinkServiceConnection defines the specification for a private link service connection associated with a private endpoint.", + "properties": { + "groupIDs": { + "description": "GroupIDs specifies the ID(s) of the group(s) obtained from the remote resource that this private endpoint should connect to.", + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "description": "Name specifies the name of the private link service.", + "type": "string" + }, + "privateLinkServiceID": { + "description": "PrivateLinkServiceID specifies the resource ID of the private link service.", + "type": "string" + }, + "requestMessage": { + "description": "RequestMessage specifies a message passed to the owner of the remote resource with the private endpoint connection request.", + "maxLength": 140, + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "required": [ + "name" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "name" + ], + "x-kubernetes-list-type": "map" + }, + "serviceEndpoints": { + "description": "ServiceEndpoints is a slice of Virtual Network service endpoints to enable for the subnets.", + "items": { + "description": "ServiceEndpointSpec configures an Azure Service Endpoint.", + "properties": { + "locations": { + "items": { + "type": "string" + }, + "type": "array" + }, + "service": { + "type": "string" + } + }, + "required": [ + "locations", + "service" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array", + "x-kubernetes-list-map-keys": [ + "service" + ], + "x-kubernetes-list-type": "map" + } + }, + "required": [ + "cidrBlock", + "name" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "cidrBlock", + "name" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "identityRef", + "location", + "resourceGroupName", + "version" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "spec" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +} diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedmachinepool_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedmachinepool_v1beta1.json index 116aa958..2f4f6893 100644 --- a/infrastructure.cluster.x-k8s.io/azuremanagedmachinepool_v1beta1.json +++ b/infrastructure.cluster.x-k8s.io/azuremanagedmachinepool_v1beta1.json @@ -2,11 +2,11 @@ "description": "AzureManagedMachinePool is the Schema for the azuremanagedmachinepools API.", "properties": { "apiVersion": { - "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", "type": "string" }, "kind": { - "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", "type": "string" }, "metadata": { @@ -19,29 +19,44 @@ "additionalProperties": { "type": "string" }, - "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the Azure provider, in addition to the ones added by default.", + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the\nAzure provider, in addition to the ones added by default.", "type": "object" }, + "asoManagedClustersAgentPoolPatches": { + "description": "ASOManagedClustersAgentPoolPatches defines JSON merge patches to be applied to the generated ASO ManagedClustersAgentPool resource.\nWARNING: This is meant to be used sparingly to enable features for development and testing that are not\notherwise represented in the CAPZ API. Misconfiguration that conflicts with CAPZ's normal mode of\noperation is possible.", + "items": { + "type": "string" + }, + "type": "array" + }, "availabilityZones": { - "description": "AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.", + "description": "AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.\nImmutable.", "items": { "type": "string" }, "type": "array" }, + "enableEncryptionAtHost": { + "description": "EnableEncryptionAtHost indicates whether host encryption is enabled on the node pool.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/aks/enable-host-encryption", + "type": "boolean" + }, + "enableFIPS": { + "description": "EnableFIPS indicates whether FIPS is enabled on the node pool.\nImmutable.", + "type": "boolean" + }, "enableNodePublicIP": { - "description": "EnableNodePublicIP controls whether or not nodes in the pool each have a public IP address.", + "description": "EnableNodePublicIP controls whether or not nodes in the pool each have a public IP address.\nImmutable.", "type": "boolean" }, "enableUltraSSD": { - "description": "EnableUltraSSD enables the storage type UltraSSD_LRS for the agent pool.", + "description": "EnableUltraSSD enables the storage type UltraSSD_LRS for the agent pool.\nImmutable.", "type": "boolean" }, "kubeletConfig": { - "description": "KubeletConfig specifies the kubelet configurations for nodes.", + "description": "KubeletConfig specifies the kubelet configurations for nodes.\nImmutable.", "properties": { "allowedUnsafeSysctls": { - "description": "AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`).", + "description": "AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`).\nValid values match `kernel.shm*`, `kernel.msg*`, `kernel.sem`, `fs.mqueue.*`, or `net.*`.", "items": { "type": "string" }, @@ -49,13 +64,11 @@ }, "containerLogMaxFiles": { "description": "ContainerLogMaxFiles - The maximum number of container log files that can be present for a container. The number must be \u2265 2.", - "format": "int32", "minimum": 2, "type": "integer" }, "containerLogMaxSizeMB": { - "description": "ContainerLogMaxSizeMB - The maximum size (e.g. 10Mi) of container log file before it is rotated.", - "format": "int32", + "description": "ContainerLogMaxSizeMB - The maximum size in MB of a container log file before it is rotated.", "type": "integer" }, "cpuCfsQuota": { @@ -63,7 +76,7 @@ "type": "boolean" }, "cpuCfsQuotaPeriod": { - "description": "CPUCfsQuotaPeriod - Sets CPU CFS quota period value.", + "description": "CPUCfsQuotaPeriod - Sets CPU CFS quota period value.\nMust end in \"ms\", e.g. \"100ms\"", "type": "string" }, "cpuManagerPolicy": { @@ -79,22 +92,19 @@ "type": "boolean" }, "imageGcHighThreshold": { - "description": "ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run.", - "format": "int32", + "description": "ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run.\nValid values are 0-100 (inclusive).", "maximum": 100, "minimum": 0, "type": "integer" }, "imageGcLowThreshold": { - "description": "ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run.", - "format": "int32", + "description": "ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run.\nValid values are 0-100 (inclusive) and must be less than `imageGcHighThreshold`.", "maximum": 100, "minimum": 0, "type": "integer" }, "podMaxPids": { - "description": "PodMaxPids - The maximum number of processes per pod.", - "format": "int32", + "description": "PodMaxPids - The maximum number of processes per pod.\nMust not exceed kernel PID limit. -1 disables the limit.", "minimum": -1, "type": "integer" }, @@ -113,7 +123,7 @@ "additionalProperties": false }, "kubeletDiskType": { - "description": "KubeletDiskType specifies the kubelet disk type. Default to OS. Possible values include: 'OS', 'Temporary'. Requires kubeletDisk preview feature to be set.", + "description": "KubeletDiskType specifies the kubelet disk type. Default to OS. Possible values include: 'OS', 'Temporary'.\nRequires Microsoft.ContainerService/KubeletDisk preview feature to be set.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#kubeletdisktype", "enum": [ "OS", "Temporary" @@ -121,11 +131,10 @@ "type": "string" }, "linuxOSConfig": { - "description": "LinuxOSConfig specifies the custom Linux OS settings and configurations.", + "description": "LinuxOSConfig specifies the custom Linux OS settings and configurations.\nImmutable.", "properties": { "swapFileSizeMB": { - "description": "SwapFileSizeMB specifies size in MB of a swap file will be created on the agent nodes from this node pool. Max value of SwapFileSizeMB should be the size of temporary disk(/dev/sdb). Refer: https://learn.microsoft.com/en-us/azure/virtual-machines/managed-disks-overview#temporary-disk", - "format": "int32", + "description": "SwapFileSizeMB specifies size in MB of a swap file will be created on the agent nodes from this node pool.\nMax value of SwapFileSizeMB should be the size of temporary disk(/dev/sdb).\nMust be at least 1.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk", "minimum": 1, "type": "integer" }, @@ -133,191 +142,165 @@ "description": "Sysctl specifies the settings for Linux agent nodes.", "properties": { "fsAioMaxNr": { - "description": "FsAioMaxNr specifies the maximum number of system-wide asynchronous io requests. Maps to fs.aio-max-nr.", - "format": "int32", + "description": "FsAioMaxNr specifies the maximum number of system-wide asynchronous io requests.\nValid values are 65536-6553500 (inclusive).\nMaps to fs.aio-max-nr.", "maximum": 6553500, "minimum": 65536, "type": "integer" }, "fsFileMax": { - "description": "FsFileMax specifies the max number of file-handles that the Linux kernel will allocate, by increasing increases the maximum number of open files permitted. Maps to fs.file-max.", - "format": "int32", + "description": "FsFileMax specifies the max number of file-handles that the Linux kernel will allocate, by increasing increases the maximum number of open files permitted.\nValid values are 8192-12000500 (inclusive).\nMaps to fs.file-max.", "maximum": 12000500, "minimum": 8192, "type": "integer" }, "fsInotifyMaxUserWatches": { - "description": "FsInotifyMaxUserWatches specifies the number of file watches allowed by the system. Each watch is roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes on a 64-bit kernel. Maps to fs.inotify.max_user_watches.", - "format": "int32", + "description": "FsInotifyMaxUserWatches specifies the number of file watches allowed by the system. Each watch is roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes on a 64-bit kernel.\nValid values are 781250-2097152 (inclusive).\nMaps to fs.inotify.max_user_watches.", "maximum": 2097152, "minimum": 781250, "type": "integer" }, "fsNrOpen": { - "description": "FsNrOpen specifies the maximum number of file-handles a process can allocate. Maps to fs.nr_open.", - "format": "int32", + "description": "FsNrOpen specifies the maximum number of file-handles a process can allocate.\nValid values are 8192-20000500 (inclusive).\nMaps to fs.nr_open.", "maximum": 20000500, "minimum": 8192, "type": "integer" }, "kernelThreadsMax": { - "description": "KernelThreadsMax specifies the maximum number of all threads that can be created. Maps to kernel.threads-max.", - "format": "int32", + "description": "KernelThreadsMax specifies the maximum number of all threads that can be created.\nValid values are 20-513785 (inclusive).\nMaps to kernel.threads-max.", "maximum": 513785, "minimum": 20, "type": "integer" }, "netCoreNetdevMaxBacklog": { - "description": "NetCoreNetdevMaxBacklog specifies maximum number of packets, queued on the INPUT side, when the interface receives packets faster than kernel can process them. Maps to net.core.netdev_max_backlog.", - "format": "int32", + "description": "NetCoreNetdevMaxBacklog specifies maximum number of packets, queued on the INPUT side, when the interface receives packets faster than kernel can process them.\nValid values are 1000-3240000 (inclusive).\nMaps to net.core.netdev_max_backlog.", "maximum": 3240000, "minimum": 1000, "type": "integer" }, "netCoreOptmemMax": { - "description": "NetCoreOptmemMax specifies the maximum ancillary buffer size (option memory buffer) allowed per socket. Socket option memory is used in a few cases to store extra structures relating to usage of the socket. Maps to net.core.optmem_max.", - "format": "int32", + "description": "NetCoreOptmemMax specifies the maximum ancillary buffer size (option memory buffer) allowed per socket.\nSocket option memory is used in a few cases to store extra structures relating to usage of the socket.\nValid values are 20480-4194304 (inclusive).\nMaps to net.core.optmem_max.", "maximum": 4194304, "minimum": 20480, "type": "integer" }, "netCoreRmemDefault": { - "description": "NetCoreRmemDefault specifies the default receive socket buffer size in bytes. Maps to net.core.rmem_default.", - "format": "int32", + "description": "NetCoreRmemDefault specifies the default receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_default.", "maximum": 134217728, "minimum": 212992, "type": "integer" }, "netCoreRmemMax": { - "description": "NetCoreRmemMax specifies the maximum receive socket buffer size in bytes. Maps to net.core.rmem_max.", - "format": "int32", + "description": "NetCoreRmemMax specifies the maximum receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_max.", "maximum": 134217728, "minimum": 212992, "type": "integer" }, "netCoreSomaxconn": { - "description": "NetCoreSomaxconn specifies maximum number of connection requests that can be queued for any given listening socket. An upper limit for the value of the backlog parameter passed to the listen(2)(https://man7.org/linux/man-pages/man2/listen.2.html) function. If the backlog argument is greater than the somaxconn, then it's silently truncated to this limit. Maps to net.core.somaxconn.", - "format": "int32", + "description": "NetCoreSomaxconn specifies maximum number of connection requests that can be queued for any given listening socket.\nAn upper limit for the value of the backlog parameter passed to the listen(2)(https://man7.org/linux/man-pages/man2/listen.2.html) function.\nIf the backlog argument is greater than the somaxconn, then it's silently truncated to this limit.\nValid values are 4096-3240000 (inclusive).\nMaps to net.core.somaxconn.", "maximum": 3240000, "minimum": 4096, "type": "integer" }, "netCoreWmemDefault": { - "description": "NetCoreWmemDefault specifies the default send socket buffer size in bytes. Maps to net.core.wmem_default.", - "format": "int32", + "description": "NetCoreWmemDefault specifies the default send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_default.", "maximum": 134217728, "minimum": 212992, "type": "integer" }, "netCoreWmemMax": { - "description": "NetCoreWmemMax specifies the maximum send socket buffer size in bytes. Maps to net.core.wmem_max.", - "format": "int32", + "description": "NetCoreWmemMax specifies the maximum send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_max.", "maximum": 134217728, "minimum": 212992, "type": "integer" }, "netIpv4IPLocalPortRange": { - "description": "NetIpv4IPLocalPortRange is used by TCP and UDP traffic to choose the local port on the agent node. PortRange should be specified in the format \"first last\". First, being an integer, must be between [1024 - 60999]. Last, being an integer, must be between [32768 - 65000]. Maps to net.ipv4.ip_local_port_range.", + "description": "NetIpv4IPLocalPortRange is used by TCP and UDP traffic to choose the local port on the agent node.\nPortRange should be specified in the format \"first last\".\nFirst, being an integer, must be between [1024 - 60999].\nLast, being an integer, must be between [32768 - 65000].\nMaps to net.ipv4.ip_local_port_range.", "type": "string" }, "netIpv4NeighDefaultGcThresh1": { - "description": "NetIpv4NeighDefaultGcThresh1 specifies the minimum number of entries that may be in the ARP cache. Garbage collection won't be triggered if the number of entries is below this setting. Maps to net.ipv4.neigh.default.gc_thresh1.", - "format": "int32", + "description": "NetIpv4NeighDefaultGcThresh1 specifies the minimum number of entries that may be in the ARP cache.\nGarbage collection won't be triggered if the number of entries is below this setting.\nValid values are 128-80000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh1.", "maximum": 80000, "minimum": 128, "type": "integer" }, "netIpv4NeighDefaultGcThresh2": { - "description": "NetIpv4NeighDefaultGcThresh2 specifies soft maximum number of entries that may be in the ARP cache. ARP garbage collection will be triggered about 5 seconds after reaching this soft maximum. Maps to net.ipv4.neigh.default.gc_thresh2.", - "format": "int32", + "description": "NetIpv4NeighDefaultGcThresh2 specifies soft maximum number of entries that may be in the ARP cache.\nARP garbage collection will be triggered about 5 seconds after reaching this soft maximum.\nValid values are 512-90000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh2.", "maximum": 90000, "minimum": 512, "type": "integer" }, "netIpv4NeighDefaultGcThresh3": { - "description": "NetIpv4NeighDefaultGcThresh3 specified hard maximum number of entries in the ARP cache. Maps to net.ipv4.neigh.default.gc_thresh3.", - "format": "int32", + "description": "NetIpv4NeighDefaultGcThresh3 specified hard maximum number of entries in the ARP cache.\nValid values are 1024-100000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh3.", "maximum": 100000, "minimum": 1024, "type": "integer" }, "netIpv4TCPFinTimeout": { - "description": "NetIpv4TCPFinTimeout specifies the length of time an orphaned connection will remain in the FIN_WAIT_2 state before it's aborted at the local end. Maps to net.ipv4.tcp_fin_timeout.", - "format": "int32", + "description": "NetIpv4TCPFinTimeout specifies the length of time an orphaned connection will remain in the FIN_WAIT_2 state before it's aborted at the local end.\nValid values are 5-120 (inclusive).\nMaps to net.ipv4.tcp_fin_timeout.", "maximum": 120, "minimum": 5, "type": "integer" }, "netIpv4TCPKeepaliveProbes": { - "description": "NetIpv4TCPKeepaliveProbes specifies the number of keepalive probes TCP sends out, until it decides the connection is broken. Maps to net.ipv4.tcp_keepalive_probes.", - "format": "int32", + "description": "NetIpv4TCPKeepaliveProbes specifies the number of keepalive probes TCP sends out, until it decides the connection is broken.\nValid values are 1-15 (inclusive).\nMaps to net.ipv4.tcp_keepalive_probes.", "maximum": 15, "minimum": 1, "type": "integer" }, "netIpv4TCPKeepaliveTime": { - "description": "NetIpv4TCPKeepaliveTime specifies the rate at which TCP sends out a keepalive message when keepalive is enabled. Maps to net.ipv4.tcp_keepalive_time.", - "format": "int32", + "description": "NetIpv4TCPKeepaliveTime specifies the rate at which TCP sends out a keepalive message when keepalive is enabled.\nValid values are 30-432000 (inclusive).\nMaps to net.ipv4.tcp_keepalive_time.", "maximum": 432000, "minimum": 30, "type": "integer" }, "netIpv4TCPMaxSynBacklog": { - "description": "NetIpv4TCPMaxSynBacklog specifies the maximum number of queued connection requests that have still not received an acknowledgment from the connecting client. If this number is exceeded, the kernel will begin dropping requests. Maps to net.ipv4.tcp_max_syn_backlog.", - "format": "int32", + "description": "NetIpv4TCPMaxSynBacklog specifies the maximum number of queued connection requests that have still not received an acknowledgment from the connecting client.\nIf this number is exceeded, the kernel will begin dropping requests.\nValid values are 128-3240000 (inclusive).\nMaps to net.ipv4.tcp_max_syn_backlog.", "maximum": 3240000, "minimum": 128, "type": "integer" }, "netIpv4TCPMaxTwBuckets": { - "description": "NetIpv4TCPMaxTwBuckets specifies maximal number of timewait sockets held by system simultaneously. If this number is exceeded, time-wait socket is immediately destroyed and warning is printed. Maps to net.ipv4.tcp_max_tw_buckets.", - "format": "int32", + "description": "NetIpv4TCPMaxTwBuckets specifies maximal number of timewait sockets held by system simultaneously.\nIf this number is exceeded, time-wait socket is immediately destroyed and warning is printed.\nValid values are 8000-1440000 (inclusive).\nMaps to net.ipv4.tcp_max_tw_buckets.", "maximum": 1440000, "minimum": 8000, "type": "integer" }, "netIpv4TCPTwReuse": { - "description": "NetIpv4TCPTwReuse is used to allow to reuse TIME-WAIT sockets for new connections when it's safe from protocol viewpoint. Maps to net.ipv4.tcp_tw_reuse.", + "description": "NetIpv4TCPTwReuse is used to allow to reuse TIME-WAIT sockets for new connections when it's safe from protocol viewpoint.\nMaps to net.ipv4.tcp_tw_reuse.", "type": "boolean" }, "netIpv4TCPkeepaliveIntvl": { - "description": "NetIpv4TCPkeepaliveIntvl specifies the frequency of the probes sent out. Multiplied by tcpKeepaliveprobes, it makes up the time to kill a connection that isn't responding, after probes started. Maps to net.ipv4.tcp_keepalive_intvl.", - "format": "int32", + "description": "NetIpv4TCPkeepaliveIntvl specifies the frequency of the probes sent out.\nMultiplied by tcpKeepaliveprobes, it makes up the time to kill a connection that isn't responding, after probes started.\nValid values are 1-75 (inclusive).\nMaps to net.ipv4.tcp_keepalive_intvl.", "maximum": 75, "minimum": 1, "type": "integer" }, "netNetfilterNfConntrackBuckets": { - "description": "NetNetfilterNfConntrackBuckets specifies the size of hash table used by nf_conntrack module to record the established connection record of the TCP protocol. Maps to net.netfilter.nf_conntrack_buckets.", - "format": "int32", + "description": "NetNetfilterNfConntrackBuckets specifies the size of hash table used by nf_conntrack module to record the established connection record of the TCP protocol.\nValid values are 65536-147456 (inclusive).\nMaps to net.netfilter.nf_conntrack_buckets.", "maximum": 147456, "minimum": 65536, "type": "integer" }, "netNetfilterNfConntrackMax": { - "description": "NetNetfilterNfConntrackMax specifies the maximum number of connections supported by the nf_conntrack module or the size of connection tracking table. Maps to net.netfilter.nf_conntrack_max.", - "format": "int32", + "description": "NetNetfilterNfConntrackMax specifies the maximum number of connections supported by the nf_conntrack module or the size of connection tracking table.\nValid values are 131072-1048576 (inclusive).\nMaps to net.netfilter.nf_conntrack_max.", "maximum": 1048576, "minimum": 131072, "type": "integer" }, "vmMaxMapCount": { - "description": "VMMaxMapCount specifies the maximum number of memory map areas a process may have. Maps to vm.max_map_count.", - "format": "int32", + "description": "VMMaxMapCount specifies the maximum number of memory map areas a process may have.\nMaps to vm.max_map_count.\nValid values are 65530-262144 (inclusive).", "maximum": 262144, "minimum": 65530, "type": "integer" }, "vmSwappiness": { - "description": "VMSwappiness specifies aggressiveness of the kernel in swapping memory pages. Higher values will increase aggressiveness, lower values decrease the amount of swap. Maps to vm.swappiness.", - "format": "int32", + "description": "VMSwappiness specifies aggressiveness of the kernel in swapping memory pages.\nHigher values will increase aggressiveness, lower values decrease the amount of swap.\nValid values are 0-100 (inclusive).\nMaps to vm.swappiness.", "maximum": 100, "minimum": 0, "type": "integer" }, "vmVfsCachePressure": { - "description": "VMVfsCachePressure specifies the percentage value that controls tendency of the kernel to reclaim the memory, which is used for caching of directory and inode objects. Maps to vm.vfs_cache_pressure.", - "format": "int32", + "description": "VMVfsCachePressure specifies the percentage value that controls tendency of the kernel to reclaim the memory, which is used for caching of directory and inode objects.\nValid values are 1-500 (inclusive).\nMaps to vm.vfs_cache_pressure.", "maximum": 500, "minimum": 1, "type": "integer" @@ -327,7 +310,7 @@ "additionalProperties": false }, "transparentHugePageDefrag": { - "description": "TransparentHugePageDefrag specifies whether the kernel should make aggressive use of memory compaction to make more hugepages available. Refer to https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", + "description": "TransparentHugePageDefrag specifies whether the kernel should make aggressive use of memory compaction to make more hugepages available.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", "enum": [ "always", "defer", @@ -338,7 +321,7 @@ "type": "string" }, "transparentHugePageEnabled": { - "description": "TransparentHugePageEnabled specifies various modes of Transparent Hugepages. Refer to https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", + "description": "TransparentHugePageEnabled specifies various modes of Transparent Hugepages.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", "enum": [ "always", "madvise", @@ -351,12 +334,11 @@ "additionalProperties": false }, "maxPods": { - "description": "MaxPods specifies the kubelet --max-pods configuration for the node pool.", - "format": "int32", + "description": "MaxPods specifies the kubelet `--max-pods` configuration for the node pool.\nImmutable.\nSee also [AKS doc], [K8s doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/configure-azure-cni#configure-maximum---new-clusters\n[K8s doc]: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/", "type": "integer" }, "mode": { - "description": "Mode - represents mode of an agent pool. Possible values include: System, User.", + "description": "Mode represents the mode of an agent pool. Possible values include: System, User.", "enum": [ "System", "User" @@ -364,28 +346,27 @@ "type": "string" }, "name": { - "description": "Name - name of the agent pool. If not specified, CAPZ uses the name of the CR as the agent pool name.", + "description": "Name is the name of the agent pool. If not specified, CAPZ uses the name of the CR as the agent pool name.\nImmutable.", "type": "string" }, "nodeLabels": { "additionalProperties": { "type": "string" }, - "description": "Node labels - labels for all of the nodes present in node pool", + "description": "Node labels represent the labels for all of the nodes present in node pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-labels", "type": "object" }, "nodePublicIPPrefixID": { - "description": "NodePublicIPPrefixID specifies the public IP prefix resource ID which VM nodes should use IPs from.", + "description": "NodePublicIPPrefixID specifies the public IP prefix resource ID which VM nodes should use IPs from.\nImmutable.", "type": "string" }, "osDiskSizeGB": { - "description": "OSDiskSizeGB is the disk size for every machine in this agent pool. If you specify 0, it will apply the default osDisk size according to the vmSize specified.", - "format": "int32", + "description": "OSDiskSizeGB is the disk size for every machine in this agent pool.\nIf you specify 0, it will apply the default osDisk size according to the vmSize specified.\nImmutable.", "type": "integer" }, "osDiskType": { "default": "Managed", - "description": "OsDiskType specifies the OS disk type for each node in the pool. Allowed values are 'Ephemeral' and 'Managed'.", + "description": "OsDiskType specifies the OS disk type for each node in the pool. Allowed values are 'Ephemeral' and 'Managed' (default).\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/cluster-configuration#ephemeral-os", "enum": [ "Ephemeral", "Managed" @@ -393,7 +374,7 @@ "type": "string" }, "osType": { - "description": "OSType specifies the virtual machine operating system. Default to Linux. Possible values include: 'Linux', 'Windows'", + "description": "OSType specifies the virtual machine operating system. Default to Linux. Possible values include: 'Linux', 'Windows'.\n'Windows' requires the AzureManagedControlPlane's `spec.networkPlugin` to be `azure`.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#ostype", "enum": [ "Linux", "Windows" @@ -407,8 +388,17 @@ }, "type": "array" }, + "scaleDownMode": { + "default": "Delete", + "description": "ScaleDownMode affects the cluster autoscaler behavior. Default to Delete. Possible values include: 'Deallocate', 'Delete'", + "enum": [ + "Deallocate", + "Delete" + ], + "type": "string" + }, "scaleSetPriority": { - "description": "ScaleSetPriority specifies the ScaleSetPriority value. Default to Regular. Possible values include: 'Regular', 'Spot'", + "description": "ScaleSetPriority specifies the ScaleSetPriority value. Default to Regular. Possible values include: 'Regular', 'Spot'\nImmutable.", "enum": [ "Regular", "Spot" @@ -419,11 +409,11 @@ "description": "Scaling specifies the autoscaling parameters for the node pool.", "properties": { "maxSize": { - "format": "int32", + "description": "MaxSize is the maximum number of nodes for auto-scaling.", "type": "integer" }, "minSize": { - "format": "int32", + "description": "MinSize is the minimum number of nodes for auto-scaling.", "type": "integer" } }, @@ -431,11 +421,28 @@ "additionalProperties": false }, "sku": { - "description": "SKU is the size of the VMs in the node pool.", + "description": "SKU is the size of the VMs in the node pool.\nImmutable.", + "type": "string" + }, + "spotMaxPrice": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "SpotMaxPrice defines max price to pay for spot instance. Possible values are any decimal value greater than zero or -1.\nIf you set the max price to be -1, the VM won't be evicted based on price. The price for the VM will be the current price\nfor spot or the price for a standard VM, which ever is less, as long as there's capacity and quota available.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "subnetName": { + "description": "SubnetName specifies the Subnet where the MachinePool will be placed\nImmutable.", "type": "string" }, "taints": { - "description": "Taints specifies the taints for nodes present in this agent pool.", + "description": "Taints specifies the taints for nodes present in this agent pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-multiple-node-pools#setting-node-pool-taints", "items": { "description": "Taint represents a Kubernetes taint.", "properties": { @@ -484,20 +491,20 @@ "description": "Condition defines an observation of a Cluster API resource operational state.", "properties": { "lastTransitionTime": { - "description": "Last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.", + "description": "Last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when\nthe API field changed is acceptable.", "format": "date-time", "type": "string" }, "message": { - "description": "A human readable message indicating details about the transition. This field may be empty.", + "description": "A human readable message indicating details about the transition.\nThis field may be empty.", "type": "string" }, "reason": { - "description": "The reason for the condition's last transition in CamelCase. The specific API may choose whether or not this field is considered a guaranteed API. This field may not be empty.", + "description": "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty.", "type": "string" }, "severity": { - "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately understand the current situation and act accordingly. The Severity field MUST be set only when Status=False.", + "description": "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False.", "type": "string" }, "status": { @@ -505,7 +512,7 @@ "type": "string" }, "type": { - "description": "Type of condition in CamelCase or in foo.example.com/CamelCase. Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important.", + "description": "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important.", "type": "string" } }, @@ -520,15 +527,15 @@ "type": "array" }, "errorMessage": { - "description": "Any transient errors that occur during the reconciliation of Machines can be added as events to the Machine object and/or logged in the controller's output.", + "description": "Any transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.", "type": "string" }, "errorReason": { - "description": "Any transient errors that occur during the reconciliation of Machines can be added as events to the Machine object and/or logged in the controller's output.", + "description": "Any transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.", "type": "string" }, "longRunningOperationStates": { - "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the next reconciliation loop.", + "description": "LongRunningOperationStates saves the states for Azure long-running operations so they can be continued on the\nnext reconciliation loop.", "items": { "description": "Future contains the data needed for an Azure long-running operation to continue across reconcile loops.", "properties": { @@ -537,7 +544,7 @@ "type": "string" }, "name": { - "description": "Name is the name of the Azure resource. Together with the service name, this forms the unique identifier for the future.", + "description": "Name is the name of the Azure resource.\nTogether with the service name, this forms the unique identifier for the future.", "type": "string" }, "resourceGroup": { @@ -545,7 +552,7 @@ "type": "string" }, "serviceName": { - "description": "ServiceName is the name of the Azure service. Together with the name of the resource, this forms the unique identifier for the future.", + "description": "ServiceName is the name of the Azure service.\nTogether with the name of the resource, this forms the unique identifier for the future.", "type": "string" }, "type": { diff --git a/infrastructure.cluster.x-k8s.io/azuremanagedmachinepooltemplate_v1beta1.json b/infrastructure.cluster.x-k8s.io/azuremanagedmachinepooltemplate_v1beta1.json new file mode 100644 index 00000000..294aed4e --- /dev/null +++ b/infrastructure.cluster.x-k8s.io/azuremanagedmachinepooltemplate_v1beta1.json @@ -0,0 +1,500 @@ +{ + "description": "AzureManagedMachinePoolTemplate is the Schema for the AzureManagedMachinePoolTemplates API.", + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "metadata": { + "type": "object" + }, + "spec": { + "description": "AzureManagedMachinePoolTemplateSpec defines the desired state of AzureManagedMachinePoolTemplate.", + "properties": { + "template": { + "description": "AzureManagedMachinePoolTemplateResource describes the data needed to create an AzureManagedCluster from a template.", + "properties": { + "spec": { + "description": "AzureManagedMachinePoolTemplateResourceSpec specifies an Azure managed control plane template resource.", + "properties": { + "additionalTags": { + "additionalProperties": { + "type": "string" + }, + "description": "AdditionalTags is an optional set of tags to add to Azure resources managed by the\nAzure provider, in addition to the ones added by default.", + "type": "object" + }, + "asoManagedClustersAgentPoolPatches": { + "description": "ASOManagedClustersAgentPoolPatches defines JSON merge patches to be applied to the generated ASO ManagedClustersAgentPool resource.\nWARNING: This is meant to be used sparingly to enable features for development and testing that are not\notherwise represented in the CAPZ API. Misconfiguration that conflicts with CAPZ's normal mode of\noperation is possible.", + "items": { + "type": "string" + }, + "type": "array" + }, + "availabilityZones": { + "description": "AvailabilityZones - Availability zones for nodes. Must use VirtualMachineScaleSets AgentPoolType.\nImmutable.", + "items": { + "type": "string" + }, + "type": "array" + }, + "enableEncryptionAtHost": { + "description": "EnableEncryptionAtHost indicates whether host encryption is enabled on the node pool.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/en-us/azure/aks/enable-host-encryption", + "type": "boolean" + }, + "enableFIPS": { + "description": "EnableFIPS indicates whether FIPS is enabled on the node pool.\nImmutable.", + "type": "boolean" + }, + "enableNodePublicIP": { + "description": "EnableNodePublicIP controls whether or not nodes in the pool each have a public IP address.\nImmutable.", + "type": "boolean" + }, + "enableUltraSSD": { + "description": "EnableUltraSSD enables the storage type UltraSSD_LRS for the agent pool.\nImmutable.", + "type": "boolean" + }, + "kubeletConfig": { + "description": "KubeletConfig specifies the kubelet configurations for nodes.\nImmutable.", + "properties": { + "allowedUnsafeSysctls": { + "description": "AllowedUnsafeSysctls - Allowlist of unsafe sysctls or unsafe sysctl patterns (ending in `*`).\nValid values match `kernel.shm*`, `kernel.msg*`, `kernel.sem`, `fs.mqueue.*`, or `net.*`.", + "items": { + "type": "string" + }, + "type": "array" + }, + "containerLogMaxFiles": { + "description": "ContainerLogMaxFiles - The maximum number of container log files that can be present for a container. The number must be \u2265 2.", + "minimum": 2, + "type": "integer" + }, + "containerLogMaxSizeMB": { + "description": "ContainerLogMaxSizeMB - The maximum size in MB of a container log file before it is rotated.", + "type": "integer" + }, + "cpuCfsQuota": { + "description": "CPUCfsQuota - Enable CPU CFS quota enforcement for containers that specify CPU limits.", + "type": "boolean" + }, + "cpuCfsQuotaPeriod": { + "description": "CPUCfsQuotaPeriod - Sets CPU CFS quota period value.\nMust end in \"ms\", e.g. \"100ms\"", + "type": "string" + }, + "cpuManagerPolicy": { + "description": "CPUManagerPolicy - CPU Manager policy to use.", + "enum": [ + "none", + "static" + ], + "type": "string" + }, + "failSwapOn": { + "description": "FailSwapOn - If set to true it will make the Kubelet fail to start if swap is enabled on the node.", + "type": "boolean" + }, + "imageGcHighThreshold": { + "description": "ImageGcHighThreshold - The percent of disk usage after which image garbage collection is always run.\nValid values are 0-100 (inclusive).", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "imageGcLowThreshold": { + "description": "ImageGcLowThreshold - The percent of disk usage before which image garbage collection is never run.\nValid values are 0-100 (inclusive) and must be less than `imageGcHighThreshold`.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "podMaxPids": { + "description": "PodMaxPids - The maximum number of processes per pod.\nMust not exceed kernel PID limit. -1 disables the limit.", + "minimum": -1, + "type": "integer" + }, + "topologyManagerPolicy": { + "description": "TopologyManagerPolicy - Topology Manager policy to use.", + "enum": [ + "none", + "best-effort", + "restricted", + "single-numa-node" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "kubeletDiskType": { + "description": "KubeletDiskType specifies the kubelet disk type. Default to OS. Possible values include: 'OS', 'Temporary'.\nRequires Microsoft.ContainerService/KubeletDisk preview feature to be set.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#kubeletdisktype", + "enum": [ + "OS", + "Temporary" + ], + "type": "string" + }, + "linuxOSConfig": { + "description": "LinuxOSConfig specifies the custom Linux OS settings and configurations.\nImmutable.", + "properties": { + "swapFileSizeMB": { + "description": "SwapFileSizeMB specifies size in MB of a swap file will be created on the agent nodes from this node pool.\nMax value of SwapFileSizeMB should be the size of temporary disk(/dev/sdb).\nMust be at least 1.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk", + "minimum": 1, + "type": "integer" + }, + "sysctls": { + "description": "Sysctl specifies the settings for Linux agent nodes.", + "properties": { + "fsAioMaxNr": { + "description": "FsAioMaxNr specifies the maximum number of system-wide asynchronous io requests.\nValid values are 65536-6553500 (inclusive).\nMaps to fs.aio-max-nr.", + "maximum": 6553500, + "minimum": 65536, + "type": "integer" + }, + "fsFileMax": { + "description": "FsFileMax specifies the max number of file-handles that the Linux kernel will allocate, by increasing increases the maximum number of open files permitted.\nValid values are 8192-12000500 (inclusive).\nMaps to fs.file-max.", + "maximum": 12000500, + "minimum": 8192, + "type": "integer" + }, + "fsInotifyMaxUserWatches": { + "description": "FsInotifyMaxUserWatches specifies the number of file watches allowed by the system. Each watch is roughly 90 bytes on a 32-bit kernel, and roughly 160 bytes on a 64-bit kernel.\nValid values are 781250-2097152 (inclusive).\nMaps to fs.inotify.max_user_watches.", + "maximum": 2097152, + "minimum": 781250, + "type": "integer" + }, + "fsNrOpen": { + "description": "FsNrOpen specifies the maximum number of file-handles a process can allocate.\nValid values are 8192-20000500 (inclusive).\nMaps to fs.nr_open.", + "maximum": 20000500, + "minimum": 8192, + "type": "integer" + }, + "kernelThreadsMax": { + "description": "KernelThreadsMax specifies the maximum number of all threads that can be created.\nValid values are 20-513785 (inclusive).\nMaps to kernel.threads-max.", + "maximum": 513785, + "minimum": 20, + "type": "integer" + }, + "netCoreNetdevMaxBacklog": { + "description": "NetCoreNetdevMaxBacklog specifies maximum number of packets, queued on the INPUT side, when the interface receives packets faster than kernel can process them.\nValid values are 1000-3240000 (inclusive).\nMaps to net.core.netdev_max_backlog.", + "maximum": 3240000, + "minimum": 1000, + "type": "integer" + }, + "netCoreOptmemMax": { + "description": "NetCoreOptmemMax specifies the maximum ancillary buffer size (option memory buffer) allowed per socket.\nSocket option memory is used in a few cases to store extra structures relating to usage of the socket.\nValid values are 20480-4194304 (inclusive).\nMaps to net.core.optmem_max.", + "maximum": 4194304, + "minimum": 20480, + "type": "integer" + }, + "netCoreRmemDefault": { + "description": "NetCoreRmemDefault specifies the default receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_default.", + "maximum": 134217728, + "minimum": 212992, + "type": "integer" + }, + "netCoreRmemMax": { + "description": "NetCoreRmemMax specifies the maximum receive socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.rmem_max.", + "maximum": 134217728, + "minimum": 212992, + "type": "integer" + }, + "netCoreSomaxconn": { + "description": "NetCoreSomaxconn specifies maximum number of connection requests that can be queued for any given listening socket.\nAn upper limit for the value of the backlog parameter passed to the listen(2)(https://man7.org/linux/man-pages/man2/listen.2.html) function.\nIf the backlog argument is greater than the somaxconn, then it's silently truncated to this limit.\nValid values are 4096-3240000 (inclusive).\nMaps to net.core.somaxconn.", + "maximum": 3240000, + "minimum": 4096, + "type": "integer" + }, + "netCoreWmemDefault": { + "description": "NetCoreWmemDefault specifies the default send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_default.", + "maximum": 134217728, + "minimum": 212992, + "type": "integer" + }, + "netCoreWmemMax": { + "description": "NetCoreWmemMax specifies the maximum send socket buffer size in bytes.\nValid values are 212992-134217728 (inclusive).\nMaps to net.core.wmem_max.", + "maximum": 134217728, + "minimum": 212992, + "type": "integer" + }, + "netIpv4IPLocalPortRange": { + "description": "NetIpv4IPLocalPortRange is used by TCP and UDP traffic to choose the local port on the agent node.\nPortRange should be specified in the format \"first last\".\nFirst, being an integer, must be between [1024 - 60999].\nLast, being an integer, must be between [32768 - 65000].\nMaps to net.ipv4.ip_local_port_range.", + "type": "string" + }, + "netIpv4NeighDefaultGcThresh1": { + "description": "NetIpv4NeighDefaultGcThresh1 specifies the minimum number of entries that may be in the ARP cache.\nGarbage collection won't be triggered if the number of entries is below this setting.\nValid values are 128-80000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh1.", + "maximum": 80000, + "minimum": 128, + "type": "integer" + }, + "netIpv4NeighDefaultGcThresh2": { + "description": "NetIpv4NeighDefaultGcThresh2 specifies soft maximum number of entries that may be in the ARP cache.\nARP garbage collection will be triggered about 5 seconds after reaching this soft maximum.\nValid values are 512-90000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh2.", + "maximum": 90000, + "minimum": 512, + "type": "integer" + }, + "netIpv4NeighDefaultGcThresh3": { + "description": "NetIpv4NeighDefaultGcThresh3 specified hard maximum number of entries in the ARP cache.\nValid values are 1024-100000 (inclusive).\nMaps to net.ipv4.neigh.default.gc_thresh3.", + "maximum": 100000, + "minimum": 1024, + "type": "integer" + }, + "netIpv4TCPFinTimeout": { + "description": "NetIpv4TCPFinTimeout specifies the length of time an orphaned connection will remain in the FIN_WAIT_2 state before it's aborted at the local end.\nValid values are 5-120 (inclusive).\nMaps to net.ipv4.tcp_fin_timeout.", + "maximum": 120, + "minimum": 5, + "type": "integer" + }, + "netIpv4TCPKeepaliveProbes": { + "description": "NetIpv4TCPKeepaliveProbes specifies the number of keepalive probes TCP sends out, until it decides the connection is broken.\nValid values are 1-15 (inclusive).\nMaps to net.ipv4.tcp_keepalive_probes.", + "maximum": 15, + "minimum": 1, + "type": "integer" + }, + "netIpv4TCPKeepaliveTime": { + "description": "NetIpv4TCPKeepaliveTime specifies the rate at which TCP sends out a keepalive message when keepalive is enabled.\nValid values are 30-432000 (inclusive).\nMaps to net.ipv4.tcp_keepalive_time.", + "maximum": 432000, + "minimum": 30, + "type": "integer" + }, + "netIpv4TCPMaxSynBacklog": { + "description": "NetIpv4TCPMaxSynBacklog specifies the maximum number of queued connection requests that have still not received an acknowledgment from the connecting client.\nIf this number is exceeded, the kernel will begin dropping requests.\nValid values are 128-3240000 (inclusive).\nMaps to net.ipv4.tcp_max_syn_backlog.", + "maximum": 3240000, + "minimum": 128, + "type": "integer" + }, + "netIpv4TCPMaxTwBuckets": { + "description": "NetIpv4TCPMaxTwBuckets specifies maximal number of timewait sockets held by system simultaneously.\nIf this number is exceeded, time-wait socket is immediately destroyed and warning is printed.\nValid values are 8000-1440000 (inclusive).\nMaps to net.ipv4.tcp_max_tw_buckets.", + "maximum": 1440000, + "minimum": 8000, + "type": "integer" + }, + "netIpv4TCPTwReuse": { + "description": "NetIpv4TCPTwReuse is used to allow to reuse TIME-WAIT sockets for new connections when it's safe from protocol viewpoint.\nMaps to net.ipv4.tcp_tw_reuse.", + "type": "boolean" + }, + "netIpv4TCPkeepaliveIntvl": { + "description": "NetIpv4TCPkeepaliveIntvl specifies the frequency of the probes sent out.\nMultiplied by tcpKeepaliveprobes, it makes up the time to kill a connection that isn't responding, after probes started.\nValid values are 1-75 (inclusive).\nMaps to net.ipv4.tcp_keepalive_intvl.", + "maximum": 75, + "minimum": 1, + "type": "integer" + }, + "netNetfilterNfConntrackBuckets": { + "description": "NetNetfilterNfConntrackBuckets specifies the size of hash table used by nf_conntrack module to record the established connection record of the TCP protocol.\nValid values are 65536-147456 (inclusive).\nMaps to net.netfilter.nf_conntrack_buckets.", + "maximum": 147456, + "minimum": 65536, + "type": "integer" + }, + "netNetfilterNfConntrackMax": { + "description": "NetNetfilterNfConntrackMax specifies the maximum number of connections supported by the nf_conntrack module or the size of connection tracking table.\nValid values are 131072-1048576 (inclusive).\nMaps to net.netfilter.nf_conntrack_max.", + "maximum": 1048576, + "minimum": 131072, + "type": "integer" + }, + "vmMaxMapCount": { + "description": "VMMaxMapCount specifies the maximum number of memory map areas a process may have.\nMaps to vm.max_map_count.\nValid values are 65530-262144 (inclusive).", + "maximum": 262144, + "minimum": 65530, + "type": "integer" + }, + "vmSwappiness": { + "description": "VMSwappiness specifies aggressiveness of the kernel in swapping memory pages.\nHigher values will increase aggressiveness, lower values decrease the amount of swap.\nValid values are 0-100 (inclusive).\nMaps to vm.swappiness.", + "maximum": 100, + "minimum": 0, + "type": "integer" + }, + "vmVfsCachePressure": { + "description": "VMVfsCachePressure specifies the percentage value that controls tendency of the kernel to reclaim the memory, which is used for caching of directory and inode objects.\nValid values are 1-500 (inclusive).\nMaps to vm.vfs_cache_pressure.", + "maximum": 500, + "minimum": 1, + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "transparentHugePageDefrag": { + "description": "TransparentHugePageDefrag specifies whether the kernel should make aggressive use of memory compaction to make more hugepages available.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", + "enum": [ + "always", + "defer", + "defer+madvise", + "madvise", + "never" + ], + "type": "string" + }, + "transparentHugePageEnabled": { + "description": "TransparentHugePageEnabled specifies various modes of Transparent Hugepages.\nSee also [Linux doc].\n\n\n[Linux doc]: https://www.kernel.org/doc/html/latest/admin-guide/mm/transhuge.html#admin-guide-transhuge for more details.", + "enum": [ + "always", + "madvise", + "never" + ], + "type": "string" + } + }, + "type": "object", + "additionalProperties": false + }, + "maxPods": { + "description": "MaxPods specifies the kubelet `--max-pods` configuration for the node pool.\nImmutable.\nSee also [AKS doc], [K8s doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/configure-azure-cni#configure-maximum---new-clusters\n[K8s doc]: https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/", + "type": "integer" + }, + "mode": { + "description": "Mode represents the mode of an agent pool. Possible values include: System, User.", + "enum": [ + "System", + "User" + ], + "type": "string" + }, + "name": { + "description": "Name is the name of the agent pool. If not specified, CAPZ uses the name of the CR as the agent pool name.\nImmutable.", + "type": "string" + }, + "nodeLabels": { + "additionalProperties": { + "type": "string" + }, + "description": "Node labels represent the labels for all of the nodes present in node pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-labels", + "type": "object" + }, + "nodePublicIPPrefixID": { + "description": "NodePublicIPPrefixID specifies the public IP prefix resource ID which VM nodes should use IPs from.\nImmutable.", + "type": "string" + }, + "osDiskSizeGB": { + "description": "OSDiskSizeGB is the disk size for every machine in this agent pool.\nIf you specify 0, it will apply the default osDisk size according to the vmSize specified.\nImmutable.", + "type": "integer" + }, + "osDiskType": { + "default": "Managed", + "description": "OsDiskType specifies the OS disk type for each node in the pool. Allowed values are 'Ephemeral' and 'Managed' (default).\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/cluster-configuration#ephemeral-os", + "enum": [ + "Ephemeral", + "Managed" + ], + "type": "string" + }, + "osType": { + "description": "OSType specifies the virtual machine operating system. Default to Linux. Possible values include: 'Linux', 'Windows'.\n'Windows' requires the AzureManagedControlPlane's `spec.networkPlugin` to be `azure`.\nImmutable.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/rest/api/aks/agent-pools/create-or-update?tabs=HTTP#ostype", + "enum": [ + "Linux", + "Windows" + ], + "type": "string" + }, + "scaleDownMode": { + "default": "Delete", + "description": "ScaleDownMode affects the cluster autoscaler behavior. Default to Delete. Possible values include: 'Deallocate', 'Delete'", + "enum": [ + "Deallocate", + "Delete" + ], + "type": "string" + }, + "scaleSetPriority": { + "description": "ScaleSetPriority specifies the ScaleSetPriority value. Default to Regular. Possible values include: 'Regular', 'Spot'\nImmutable.", + "enum": [ + "Regular", + "Spot" + ], + "type": "string" + }, + "scaling": { + "description": "Scaling specifies the autoscaling parameters for the node pool.", + "properties": { + "maxSize": { + "description": "MaxSize is the maximum number of nodes for auto-scaling.", + "type": "integer" + }, + "minSize": { + "description": "MinSize is the minimum number of nodes for auto-scaling.", + "type": "integer" + } + }, + "type": "object", + "additionalProperties": false + }, + "sku": { + "description": "SKU is the size of the VMs in the node pool.\nImmutable.", + "type": "string" + }, + "spotMaxPrice": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "string" + } + ], + "description": "SpotMaxPrice defines max price to pay for spot instance. Possible values are any decimal value greater than zero or -1.\nIf you set the max price to be -1, the VM won't be evicted based on price. The price for the VM will be the current price\nfor spot or the price for a standard VM, which ever is less, as long as there's capacity and quota available.", + "pattern": "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$", + "x-kubernetes-int-or-string": true + }, + "subnetName": { + "description": "SubnetName specifies the Subnet where the MachinePool will be placed\nImmutable.", + "type": "string" + }, + "taints": { + "description": "Taints specifies the taints for nodes present in this agent pool.\nSee also [AKS doc].\n\n\n[AKS doc]: https://learn.microsoft.com/azure/aks/use-multiple-node-pools#setting-node-pool-taints", + "items": { + "description": "Taint represents a Kubernetes taint.", + "properties": { + "effect": { + "description": "Effect specifies the effect for the taint", + "enum": [ + "NoSchedule", + "NoExecute", + "PreferNoSchedule" + ], + "type": "string" + }, + "key": { + "description": "Key is the key of the taint", + "type": "string" + }, + "value": { + "description": "Value is the value of the taint", + "type": "string" + } + }, + "required": [ + "effect", + "key", + "value" + ], + "type": "object", + "additionalProperties": false + }, + "type": "array" + } + }, + "required": [ + "mode", + "sku" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "spec" + ], + "type": "object", + "additionalProperties": false + } + }, + "required": [ + "template" + ], + "type": "object", + "additionalProperties": false + } + }, + "type": "object" +}