Comments (7)
clusters.cluster.x-k8s.io schema
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
cert-manager.io/inject-ca-from: capi-system/capi-serving-cert
controller-gen.kubebuilder.io/version: v0.7.0
creationTimestamp: "2021-11-18T15:55:11Z"
generation: 2
labels:
cluster.x-k8s.io/provider: cluster-api
clusterctl.cluster.x-k8s.io: ""
name: clusters.cluster.x-k8s.io
resourceVersion: "2210"
uid: 5fcaf00c-19be-426c-a063-e08c81b803e2
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURXVENDQWtHZ0F3SUJBZ0lRQisyRnBsMjNFd3E4WmRndXNpa0wwVEFOQmdrcWhraUc5dzBCQVFzRkFEQWsKTVNJd0lBWURWUVFLRXhsck9ITXRjMmxuTFdOc2RYTjBaWEl0YkdsbVpXTjVZMnhsTUI0WERUSXhNVEV4T0RFMQpOVFV5TVZvWERUSXlNREl4TmpFMU5UVXlNVm93SkRFaU1DQUdBMVVFQ2hNWmF6aHpMWE5wWnkxamJIVnpkR1Z5CkxXeHBabVZqZVdOc1pUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU5YZUU3bkUKZUJRL3RWendWTnNjOVVIRDZndHVSYzIwUTVDS0dlOTFPNHY5VUtMNUhkMjdCL1ErZlVCOGhSWXAxMlN2aEZFUgppTUZtR0d2VlBvZkQ4TDV1VVlUVlV3d01IVFVZN1l2dWVhS1RmUXZDMmYzNXdOaXJaN0syaWJPN2pSTTF0STNSCjRJZFVWT2U2REZYOWlaTFF6U0Q1bjdIbzhUWk1WSDB1WkQrSWNiMXhsbEFLL2g3dXE4MkptU0RtL0VMMlk3NlkKRzJWS3haVm5GTU9PdHluR0U0WWVzeGRjSDBCRHVuUkR3TXExQlZ5Z2FkOS9iQkgydEQ0QlV6Uzc3TFkydUJscQp6UkdsLzFxdTVRb3hhSDBPckFBQU94SVBZS1lrU0ZwYUU1V21vV3RIdHUxYWh2Y01EekV4SyswZDZmejNrYlF1CnFiN3ovbHphUEFQaFl0a0NBd0VBQWFPQmhqQ0JnekFPQmdOVkhROEJBZjhFQkFNQ0JhQXdEQVlEVlIwVEFRSC8KQkFJd0FEQmpCZ05WSFJFRVhEQmFnaVJqWVhCcExYZGxZbWh2YjJzdGMyVnlkbWxqWlM1allYQnBMWE41YzNSbApiUzV6ZG1PQ01tTmhjR2t0ZDJWaWFHOXZheTF6WlhKMmFXTmxMbU5oY0drdGMzbHpkR1Z0TG5OMll5NWpiSFZ6CmRHVnlMbXh2WTJGc01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQnRGMzhHRVNXaEROcUhyZjBNWmVGbDA4bUoKTnNoVTlVQ0xlcytsRjJHNENFODBCRFNUYkxYakNvNmhqQ3FjQ3hjbkxHRlF4RjdQSy9nRUpNQXFmc3NtdE5XZgpORXZHR2s5bVBram1NVkFEY2FUczhmU1RqMy9RTGRONFJJRTJOS243UnlBa3pTdE9Kd3NkNGJqTHUwL0hpRGE3CkljYUR1ZUhkeU9ETkczZE96U1VLZ2EwbHQ5aTFONzNXNWNTdWRDSXJwOVcxekhsOFY1clI2djhrRzdpUjloRU8KKzVBOGJxblcwSWQwTUFHeS8yS0h3SW9LVWZSTHU0N0RBNlFxZXp3ZW1QRmtiVy9vdFRpZG9OazhoUHVMS1hYUwo5WW04c2ZjbTNqV0FwQks4ZHdEcGtDdGx1Q0d0djNRMWFmSHlJb3RFVVpkZlhzeHNsQUF2aWl6M1EwbXkKLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
service:
name: capi-webhook-service
namespace: capi-system
path: /convert
port: 443
conversionReviewVersions:
- v1
- v1beta1
group: cluster.x-k8s.io
names:
categories:
- cluster-api
kind: Cluster
listKind: ClusterList
plural: clusters
shortNames:
- cl
singular: cluster
scope: Namespaced
versions:
- additionalPrinterColumns:
- description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
jsonPath: .status.phase
name: Phase
type: string
name: v1alpha3
schema:
openAPIV3Schema:
description: Cluster is the Schema for the clusters 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'
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'
type: string
metadata:
type: object
spec:
description: ClusterSpec defines the desired state of Cluster.
properties:
clusterNetwork:
description: Cluster network configuration.
properties:
apiServerPort:
description: APIServerPort specifies the port the API Server should
bind to. Defaults to 6443.
format: int32
type: integer
pods:
description: The network ranges from which Pod networks are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
serviceDomain:
description: Domain name for services.
type: string
services:
description: The network ranges from which service VIPs are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
type: object
controlPlaneEndpoint:
description: ControlPlaneEndpoint represents the endpoint used to
communicate with the control plane.
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
controlPlaneRef:
description: ControlPlaneRef is an optional reference to a provider-specific
resource that holds the details for provisioning the Control Plane
for a 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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
infrastructureRef:
description: InfrastructureRef is a reference to a provider-specific
resource that holds the details for provisioning infrastructure
for a cluster in said provider.
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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
paused:
description: Paused can be used to prevent controllers from processing
the Cluster and all its associated objects.
type: boolean
type: object
status:
description: ClusterStatus defines the observed state of Cluster.
properties:
conditions:
description: Conditions defines current service state of the cluster.
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.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition. This 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.
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.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
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.
type: string
required:
- status
- type
type: object
type: array
controlPlaneInitialized:
description: ControlPlaneInitialized defines if the control plane
has been initialized.
type: boolean
controlPlaneReady:
description: ControlPlaneReady defines if the control plane is ready.
type: boolean
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.
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
description: FailureDomains is a slice of failure domain objects synced
from the infrastructure provider.
type: object
failureMessage:
description: FailureMessage indicates that there is a fatal problem
reconciling the state, and will be set to a descriptive error message.
type: string
failureReason:
description: FailureReason indicates that there is a fatal problem
reconciling the state, and will be set to a token value suitable
for programmatic interpretation.
type: string
infrastructureReady:
description: InfrastructureReady is the state of the infrastructure
provider.
type: boolean
observedGeneration:
description: ObservedGeneration is the latest generation observed
by the controller.
format: int64
type: integer
phase:
description: Phase represents the current phase of cluster actuation.
E.g. Pending, Running, Terminating, Failed etc.
type: string
type: object
type: object
served: true
storage: false
subresources:
status: {}
- additionalPrinterColumns:
- description: Time duration since creation of Cluster
jsonPath: .metadata.creationTimestamp
name: Age
type: date
- description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
jsonPath: .status.phase
name: Phase
type: string
name: v1alpha4
schema:
openAPIV3Schema:
description: Cluster is the Schema for the clusters 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'
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'
type: string
metadata:
type: object
spec:
description: ClusterSpec defines the desired state of Cluster.
properties:
clusterNetwork:
description: Cluster network configuration.
properties:
apiServerPort:
description: APIServerPort specifies the port the API Server should
bind to. Defaults to 6443.
format: int32
type: integer
pods:
description: The network ranges from which Pod networks are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
serviceDomain:
description: Domain name for services.
type: string
services:
description: The network ranges from which service VIPs are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
type: object
controlPlaneEndpoint:
description: ControlPlaneEndpoint represents the endpoint used to
communicate with the control plane.
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
controlPlaneRef:
description: ControlPlaneRef is an optional reference to a provider-specific
resource that holds the details for provisioning the Control Plane
for a 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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
infrastructureRef:
description: InfrastructureRef is a reference to a provider-specific
resource that holds the details for provisioning infrastructure
for a cluster in said provider.
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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
paused:
description: Paused can be used to prevent controllers from processing
the Cluster and all its associated objects.
type: boolean
topology:
description: 'This encapsulates the topology for the cluster. NOTE:
It is required to enable the ClusterTopology feature gate flag to
activate managed topologies support; this feature is highly experimental,
and parts of it might still be not implemented.'
properties:
class:
description: The name of the ClusterClass object to create the
topology.
type: string
controlPlane:
description: ControlPlane describes the cluster control plane.
properties:
metadata:
description: "Metadata is the metadata applied to the machines
of the ControlPlane. At runtime this metadata is merged
with the corresponding metadata from the ClusterClass. \n
This field is supported if and only if the control plane
provider template referenced in the ClusterClass is Machine
based."
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'
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'
type: object
type: object
replicas:
description: Replicas is the number of control plane nodes.
If the value is nil, the ControlPlane object is created
without the number of Replicas and it's assumed that the
control plane controller does not implement support for
this field. When specified against a control plane provider
that lacks support for this field, this value will be ignored.
format: int32
type: integer
type: object
rolloutAfter:
description: RolloutAfter performs a rollout of the entire cluster
one component at a time, control plane first and then machine
deployments.
format: date-time
type: string
version:
description: The Kubernetes version of the cluster.
type: string
workers:
description: Workers encapsulates the different constructs that
form the worker nodes for the cluster.
properties:
machineDeployments:
description: MachineDeployments is a list of machine deployments
in the cluster.
items:
description: MachineDeploymentTopology specifies the different
parameters for a set of worker nodes in the topology.
This set of nodes is managed by a MachineDeployment object
whose lifecycle is managed by the Cluster controller.
properties:
class:
description: Class is the name of the MachineDeploymentClass
used to create the set of worker nodes. This should
match one of the deployment classes defined in the
ClusterClass object mentioned in the `Cluster.Spec.Class`
field.
type: string
metadata:
description: Metadata is the metadata applied to the
machines of the MachineDeployment. At runtime this
metadata is merged with the corresponding metadata
from the ClusterClass.
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'
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'
type: object
type: object
name:
description: Name is the unique identifier for this
MachineDeploymentTopology. The value is used with
other unique identifiers to create a MachineDeployment's
Name (e.g. cluster's name, etc). In case the name
is greater than the allowed maximum length, the values
are hashed together.
type: string
replicas:
description: Replicas is the number of worker nodes
belonging to this set. If the value is nil, the MachineDeployment
is created without the number of Replicas (defaulting
to zero) and it's assumed that an external entity
(like cluster autoscaler) is responsible for the management
of this value.
format: int32
type: integer
required:
- class
- name
type: object
type: array
type: object
required:
- class
- version
type: object
type: object
status:
description: ClusterStatus defines the observed state of Cluster.
properties:
conditions:
description: Conditions defines current service state of the cluster.
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.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition. This 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.
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.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
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.
type: string
required:
- status
- type
type: object
type: array
controlPlaneReady:
description: ControlPlaneReady defines if the control plane is ready.
type: boolean
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.
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
description: FailureDomains is a slice of failure domain objects synced
from the infrastructure provider.
type: object
failureMessage:
description: FailureMessage indicates that there is a fatal problem
reconciling the state, and will be set to a descriptive error message.
type: string
failureReason:
description: FailureReason indicates that there is a fatal problem
reconciling the state, and will be set to a token value suitable
for programmatic interpretation.
type: string
infrastructureReady:
description: InfrastructureReady is the state of the infrastructure
provider.
type: boolean
observedGeneration:
description: ObservedGeneration is the latest generation observed
by the controller.
format: int64
type: integer
phase:
description: Phase represents the current phase of cluster actuation.
E.g. Pending, Running, Terminating, Failed etc.
type: string
type: object
type: object
served: true
storage: false
subresources:
status: {}
- additionalPrinterColumns:
- description: Cluster status such as Pending/Provisioning/Provisioned/Deleting/Failed
jsonPath: .status.phase
name: Phase
type: string
- description: Time duration since creation of Cluster
jsonPath: .metadata.creationTimestamp
name: Age
type: date
- description: Kubernetes version associated with this Cluster
jsonPath: .spec.topology.version
name: Version
type: string
name: v1beta1
schema:
openAPIV3Schema:
description: Cluster is the Schema for the clusters 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'
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'
type: string
metadata:
type: object
spec:
description: ClusterSpec defines the desired state of Cluster.
properties:
clusterNetwork:
description: Cluster network configuration.
properties:
apiServerPort:
description: APIServerPort specifies the port the API Server should
bind to. Defaults to 6443.
format: int32
type: integer
pods:
description: The network ranges from which Pod networks are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
serviceDomain:
description: Domain name for services.
type: string
services:
description: The network ranges from which service VIPs are allocated.
properties:
cidrBlocks:
items:
type: string
type: array
required:
- cidrBlocks
type: object
type: object
controlPlaneEndpoint:
description: ControlPlaneEndpoint represents the endpoint used to
communicate with the control plane.
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
controlPlaneRef:
description: ControlPlaneRef is an optional reference to a provider-specific
resource that holds the details for provisioning the Control Plane
for a 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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
infrastructureRef:
description: InfrastructureRef is a reference to a provider-specific
resource that holds the details for provisioning infrastructure
for a cluster in said provider.
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 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.'
type: string
kind:
description: 'Kind of the referent. More 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'
type: string
namespace:
description: 'Namespace of the referent. More 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'
type: string
uid:
description: 'UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids'
type: string
type: object
paused:
description: Paused can be used to prevent controllers from processing
the Cluster and all its associated objects.
type: boolean
topology:
description: 'This encapsulates the topology for the cluster. NOTE:
It is required to enable the ClusterTopology feature gate flag to
activate managed topologies support; this feature is highly experimental,
and parts of it might still be not implemented.'
properties:
class:
description: The name of the ClusterClass object to create the
topology.
type: string
controlPlane:
description: ControlPlane describes the cluster control plane.
properties:
metadata:
description: "Metadata is the metadata applied to the machines
of the ControlPlane. At runtime this metadata is merged
with the corresponding metadata from the ClusterClass. \n
This field is supported if and only if the control plane
provider template referenced in the ClusterClass is Machine
based."
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'
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'
type: object
type: object
replicas:
description: Replicas is the number of control plane nodes.
If the value is nil, the ControlPlane object is created
without the number of Replicas and it's assumed that the
control plane controller does not implement support for
this field. When specified against a control plane provider
that lacks support for this field, this value will be ignored.
format: int32
type: integer
type: object
rolloutAfter:
description: RolloutAfter performs a rollout of the entire cluster
one component at a time, control plane first and then machine
deployments.
format: date-time
type: string
version:
description: The Kubernetes version of the cluster.
type: string
workers:
description: Workers encapsulates the different constructs that
form the worker nodes for the cluster.
properties:
machineDeployments:
description: MachineDeployments is a list of machine deployments
in the cluster.
items:
description: MachineDeploymentTopology specifies the different
parameters for a set of worker nodes in the topology.
This set of nodes is managed by a MachineDeployment object
whose lifecycle is managed by the Cluster controller.
properties:
class:
description: Class is the name of the MachineDeploymentClass
used to create the set of worker nodes. This should
match one of the deployment classes defined in the
ClusterClass object mentioned in the `Cluster.Spec.Class`
field.
type: string
metadata:
description: Metadata is the metadata applied to the
machines of the MachineDeployment. At runtime this
metadata is merged with the corresponding metadata
from the ClusterClass.
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'
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'
type: object
type: object
name:
description: Name is the unique identifier for this
MachineDeploymentTopology. The value is used with
other unique identifiers to create a MachineDeployment's
Name (e.g. cluster's name, etc). In case the name
is greater than the allowed maximum length, the values
are hashed together.
type: string
replicas:
description: Replicas is the number of worker nodes
belonging to this set. If the value is nil, the MachineDeployment
is created without the number of Replicas (defaulting
to zero) and it's assumed that an external entity
(like cluster autoscaler) is responsible for the management
of this value.
format: int32
type: integer
required:
- class
- name
type: object
type: array
type: object
required:
- class
- version
type: object
type: object
status:
description: ClusterStatus defines the observed state of Cluster.
properties:
conditions:
description: Conditions defines current service state of the cluster.
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.
format: date-time
type: string
message:
description: A human readable message indicating details about
the transition. This 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.
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.
type: string
status:
description: Status of the condition, one of True, False, Unknown.
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.
type: string
required:
- lastTransitionTime
- status
- type
type: object
type: array
controlPlaneReady:
description: ControlPlaneReady defines if the control plane is ready.
type: boolean
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.
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
description: FailureDomains is a slice of failure domain objects synced
from the infrastructure provider.
type: object
failureMessage:
description: FailureMessage indicates that there is a fatal problem
reconciling the state, and will be set to a descriptive error message.
type: string
failureReason:
description: FailureReason indicates that there is a fatal problem
reconciling the state, and will be set to a token value suitable
for programmatic interpretation.
type: string
infrastructureReady:
description: InfrastructureReady is the state of the infrastructure
provider.
type: boolean
observedGeneration:
description: ObservedGeneration is the latest generation observed
by the controller.
format: int64
type: integer
phase:
description: Phase represents the current phase of cluster actuation.
E.g. Pending, Running, Terminating, Failed etc.
type: string
type: object
type: object
served: true
storage: true
subresources:
status: {}
status:
acceptedNames:
categories:
- cluster-api
kind: Cluster
listKind: ClusterList
plural: clusters
shortNames:
- cl
singular: cluster
conditions:
- lastTransitionTime: "2021-11-18T15:55:11Z"
message: no conflicts found
reason: NoConflicts
status: "True"
type: NamesAccepted
- lastTransitionTime: "2021-11-18T15:55:11Z"
message: the initial names have been accepted
reason: InitialNamesAccepted
status: "True"
type: Established
storedVersions:
- v1beta1
from kopium.
Hm. That's weird. I am testing it on fairly large crds, but I guess there must be something in these particular ones that we don't handle. Maybe something about references to foreign crds being inlined in the schema (i haven't handled anything like that so far at least)? Any chance of adding a link to the full schema / collapsible comment with it inlined?
(There's also a point in here about camelCase -> snake_case not being done, raising that separately - #22)
from kopium.
Ok, that does actually look pretty normal (apart from the multiple versions in there making it effectively 4 times the size). I'll try to play around and debug the analyzer later to see why it's spitting out that.
from kopium.
It is slightly better now with the fix in 0.6.0 (#28)
generated from your crd:
#[derive(CustomResource, Serialize, Deserialize, Clone, Debug)]
#[kube(group = "cluster.x-k8s.io", version = "v1beta1", kind = "Cluster", plural = "clusters")]
#[kube(namespaced)]
#[kube(schema = "disabled")]
pub struct ClusterSpec {
pub clusterNetwork: Option<ClusterClusterNetwork>,
pub controlPlaneEndpoint: Option<ClusterControlPlaneEndpoint>,
pub controlPlaneRef: Option<ClusterControlPlaneRef>,
pub infrastructureRef: Option<ClusterInfrastructureRef>,
pub paused: Option<bool>,
pub topology: Option<ClusterTopology>,
}
and those second level structs exist
from kopium.
however it is failing at failureDomains
within that crd:
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.
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
description: FailureDomains is a slice of failure domain objects synced
from the infrastructure provider.
generates this member:
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ClusterStatus {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub conditions: Vec<ClusterStatusConditions>,
pub controlPlaneReady: Option<bool>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub failureDomains: BTreeMap<String, Object>,
pub failureMessage: Option<String>,
pub failureReason: Option<String>,
pub infrastructureReady: Option<bool>,
pub observedGeneration: Option<i64>,
pub phase: Option<String>,
}
from kopium.
ok, i have identified one logic error inside
Lines 30 to 36 in c74379d
we end up in that case for failureDomains
because of how the schema looks:
[2022-03-01T06:09:38Z WARN kopium::analyzer] not generating type Annotations - using string map
[2022-03-01T06:09:38Z WARN kopium::analyzer] not generating type Labels - using string map
[2022-03-01T06:09:38Z WARN kopium::analyzer] not generating type Annotations - using string map
[2022-03-01T06:09:38Z WARN kopium::analyzer] not generating type Labels - using string map
[2022-03-01T06:09:38Z WARN kopium::analyzer] not generating type FailureDomains - using object map
and that's because it has its properties
nested inside additionalProperties
. this is not necessary, but will try to make a branch to see if we can handle it.
from kopium.
Several fixes has gone in since this was opened. The CRD case herein now at least builds - but i don't have a crd instance to fully test it. Please re-open if this is seen again. Definitely areas in the analyzer that i'm not sure about.
from kopium.
Related Issues (20)
- Top level enums are not handled
- Add support for cargo-binstall HOT 1
- Address clippy fixes in the generated documentation HOT 1
- Argo-Workflows crd's not working HOT 2
- Types with Underscore not converted to CamelCase
- Kopium skips generating types which are then not referencable
- Use `indoc` for analyzer test cases
- Document Unstable Rust HOT 1
- allow filtering out the status object
- crash on flux's GitRepository crd HOT 2
- Allow implementing generic getter traits
- Missing Struct when generating from CRD HOT 2
- Autogenerated output should include a comment at the top of file HOT 2
- enum support in 0.12 breaks --derive Default HOT 4
- not handling non-string enum HOT 5
- alertmanager crd needs support for invalid enum names HOT 2
- alertmanager crd crashes on empty enum string crd HOT 1
- allow eliding output from problematic containers
- Include a comment with the arguments to kopium in the generated code itself
- Running kopium with `--hide-kube` still includes a derive for `CustomResource` HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kopium.