2514 lines
149 KiB
YAML
2514 lines
149 KiB
YAML
---
|
|
apiVersion: apiextensions.k8s.io/v1
|
|
kind: CustomResourceDefinition
|
|
metadata:
|
|
annotations:
|
|
controller-gen.kubebuilder.io/version: v0.9.2
|
|
creationTimestamp: null
|
|
name: tenantcontrolplanes.kamaji.clastix.io
|
|
spec:
|
|
group: kamaji.clastix.io
|
|
names:
|
|
kind: TenantControlPlane
|
|
listKind: TenantControlPlaneList
|
|
plural: tenantcontrolplanes
|
|
shortNames:
|
|
- tcp
|
|
singular: tenantcontrolplane
|
|
scope: Namespaced
|
|
versions:
|
|
- additionalPrinterColumns:
|
|
- description: Kubernetes version
|
|
jsonPath: .spec.kubernetes.version
|
|
name: Version
|
|
type: string
|
|
- description: Kubernetes version
|
|
jsonPath: .status.kubernetesResources.version.status
|
|
name: Status
|
|
type: string
|
|
- description: Tenant Control Plane Endpoint (API server)
|
|
jsonPath: .status.controlPlaneEndpoint
|
|
name: Control-Plane-Endpoint
|
|
type: string
|
|
- description: Secret which contains admin kubeconfig
|
|
jsonPath: .status.kubeconfig.admin.secretName
|
|
name: Kubeconfig
|
|
type: string
|
|
- description: Age
|
|
jsonPath: .metadata.creationTimestamp
|
|
name: Age
|
|
type: date
|
|
name: v1alpha1
|
|
schema:
|
|
openAPIV3Schema:
|
|
description: TenantControlPlane is the Schema for the tenantcontrolplanes
|
|
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: TenantControlPlaneSpec defines the desired state of TenantControlPlane.
|
|
properties:
|
|
addons:
|
|
description: Addons contain which addons are enabled
|
|
properties:
|
|
coreDNS:
|
|
description: Enables the DNS addon in the Tenant Cluster. The
|
|
registry and the tag are configurable, the image is hard-coded
|
|
to `coredns`.
|
|
properties:
|
|
imageRepository:
|
|
description: ImageRepository sets the container registry to
|
|
pull images from. if not set, the default ImageRepository
|
|
will be used instead.
|
|
type: string
|
|
imageTag:
|
|
description: ImageTag allows to specify a tag for the image.
|
|
In case this value is set, kubeadm does not change automatically
|
|
the version of the above components during upgrades.
|
|
type: string
|
|
type: object
|
|
konnectivity:
|
|
description: Enables the Konnectivity addon in the Tenant Cluster,
|
|
required if the worker nodes are in a different network.
|
|
properties:
|
|
agentImage:
|
|
default: registry.k8s.io/kas-network-proxy/proxy-agent
|
|
description: AgentImage defines the container image for Konnectivity's
|
|
agent.
|
|
type: string
|
|
proxyPort:
|
|
description: Port of Konnectivity proxy server.
|
|
format: int32
|
|
type: integer
|
|
resources:
|
|
description: Resources define the amount of CPU and memory
|
|
to allocate to the Konnectivity server.
|
|
properties:
|
|
limits:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Limits describes the maximum amount of compute
|
|
resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
requests:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Requests describes the minimum amount of
|
|
compute resources required. If Requests is omitted for
|
|
a container, it defaults to Limits if that is explicitly
|
|
specified, otherwise to an implementation-defined value.
|
|
More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
type: object
|
|
serverImage:
|
|
default: registry.k8s.io/kas-network-proxy/proxy-server
|
|
description: ServerImage defines the container image for Konnectivity's
|
|
server.
|
|
type: string
|
|
version:
|
|
default: v0.0.32
|
|
description: Version for Konnectivity server and agent.
|
|
type: string
|
|
required:
|
|
- proxyPort
|
|
type: object
|
|
kubeProxy:
|
|
description: Enables the kube-proxy addon in the Tenant Cluster.
|
|
The registry and the tag are configurable, the image is hard-coded
|
|
to `kube-proxy`.
|
|
properties:
|
|
imageRepository:
|
|
description: ImageRepository sets the container registry to
|
|
pull images from. if not set, the default ImageRepository
|
|
will be used instead.
|
|
type: string
|
|
imageTag:
|
|
description: ImageTag allows to specify a tag for the image.
|
|
In case this value is set, kubeadm does not change automatically
|
|
the version of the above components during upgrades.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
controlPlane:
|
|
description: ControlPlane defines how the Tenant Control Plane Kubernetes
|
|
resources must be created in the Admin Cluster, such as the number
|
|
of Pod replicas, the Service resource, or the Ingress.
|
|
properties:
|
|
deployment:
|
|
description: Defining the options for the deployed Tenant Control
|
|
Plane as Deployment resource.
|
|
properties:
|
|
additionalMetadata:
|
|
description: AdditionalMetadata defines which additional metadata,
|
|
such as labels and annotations, must be attached to the
|
|
created resource.
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
labels:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
affinity:
|
|
description: 'If specified, the Tenant Control Plane pod''s
|
|
scheduling constraints. More info: https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/'
|
|
properties:
|
|
nodeAffinity:
|
|
description: Describes node affinity scheduling rules
|
|
for the pod.
|
|
properties:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
description: The scheduler will prefer to schedule
|
|
pods to nodes that satisfy the affinity expressions
|
|
specified by this field, but it may choose a node
|
|
that violates one or more of the expressions. The
|
|
node that is most preferred is the one with the
|
|
greatest sum of weights, i.e. for each node that
|
|
meets all of the scheduling requirements (resource
|
|
request, requiredDuringScheduling affinity expressions,
|
|
etc.), compute a sum by iterating through the elements
|
|
of this field and adding "weight" to the sum if
|
|
the node matches the corresponding matchExpressions;
|
|
the node(s) with the highest sum are the most preferred.
|
|
items:
|
|
description: An empty preferred scheduling term
|
|
matches all objects with implicit weight 0 (i.e.
|
|
it's a no-op). A null preferred scheduling term
|
|
matches no objects (i.e. is also a no-op).
|
|
properties:
|
|
preference:
|
|
description: A node selector term, associated
|
|
with the corresponding weight.
|
|
properties:
|
|
matchExpressions:
|
|
description: A list of node selector requirements
|
|
by node's labels.
|
|
items:
|
|
description: A node selector requirement
|
|
is a selector that contains values,
|
|
a key, and an operator that relates
|
|
the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the
|
|
selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship
|
|
to a set of values. Valid operators
|
|
are In, NotIn, Exists, DoesNotExist.
|
|
Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: 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.
|
|
If the operator is Gt or Lt, the
|
|
values array must have a single
|
|
element, which will be interpreted
|
|
as an integer. This array is replaced
|
|
during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchFields:
|
|
description: A list of node selector requirements
|
|
by node's fields.
|
|
items:
|
|
description: A node selector requirement
|
|
is a selector that contains values,
|
|
a key, and an operator that relates
|
|
the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the
|
|
selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship
|
|
to a set of values. Valid operators
|
|
are In, NotIn, Exists, DoesNotExist.
|
|
Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: 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.
|
|
If the operator is Gt or Lt, the
|
|
values array must have a single
|
|
element, which will be interpreted
|
|
as an integer. This array is replaced
|
|
during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
weight:
|
|
description: Weight associated with matching
|
|
the corresponding nodeSelectorTerm, in the
|
|
range 1-100.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- preference
|
|
- weight
|
|
type: object
|
|
type: array
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
description: If the affinity requirements specified
|
|
by this field are not met at scheduling time, the
|
|
pod will not be scheduled onto the node. If the
|
|
affinity requirements specified by this field cease
|
|
to be met at some point during pod execution (e.g.
|
|
due to an update), the system may or may not try
|
|
to eventually evict the pod from its node.
|
|
properties:
|
|
nodeSelectorTerms:
|
|
description: Required. A list of node selector
|
|
terms. The terms are ORed.
|
|
items:
|
|
description: A null or empty node selector term
|
|
matches no objects. The requirements of them
|
|
are ANDed. The TopologySelectorTerm type implements
|
|
a subset of the NodeSelectorTerm.
|
|
properties:
|
|
matchExpressions:
|
|
description: A list of node selector requirements
|
|
by node's labels.
|
|
items:
|
|
description: A node selector requirement
|
|
is a selector that contains values,
|
|
a key, and an operator that relates
|
|
the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the
|
|
selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship
|
|
to a set of values. Valid operators
|
|
are In, NotIn, Exists, DoesNotExist.
|
|
Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: 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.
|
|
If the operator is Gt or Lt, the
|
|
values array must have a single
|
|
element, which will be interpreted
|
|
as an integer. This array is replaced
|
|
during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchFields:
|
|
description: A list of node selector requirements
|
|
by node's fields.
|
|
items:
|
|
description: A node selector requirement
|
|
is a selector that contains values,
|
|
a key, and an operator that relates
|
|
the key and values.
|
|
properties:
|
|
key:
|
|
description: The label key that the
|
|
selector applies to.
|
|
type: string
|
|
operator:
|
|
description: Represents a key's relationship
|
|
to a set of values. Valid operators
|
|
are In, NotIn, Exists, DoesNotExist.
|
|
Gt, and Lt.
|
|
type: string
|
|
values:
|
|
description: 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.
|
|
If the operator is Gt or Lt, the
|
|
values array must have a single
|
|
element, which will be interpreted
|
|
as an integer. This array is replaced
|
|
during a strategic merge patch.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
type: array
|
|
required:
|
|
- nodeSelectorTerms
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
type: object
|
|
podAffinity:
|
|
description: Describes pod affinity scheduling rules (e.g.
|
|
co-locate this pod in the same node, zone, etc. as some
|
|
other pod(s)).
|
|
properties:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
description: The scheduler will prefer to schedule
|
|
pods to nodes that satisfy the affinity expressions
|
|
specified by this field, but it may choose a node
|
|
that violates one or more of the expressions. The
|
|
node that is most preferred is the one with the
|
|
greatest sum of weights, i.e. for each node that
|
|
meets all of the scheduling requirements (resource
|
|
request, requiredDuringScheduling affinity expressions,
|
|
etc.), compute a sum by iterating through the elements
|
|
of this field and adding "weight" to the sum if
|
|
the node has pods which matches the corresponding
|
|
podAffinityTerm; the node(s) with the highest sum
|
|
are the most preferred.
|
|
items:
|
|
description: The weights of all of the matched WeightedPodAffinityTerm
|
|
fields are added per-node to find the most preferred
|
|
node(s)
|
|
properties:
|
|
podAffinityTerm:
|
|
description: Required. A pod affinity term,
|
|
associated with the corresponding weight.
|
|
properties:
|
|
labelSelector:
|
|
description: A label query over a set of
|
|
resources, in this case pods.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaceSelector:
|
|
description: A label query over the set
|
|
of namespaces that the term applies to.
|
|
The term is applied to the union of the
|
|
namespaces selected by this field and
|
|
the ones listed in the namespaces field.
|
|
null selector and null or empty namespaces
|
|
list means "this pod's namespace". An
|
|
empty selector ({}) matches all namespaces.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaces:
|
|
description: namespaces specifies a static
|
|
list of namespace names that the term
|
|
applies to. The term is applied to the
|
|
union of the namespaces listed in this
|
|
field and the ones selected by namespaceSelector.
|
|
null or empty namespaces list and null
|
|
namespaceSelector means "this pod's namespace".
|
|
items:
|
|
type: string
|
|
type: array
|
|
topologyKey:
|
|
description: This pod should be co-located
|
|
(affinity) or not co-located (anti-affinity)
|
|
with the pods matching the labelSelector
|
|
in the specified namespaces, where co-located
|
|
is defined as running on a node whose
|
|
value of the label with key topologyKey
|
|
matches that of any node on which any
|
|
of the selected pods is running. Empty
|
|
topologyKey is not allowed.
|
|
type: string
|
|
required:
|
|
- topologyKey
|
|
type: object
|
|
weight:
|
|
description: weight associated with matching
|
|
the corresponding podAffinityTerm, in the
|
|
range 1-100.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- podAffinityTerm
|
|
- weight
|
|
type: object
|
|
type: array
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
description: If the affinity requirements specified
|
|
by this field are not met at scheduling time, the
|
|
pod will not be scheduled onto the node. If the
|
|
affinity requirements specified by this field cease
|
|
to be met at some point during pod execution (e.g.
|
|
due to a pod label update), the system may or may
|
|
not try to eventually evict the pod from its node.
|
|
When there are multiple elements, the lists of nodes
|
|
corresponding to each podAffinityTerm are intersected,
|
|
i.e. all terms must be satisfied.
|
|
items:
|
|
description: Defines a set of pods (namely those
|
|
matching the labelSelector relative to the given
|
|
namespace(s)) that this pod should be co-located
|
|
(affinity) or not co-located (anti-affinity) with,
|
|
where co-located is defined as running on a node
|
|
whose value of the label with key <topologyKey>
|
|
matches that of any node on which a pod of the
|
|
set of pods is running
|
|
properties:
|
|
labelSelector:
|
|
description: A label query over a set of resources,
|
|
in this case pods.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaceSelector:
|
|
description: A label query over the set of namespaces
|
|
that the term applies to. The term is applied
|
|
to the union of the namespaces selected by
|
|
this field and the ones listed in the namespaces
|
|
field. null selector and null or empty namespaces
|
|
list means "this pod's namespace". An empty
|
|
selector ({}) matches all namespaces.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaces:
|
|
description: namespaces specifies a static list
|
|
of namespace names that the term applies to.
|
|
The term is applied to the union of the namespaces
|
|
listed in this field and the ones selected
|
|
by namespaceSelector. null or empty namespaces
|
|
list and null namespaceSelector means "this
|
|
pod's namespace".
|
|
items:
|
|
type: string
|
|
type: array
|
|
topologyKey:
|
|
description: This pod should be co-located (affinity)
|
|
or not co-located (anti-affinity) with the
|
|
pods matching the labelSelector in the specified
|
|
namespaces, where co-located is defined as
|
|
running on a node whose value of the label
|
|
with key topologyKey matches that of any node
|
|
on which any of the selected pods is running.
|
|
Empty topologyKey is not allowed.
|
|
type: string
|
|
required:
|
|
- topologyKey
|
|
type: object
|
|
type: array
|
|
type: object
|
|
podAntiAffinity:
|
|
description: Describes pod anti-affinity scheduling rules
|
|
(e.g. avoid putting this pod in the same node, zone,
|
|
etc. as some other pod(s)).
|
|
properties:
|
|
preferredDuringSchedulingIgnoredDuringExecution:
|
|
description: The scheduler will prefer to schedule
|
|
pods to nodes that satisfy the anti-affinity expressions
|
|
specified by this field, but it may choose a node
|
|
that violates one or more of the expressions. The
|
|
node that is most preferred is the one with the
|
|
greatest sum of weights, i.e. for each node that
|
|
meets all of the scheduling requirements (resource
|
|
request, requiredDuringScheduling anti-affinity
|
|
expressions, etc.), compute a sum by iterating through
|
|
the elements of this field and adding "weight" to
|
|
the sum if the node has pods which matches the corresponding
|
|
podAffinityTerm; the node(s) with the highest sum
|
|
are the most preferred.
|
|
items:
|
|
description: The weights of all of the matched WeightedPodAffinityTerm
|
|
fields are added per-node to find the most preferred
|
|
node(s)
|
|
properties:
|
|
podAffinityTerm:
|
|
description: Required. A pod affinity term,
|
|
associated with the corresponding weight.
|
|
properties:
|
|
labelSelector:
|
|
description: A label query over a set of
|
|
resources, in this case pods.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaceSelector:
|
|
description: A label query over the set
|
|
of namespaces that the term applies to.
|
|
The term is applied to the union of the
|
|
namespaces selected by this field and
|
|
the ones listed in the namespaces field.
|
|
null selector and null or empty namespaces
|
|
list means "this pod's namespace". An
|
|
empty selector ({}) matches all namespaces.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaces:
|
|
description: namespaces specifies a static
|
|
list of namespace names that the term
|
|
applies to. The term is applied to the
|
|
union of the namespaces listed in this
|
|
field and the ones selected by namespaceSelector.
|
|
null or empty namespaces list and null
|
|
namespaceSelector means "this pod's namespace".
|
|
items:
|
|
type: string
|
|
type: array
|
|
topologyKey:
|
|
description: This pod should be co-located
|
|
(affinity) or not co-located (anti-affinity)
|
|
with the pods matching the labelSelector
|
|
in the specified namespaces, where co-located
|
|
is defined as running on a node whose
|
|
value of the label with key topologyKey
|
|
matches that of any node on which any
|
|
of the selected pods is running. Empty
|
|
topologyKey is not allowed.
|
|
type: string
|
|
required:
|
|
- topologyKey
|
|
type: object
|
|
weight:
|
|
description: weight associated with matching
|
|
the corresponding podAffinityTerm, in the
|
|
range 1-100.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- podAffinityTerm
|
|
- weight
|
|
type: object
|
|
type: array
|
|
requiredDuringSchedulingIgnoredDuringExecution:
|
|
description: If the anti-affinity requirements specified
|
|
by this field are not met at scheduling time, the
|
|
pod will not be scheduled onto the node. If the
|
|
anti-affinity requirements specified by this field
|
|
cease to be met at some point during pod execution
|
|
(e.g. due to a pod label update), the system may
|
|
or may not try to eventually evict the pod from
|
|
its node. When there are multiple elements, the
|
|
lists of nodes corresponding to each podAffinityTerm
|
|
are intersected, i.e. all terms must be satisfied.
|
|
items:
|
|
description: Defines a set of pods (namely those
|
|
matching the labelSelector relative to the given
|
|
namespace(s)) that this pod should be co-located
|
|
(affinity) or not co-located (anti-affinity) with,
|
|
where co-located is defined as running on a node
|
|
whose value of the label with key <topologyKey>
|
|
matches that of any node on which a pod of the
|
|
set of pods is running
|
|
properties:
|
|
labelSelector:
|
|
description: A label query over a set of resources,
|
|
in this case pods.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaceSelector:
|
|
description: A label query over the set of namespaces
|
|
that the term applies to. The term is applied
|
|
to the union of the namespaces selected by
|
|
this field and the ones listed in the namespaces
|
|
field. null selector and null or empty namespaces
|
|
list means "this pod's namespace". An empty
|
|
selector ({}) matches all namespaces.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
namespaces:
|
|
description: namespaces specifies a static list
|
|
of namespace names that the term applies to.
|
|
The term is applied to the union of the namespaces
|
|
listed in this field and the ones selected
|
|
by namespaceSelector. null or empty namespaces
|
|
list and null namespaceSelector means "this
|
|
pod's namespace".
|
|
items:
|
|
type: string
|
|
type: array
|
|
topologyKey:
|
|
description: This pod should be co-located (affinity)
|
|
or not co-located (anti-affinity) with the
|
|
pods matching the labelSelector in the specified
|
|
namespaces, where co-located is defined as
|
|
running on a node whose value of the label
|
|
with key topologyKey matches that of any node
|
|
on which any of the selected pods is running.
|
|
Empty topologyKey is not allowed.
|
|
type: string
|
|
required:
|
|
- topologyKey
|
|
type: object
|
|
type: array
|
|
type: object
|
|
type: object
|
|
extraArgs:
|
|
description: ExtraArgs allows adding additional arguments
|
|
to the Control Plane components, such as kube-apiserver,
|
|
controller-manager, and scheduler.
|
|
properties:
|
|
apiServer:
|
|
items:
|
|
type: string
|
|
type: array
|
|
controllerManager:
|
|
items:
|
|
type: string
|
|
type: array
|
|
kine:
|
|
description: Available only if Kamaji is running using
|
|
Kine as backing storage.
|
|
items:
|
|
type: string
|
|
type: array
|
|
scheduler:
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
nodeSelector:
|
|
additionalProperties:
|
|
type: string
|
|
description: 'NodeSelector is a selector which must be true
|
|
for the pod to fit on a node. Selector which must match
|
|
a node''s labels for the pod to be scheduled on that node.
|
|
More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/'
|
|
type: object
|
|
replicas:
|
|
default: 2
|
|
format: int32
|
|
type: integer
|
|
resources:
|
|
description: Resources defines the amount of memory and CPU
|
|
to allocate to each component of the Control Plane (kube-apiserver,
|
|
controller-manager, and scheduler).
|
|
properties:
|
|
apiServer:
|
|
description: ResourceRequirements describes the compute
|
|
resource requirements.
|
|
properties:
|
|
limits:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Limits describes the maximum amount
|
|
of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
requests:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Requests describes the minimum amount
|
|
of compute resources required. If Requests is omitted
|
|
for a container, it defaults to Limits if that is
|
|
explicitly specified, otherwise to an implementation-defined
|
|
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
type: object
|
|
controllerManager:
|
|
description: ResourceRequirements describes the compute
|
|
resource requirements.
|
|
properties:
|
|
limits:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Limits describes the maximum amount
|
|
of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
requests:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Requests describes the minimum amount
|
|
of compute resources required. If Requests is omitted
|
|
for a container, it defaults to Limits if that is
|
|
explicitly specified, otherwise to an implementation-defined
|
|
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
type: object
|
|
scheduler:
|
|
description: ResourceRequirements describes the compute
|
|
resource requirements.
|
|
properties:
|
|
limits:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Limits describes the maximum amount
|
|
of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
requests:
|
|
additionalProperties:
|
|
anyOf:
|
|
- type: integer
|
|
- type: string
|
|
pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
|
|
x-kubernetes-int-or-string: true
|
|
description: 'Requests describes the minimum amount
|
|
of compute resources required. If Requests is omitted
|
|
for a container, it defaults to Limits if that is
|
|
explicitly specified, otherwise to an implementation-defined
|
|
value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/'
|
|
type: object
|
|
type: object
|
|
type: object
|
|
tolerations:
|
|
description: 'If specified, the Tenant Control Plane pod''s
|
|
tolerations. More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/'
|
|
items:
|
|
description: The pod this Toleration is attached to tolerates
|
|
any taint that matches the triple <key,value,effect> using
|
|
the matching operator <operator>.
|
|
properties:
|
|
effect:
|
|
description: Effect indicates the taint effect to match.
|
|
Empty means match all taint effects. When specified,
|
|
allowed values are NoSchedule, PreferNoSchedule and
|
|
NoExecute.
|
|
type: string
|
|
key:
|
|
description: Key is the taint key that the toleration
|
|
applies to. Empty means match all taint keys. If the
|
|
key is empty, operator must be Exists; this combination
|
|
means to match all values and all keys.
|
|
type: string
|
|
operator:
|
|
description: Operator represents a key's relationship
|
|
to the value. Valid operators are Exists and Equal.
|
|
Defaults to Equal. Exists is equivalent to wildcard
|
|
for value, so that a pod can tolerate all taints of
|
|
a particular category.
|
|
type: string
|
|
tolerationSeconds:
|
|
description: TolerationSeconds represents the period
|
|
of time the toleration (which must be of effect NoExecute,
|
|
otherwise this field is ignored) tolerates the taint.
|
|
By default, it is not set, which means tolerate the
|
|
taint forever (do not evict). Zero and negative values
|
|
will be treated as 0 (evict immediately) by the system.
|
|
format: int64
|
|
type: integer
|
|
value:
|
|
description: Value is the taint value the toleration
|
|
matches to. If the operator is Exists, the value should
|
|
be empty, otherwise just a regular string.
|
|
type: string
|
|
type: object
|
|
type: array
|
|
topologySpreadConstraints:
|
|
description: TopologySpreadConstraints describes how the Tenant
|
|
Control Plane pods ought to spread across topology domains.
|
|
Scheduler will schedule pods in a way which abides by the
|
|
constraints. In case of nil underlying LabelSelector, the
|
|
Kamaji one for the given Tenant Control Plane will be used.
|
|
All topologySpreadConstraints are ANDed.
|
|
items:
|
|
description: TopologySpreadConstraint specifies how to spread
|
|
matching pods among the given topology.
|
|
properties:
|
|
labelSelector:
|
|
description: LabelSelector is used to find matching
|
|
pods. Pods that match this label selector are counted
|
|
to determine the number of pods in their corresponding
|
|
topology domain.
|
|
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.
|
|
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.
|
|
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.
|
|
items:
|
|
type: string
|
|
type: array
|
|
required:
|
|
- key
|
|
- operator
|
|
type: object
|
|
type: array
|
|
matchLabels:
|
|
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.
|
|
type: object
|
|
type: object
|
|
x-kubernetes-map-type: atomic
|
|
matchLabelKeys:
|
|
description: MatchLabelKeys is a set of pod label keys
|
|
to select the pods over which spreading will be calculated.
|
|
The keys are used to lookup values from the incoming
|
|
pod labels, those key-value labels are ANDed with
|
|
labelSelector to select the group of existing pods
|
|
over which spreading will be calculated for the incoming
|
|
pod. Keys that don't exist in the incoming pod labels
|
|
will be ignored. A null or empty list means only match
|
|
against labelSelector.
|
|
items:
|
|
type: string
|
|
type: array
|
|
x-kubernetes-list-type: atomic
|
|
maxSkew:
|
|
description: 'MaxSkew describes the degree to which
|
|
pods may be unevenly distributed. When `whenUnsatisfiable=DoNotSchedule`,
|
|
it is the maximum permitted difference between the
|
|
number of matching pods in the target topology and
|
|
the global minimum. The global minimum is the minimum
|
|
number of matching pods in an eligible domain or zero
|
|
if the number of eligible domains is less than MinDomains.
|
|
For example, in a 3-zone cluster, MaxSkew is set to
|
|
1, and pods with the same labelSelector spread as
|
|
2/2/1: In this case, the global minimum is 1. | zone1
|
|
| zone2 | zone3 | | P P | P P | P | - if MaxSkew
|
|
is 1, incoming pod can only be scheduled to zone3
|
|
to become 2/2/2; scheduling it onto zone1(zone2) would
|
|
make the ActualSkew(3-1) on zone1(zone2) violate MaxSkew(1).
|
|
- if MaxSkew is 2, incoming pod can be scheduled onto
|
|
any zone. When `whenUnsatisfiable=ScheduleAnyway`,
|
|
it is used to give higher precedence to topologies
|
|
that satisfy it. It''s a required field. Default value
|
|
is 1 and 0 is not allowed.'
|
|
format: int32
|
|
type: integer
|
|
minDomains:
|
|
description: "MinDomains indicates a minimum number
|
|
of eligible domains. When the number of eligible domains
|
|
with matching topology keys is less than minDomains,
|
|
Pod Topology Spread treats \"global minimum\" as 0,
|
|
and then the calculation of Skew is performed. And
|
|
when the number of eligible domains with matching
|
|
topology keys equals or greater than minDomains, this
|
|
value has no effect on scheduling. As a result, when
|
|
the number of eligible domains is less than minDomains,
|
|
scheduler won't schedule more than maxSkew Pods to
|
|
those domains. If value is nil, the constraint behaves
|
|
as if MinDomains is equal to 1. Valid values are integers
|
|
greater than 0. When value is not nil, WhenUnsatisfiable
|
|
must be DoNotSchedule. \n For example, in a 3-zone
|
|
cluster, MaxSkew is set to 2, MinDomains is set to
|
|
5 and pods with the same labelSelector spread as 2/2/2:
|
|
| zone1 | zone2 | zone3 | | P P | P P | P P |
|
|
The number of domains is less than 5(MinDomains),
|
|
so \"global minimum\" is treated as 0. In this situation,
|
|
new pod with the same labelSelector cannot be scheduled,
|
|
because computed skew will be 3(3 - 0) if new Pod
|
|
is scheduled to any of the three zones, it will violate
|
|
MaxSkew. \n This is a beta field and requires the
|
|
MinDomainsInPodTopologySpread feature gate to be enabled
|
|
(enabled by default)."
|
|
format: int32
|
|
type: integer
|
|
nodeAffinityPolicy:
|
|
description: "NodeAffinityPolicy indicates how we will
|
|
treat Pod's nodeAffinity/nodeSelector when calculating
|
|
pod topology spread skew. Options are: - Honor: only
|
|
nodes matching nodeAffinity/nodeSelector are included
|
|
in the calculations. - Ignore: nodeAffinity/nodeSelector
|
|
are ignored. All nodes are included in the calculations.
|
|
\n If this value is nil, the behavior is equivalent
|
|
to the Honor policy. This is a alpha-level feature
|
|
enabled by the NodeInclusionPolicyInPodTopologySpread
|
|
feature flag."
|
|
type: string
|
|
nodeTaintsPolicy:
|
|
description: "NodeTaintsPolicy indicates how we will
|
|
treat node taints when calculating pod topology spread
|
|
skew. Options are: - Honor: nodes without taints,
|
|
along with tainted nodes for which the incoming pod
|
|
has a toleration, are included. - Ignore: node taints
|
|
are ignored. All nodes are included. \n If this value
|
|
is nil, the behavior is equivalent to the Ignore policy.
|
|
This is a alpha-level feature enabled by the NodeInclusionPolicyInPodTopologySpread
|
|
feature flag."
|
|
type: string
|
|
topologyKey:
|
|
description: TopologyKey is the key of node labels.
|
|
Nodes that have a label with this key and identical
|
|
values are considered to be in the same topology.
|
|
We consider each <key, value> as a "bucket", and try
|
|
to put balanced number of pods into each bucket. We
|
|
define a domain as a particular instance of a topology.
|
|
Also, we define an eligible domain as a domain whose
|
|
nodes meet the requirements of nodeAffinityPolicy
|
|
and nodeTaintsPolicy. e.g. If TopologyKey is "kubernetes.io/hostname",
|
|
each Node is a domain of that topology. And, if TopologyKey
|
|
is "topology.kubernetes.io/zone", each zone is a domain
|
|
of that topology. It's a required field.
|
|
type: string
|
|
whenUnsatisfiable:
|
|
description: 'WhenUnsatisfiable indicates how to deal
|
|
with a pod if it doesn''t satisfy the spread constraint.
|
|
- DoNotSchedule (default) tells the scheduler not
|
|
to schedule it. - ScheduleAnyway tells the scheduler
|
|
to schedule the pod in any location, but giving higher
|
|
precedence to topologies that would help reduce the
|
|
skew. A constraint is considered "Unsatisfiable" for
|
|
an incoming pod if and only if every possible node
|
|
assignment for that pod would violate "MaxSkew" on
|
|
some topology. For example, in a 3-zone cluster, MaxSkew
|
|
is set to 1, and pods with the same labelSelector
|
|
spread as 3/1/1: | zone1 | zone2 | zone3 | | P P P
|
|
| P | P | If WhenUnsatisfiable is set to DoNotSchedule,
|
|
incoming pod can only be scheduled to zone2(zone3)
|
|
to become 3/2/1(3/1/2) as ActualSkew(2-1) on zone2(zone3)
|
|
satisfies MaxSkew(1). In other words, the cluster
|
|
can still be imbalanced, but scheduler won''t make
|
|
it *more* imbalanced. It''s a required field.'
|
|
type: string
|
|
required:
|
|
- maxSkew
|
|
- topologyKey
|
|
- whenUnsatisfiable
|
|
type: object
|
|
type: array
|
|
type: object
|
|
ingress:
|
|
description: Defining the options for an Optional Ingress which
|
|
will expose API Server of the Tenant Control Plane
|
|
properties:
|
|
additionalMetadata:
|
|
description: AdditionalMetadata defines which additional metadata,
|
|
such as labels and annotations, must be attached to the
|
|
created resource.
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
labels:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
hostname:
|
|
description: Hostname is an optional field which will be used
|
|
as Ingress's Host. If it is not defined, Ingress's host
|
|
will be "<tenant>.<namespace>.<domain>", where domain is
|
|
specified under NetworkProfileSpec
|
|
type: string
|
|
ingressClassName:
|
|
type: string
|
|
type: object
|
|
service:
|
|
description: Defining the options for the Tenant Control Plane
|
|
Service resource.
|
|
properties:
|
|
additionalMetadata:
|
|
description: AdditionalMetadata defines which additional metadata,
|
|
such as labels and annotations, must be attached to the
|
|
created resource.
|
|
properties:
|
|
annotations:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
labels:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
serviceType:
|
|
description: ServiceType allows specifying how to expose the
|
|
Tenant Control Plane.
|
|
enum:
|
|
- ClusterIP
|
|
- NodePort
|
|
- LoadBalancer
|
|
type: string
|
|
required:
|
|
- serviceType
|
|
type: object
|
|
required:
|
|
- service
|
|
type: object
|
|
dataStore:
|
|
description: DataStore allows to specify a DataStore that should be
|
|
used to store the Kubernetes data for the given Tenant Control Plane.
|
|
This parameter is optional and acts as an override over the default
|
|
one which is used by the Kamaji Operator. Migration from a different
|
|
DataStore to another one is not yet supported and the reconciliation
|
|
will be blocked.
|
|
type: string
|
|
kubernetes:
|
|
description: Kubernetes specification for tenant control plane
|
|
properties:
|
|
admissionControllers:
|
|
default:
|
|
- CertificateApproval
|
|
- CertificateSigning
|
|
- CertificateSubjectRestriction
|
|
- DefaultIngressClass
|
|
- DefaultStorageClass
|
|
- DefaultTolerationSeconds
|
|
- LimitRanger
|
|
- MutatingAdmissionWebhook
|
|
- NamespaceLifecycle
|
|
- PersistentVolumeClaimResize
|
|
- Priority
|
|
- ResourceQuota
|
|
- RuntimeClass
|
|
- ServiceAccount
|
|
- StorageObjectInUseProtection
|
|
- TaintNodesByCondition
|
|
- ValidatingAdmissionWebhook
|
|
description: 'List of enabled Admission Controllers for the Tenant
|
|
cluster. Full reference available here: https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers'
|
|
items:
|
|
enum:
|
|
- AlwaysAdmit
|
|
- AlwaysDeny
|
|
- AlwaysPullImages
|
|
- CertificateApproval
|
|
- CertificateSigning
|
|
- CertificateSubjectRestriction
|
|
- DefaultIngressClass
|
|
- DefaultStorageClass
|
|
- DefaultTolerationSeconds
|
|
- DenyEscalatingExec
|
|
- DenyExecOnPrivileged
|
|
- DenyServiceExternalIPs
|
|
- EventRateLimit
|
|
- ExtendedResourceToleration
|
|
- ImagePolicyWebhook
|
|
- LimitPodHardAntiAffinityTopology
|
|
- LimitRanger
|
|
- MutatingAdmissionWebhook
|
|
- NamespaceAutoProvision
|
|
- NamespaceExists
|
|
- NamespaceLifecycle
|
|
- NodeRestriction
|
|
- OwnerReferencesPermissionEnforcement
|
|
- PersistentVolumeClaimResize
|
|
- PersistentVolumeLabel
|
|
- PodNodeSelector
|
|
- PodSecurity
|
|
- PodSecurityPolicy
|
|
- PodTolerationRestriction
|
|
- Priority
|
|
- ResourceQuota
|
|
- RuntimeClass
|
|
- SecurityContextDeny
|
|
- ServiceAccount
|
|
- StorageObjectInUseProtection
|
|
- TaintNodesByCondition
|
|
- ValidatingAdmissionWebhook
|
|
type: string
|
|
type: array
|
|
kubelet:
|
|
properties:
|
|
cgroupfs:
|
|
description: CGroupFS defines the cgroup driver for Kubelet
|
|
https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/configure-cgroup-driver/
|
|
enum:
|
|
- systemd
|
|
- cgroupfs
|
|
type: string
|
|
type: object
|
|
version:
|
|
description: Kubernetes Version for the tenant control plane
|
|
type: string
|
|
required:
|
|
- kubelet
|
|
- version
|
|
type: object
|
|
networkProfile:
|
|
description: NetworkProfile specifies how the network is
|
|
properties:
|
|
address:
|
|
description: Address where API server of will be exposed. In case
|
|
of LoadBalancer Service, this can be empty in order to use the
|
|
exposed IP provided by the cloud controller manager.
|
|
type: string
|
|
allowAddressAsExternalIP:
|
|
description: AllowAddressAsExternalIP will include tenantControlPlane.Spec.NetworkProfile.Address
|
|
in the section of ExternalIPs of the Kubernetes Service (only
|
|
ClusterIP or NodePort)
|
|
type: boolean
|
|
certSANs:
|
|
description: CertSANs sets extra Subject Alternative Names (SANs)
|
|
for the API Server signing certificate. Use this field to add
|
|
additional hostnames when exposing the Tenant Control Plane
|
|
with third solutions.
|
|
items:
|
|
type: string
|
|
type: array
|
|
dnsServiceIPs:
|
|
default:
|
|
- 10.96.0.10
|
|
items:
|
|
type: string
|
|
type: array
|
|
podCidr:
|
|
default: 10.244.0.0/16
|
|
description: CIDR for Kubernetes Pods
|
|
type: string
|
|
port:
|
|
default: 6443
|
|
description: Port where API server of will be exposed
|
|
format: int32
|
|
type: integer
|
|
serviceCidr:
|
|
default: 10.96.0.0/16
|
|
description: Kubernetes Service
|
|
type: string
|
|
type: object
|
|
required:
|
|
- controlPlane
|
|
- kubernetes
|
|
type: object
|
|
status:
|
|
description: TenantControlPlaneStatus defines the observed state of TenantControlPlane.
|
|
properties:
|
|
addons:
|
|
description: Addons contains the status of the different Addons
|
|
properties:
|
|
coreDNS:
|
|
description: AddonStatus defines the observed state of an Addon.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
enabled:
|
|
type: boolean
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
required:
|
|
- enabled
|
|
type: object
|
|
konnectivity:
|
|
description: KonnectivityStatus defines the status of Konnectivity
|
|
as Addon.
|
|
properties:
|
|
agent:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
description: Last time when k8s object was updated
|
|
format: date-time
|
|
type: string
|
|
name:
|
|
type: string
|
|
namespace:
|
|
type: string
|
|
type: object
|
|
certificate:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
clusterrolebinding:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
description: Last time when k8s object was updated
|
|
format: date-time
|
|
type: string
|
|
name:
|
|
type: string
|
|
namespace:
|
|
type: string
|
|
type: object
|
|
configMap:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
name:
|
|
type: string
|
|
type: object
|
|
enabled:
|
|
type: boolean
|
|
kubeconfig:
|
|
description: KubeconfigStatus contains information about the
|
|
generated kubeconfig.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
sa:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
description: Last time when k8s object was updated
|
|
format: date-time
|
|
type: string
|
|
name:
|
|
type: string
|
|
namespace:
|
|
type: string
|
|
type: object
|
|
service:
|
|
description: KubernetesServiceStatus defines the status for
|
|
the Tenant Control Plane Service in the management cluster.
|
|
properties:
|
|
conditions:
|
|
description: Current service state
|
|
items:
|
|
description: "Condition contains details for one aspect
|
|
of the current state of this API Resource. --- This
|
|
struct is intended for direct use as an array at the
|
|
field path .status.conditions. For example, \n type
|
|
FooStatus struct{ // Represents the observations of
|
|
a foo's current state. // Known .status.conditions.type
|
|
are: \"Available\", \"Progressing\", and \"Degraded\"
|
|
// +patchMergeKey=type // +patchStrategy=merge //
|
|
+listType=map // +listMapKey=type Conditions []metav1.Condition
|
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\"
|
|
patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
|
|
\n // other fields }"
|
|
properties:
|
|
lastTransitionTime:
|
|
description: lastTransitionTime is the 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: message is a human readable message
|
|
indicating details about the transition. This
|
|
may be an empty string.
|
|
maxLength: 32768
|
|
type: string
|
|
observedGeneration:
|
|
description: observedGeneration represents the .metadata.generation
|
|
that the condition was set based upon. For instance,
|
|
if .metadata.generation is currently 12, but the
|
|
.status.conditions[x].observedGeneration is 9,
|
|
the condition is out of date with respect to the
|
|
current state of the instance.
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
reason:
|
|
description: reason contains a programmatic identifier
|
|
indicating the reason for the condition's last
|
|
transition. Producers of specific condition types
|
|
may define expected values and meanings for this
|
|
field, and whether the values are considered a
|
|
guaranteed API. The value should be a CamelCase
|
|
string. This field may not be empty.
|
|
maxLength: 1024
|
|
minLength: 1
|
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
|
type: string
|
|
status:
|
|
description: status of the condition, one of True,
|
|
False, Unknown.
|
|
enum:
|
|
- "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. The regex it matches
|
|
is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
required:
|
|
- lastTransitionTime
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-map-keys:
|
|
- type
|
|
x-kubernetes-list-type: map
|
|
loadBalancer:
|
|
description: LoadBalancer contains the current status
|
|
of the load-balancer, if one is present.
|
|
properties:
|
|
ingress:
|
|
description: Ingress is a list containing ingress
|
|
points for the load-balancer. Traffic intended for
|
|
the service should be sent to these ingress points.
|
|
items:
|
|
description: 'LoadBalancerIngress represents the
|
|
status of a load-balancer ingress point: traffic
|
|
intended for the service should be sent to an
|
|
ingress point.'
|
|
properties:
|
|
hostname:
|
|
description: Hostname is set for load-balancer
|
|
ingress points that are DNS based (typically
|
|
AWS load-balancers)
|
|
type: string
|
|
ip:
|
|
description: IP is set for load-balancer ingress
|
|
points that are IP based (typically GCE or
|
|
OpenStack load-balancers)
|
|
type: string
|
|
ports:
|
|
description: Ports is a list of records of service
|
|
ports If used, every port defined in the service
|
|
should have an entry in it
|
|
items:
|
|
properties:
|
|
error:
|
|
description: 'Error is to record the problem
|
|
with the service port The format of
|
|
the error shall comply with the following
|
|
rules: - built-in error values shall
|
|
be specified in this file and those
|
|
shall use CamelCase names - cloud provider
|
|
specific error values must have names
|
|
that comply with the format foo.example.com/CamelCase.
|
|
--- The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
port:
|
|
description: Port is the port number of
|
|
the service port of which status is
|
|
recorded here
|
|
format: int32
|
|
type: integer
|
|
protocol:
|
|
default: TCP
|
|
description: 'Protocol is the protocol
|
|
of the service port of which status
|
|
is recorded here The supported values
|
|
are: "TCP", "UDP", "SCTP"'
|
|
type: string
|
|
required:
|
|
- port
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-type: atomic
|
|
type: object
|
|
type: array
|
|
type: object
|
|
name:
|
|
description: The name of the Service for the given cluster.
|
|
type: string
|
|
namespace:
|
|
description: The namespace which the Service for the given
|
|
cluster is deployed.
|
|
type: string
|
|
port:
|
|
description: The port where the service is running
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- name
|
|
- namespace
|
|
- port
|
|
type: object
|
|
required:
|
|
- enabled
|
|
type: object
|
|
kubeProxy:
|
|
description: AddonStatus defines the observed state of an Addon.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
enabled:
|
|
type: boolean
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
required:
|
|
- enabled
|
|
type: object
|
|
type: object
|
|
certificates:
|
|
description: Certificates contains information about the different
|
|
certificates that are necessary to run a kubernetes control plane
|
|
properties:
|
|
apiServer:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
apiServerKubeletClient:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
ca:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
etcd:
|
|
description: ETCDCertificatesStatus defines the observed state
|
|
of ETCD Certificate for API server.
|
|
properties:
|
|
apiServer:
|
|
description: APIServerCertificatesStatus defines the observed
|
|
state of ETCD Certificate for API server.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
ca:
|
|
description: ETCDCertificateStatus defines the observed state
|
|
of ETCD Certificate for API server.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
frontProxyCA:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
frontProxyClient:
|
|
description: CertificatePrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
sa:
|
|
description: PublicKeyPrivateKeyPairStatus defines the status.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
controlPlaneEndpoint:
|
|
description: ControlPlaneEndpoint contains the status of the kubernetes
|
|
control plane
|
|
type: string
|
|
kubeadmPhase:
|
|
description: KubeadmPhase contains the status of the kubeadm phases
|
|
action
|
|
properties:
|
|
bootstrapToken:
|
|
description: KubeadmPhaseStatus contains the status of a kubeadm
|
|
phase action.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
uploadConfigKubeadm:
|
|
description: KubeadmPhaseStatus contains the status of a kubeadm
|
|
phase action.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
uploadConfigKubelet:
|
|
description: KubeadmPhaseStatus contains the status of a kubeadm
|
|
phase action.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
required:
|
|
- bootstrapToken
|
|
- uploadConfigKubeadm
|
|
- uploadConfigKubelet
|
|
type: object
|
|
kubeadmconfig:
|
|
description: KubeadmConfig contains the status of the configuration
|
|
required by kubeadm
|
|
properties:
|
|
checksum:
|
|
description: Checksum of the kubeadm configuration to detect changes
|
|
type: string
|
|
configmapName:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
type: object
|
|
kubeconfig:
|
|
description: KubeConfig contains information about the kubenconfigs
|
|
that control plane pieces need
|
|
properties:
|
|
admin:
|
|
description: KubeconfigStatus contains information about the generated
|
|
kubeconfig.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
controllerManager:
|
|
description: KubeconfigStatus contains information about the generated
|
|
kubeconfig.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
scheduler:
|
|
description: KubeconfigStatus contains information about the generated
|
|
kubeconfig.
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
kubernetesResources:
|
|
description: Kubernetes contains information about the reconciliation
|
|
of the required Kubernetes resources deployed in the admin cluster
|
|
properties:
|
|
deployment:
|
|
description: KubernetesDeploymentStatus defines the status for
|
|
the Tenant Control Plane Deployment in the management cluster.
|
|
properties:
|
|
availableReplicas:
|
|
description: Total number of available pods (ready for at
|
|
least minReadySeconds) targeted by this deployment.
|
|
format: int32
|
|
type: integer
|
|
collisionCount:
|
|
description: Count of hash collisions for the Deployment.
|
|
The Deployment controller uses this field as a collision
|
|
avoidance mechanism when it needs to create the name for
|
|
the newest ReplicaSet.
|
|
format: int32
|
|
type: integer
|
|
conditions:
|
|
description: Represents the latest available observations
|
|
of a deployment's current state.
|
|
items:
|
|
description: DeploymentCondition describes the state of
|
|
a deployment at a certain point.
|
|
properties:
|
|
lastTransitionTime:
|
|
description: Last time the condition transitioned from
|
|
one status to another.
|
|
format: date-time
|
|
type: string
|
|
lastUpdateTime:
|
|
description: The last time this condition was updated.
|
|
format: date-time
|
|
type: string
|
|
message:
|
|
description: A human readable message indicating details
|
|
about the transition.
|
|
type: string
|
|
reason:
|
|
description: The reason for the condition's last transition.
|
|
type: string
|
|
status:
|
|
description: Status of the condition, one of True, False,
|
|
Unknown.
|
|
type: string
|
|
type:
|
|
description: Type of deployment condition.
|
|
type: string
|
|
required:
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
lastUpdate:
|
|
description: Last time when deployment was updated
|
|
format: date-time
|
|
type: string
|
|
name:
|
|
description: The name of the Deployment for the given cluster.
|
|
type: string
|
|
namespace:
|
|
description: The namespace which the Deployment for the given
|
|
cluster is deployed.
|
|
type: string
|
|
observedGeneration:
|
|
description: The generation observed by the deployment controller.
|
|
format: int64
|
|
type: integer
|
|
readyReplicas:
|
|
description: readyReplicas is the number of pods targeted
|
|
by this Deployment with a Ready Condition.
|
|
format: int32
|
|
type: integer
|
|
replicas:
|
|
description: Total number of non-terminated pods targeted
|
|
by this deployment (their labels match the selector).
|
|
format: int32
|
|
type: integer
|
|
selector:
|
|
description: Selector is the label selector used to group
|
|
the Tenant Control Plane Pods used by the scale subresource.
|
|
type: string
|
|
unavailableReplicas:
|
|
description: Total number of unavailable pods targeted by
|
|
this deployment. This is the total number of pods that are
|
|
still required for the deployment to have 100% available
|
|
capacity. They may either be pods that are running but not
|
|
yet available or pods that still have not been created.
|
|
format: int32
|
|
type: integer
|
|
updatedReplicas:
|
|
description: Total number of non-terminated pods targeted
|
|
by this deployment that have the desired template spec.
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- name
|
|
- namespace
|
|
- selector
|
|
type: object
|
|
ingress:
|
|
description: KubernetesIngressStatus defines the status for the
|
|
Tenant Control Plane Ingress in the management cluster.
|
|
properties:
|
|
loadBalancer:
|
|
description: LoadBalancer contains the current status of the
|
|
load-balancer.
|
|
properties:
|
|
ingress:
|
|
description: Ingress is a list containing ingress points
|
|
for the load-balancer. Traffic intended for the service
|
|
should be sent to these ingress points.
|
|
items:
|
|
description: 'LoadBalancerIngress represents the status
|
|
of a load-balancer ingress point: traffic intended
|
|
for the service should be sent to an ingress point.'
|
|
properties:
|
|
hostname:
|
|
description: Hostname is set for load-balancer ingress
|
|
points that are DNS based (typically AWS load-balancers)
|
|
type: string
|
|
ip:
|
|
description: IP is set for load-balancer ingress
|
|
points that are IP based (typically GCE or OpenStack
|
|
load-balancers)
|
|
type: string
|
|
ports:
|
|
description: Ports is a list of records of service
|
|
ports If used, every port defined in the service
|
|
should have an entry in it
|
|
items:
|
|
properties:
|
|
error:
|
|
description: 'Error is to record the problem
|
|
with the service port The format of the
|
|
error shall comply with the following rules:
|
|
- built-in error values shall be specified
|
|
in this file and those shall use CamelCase
|
|
names - cloud provider specific error values
|
|
must have names that comply with the format
|
|
foo.example.com/CamelCase. --- The regex
|
|
it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
port:
|
|
description: Port is the port number of the
|
|
service port of which status is recorded
|
|
here
|
|
format: int32
|
|
type: integer
|
|
protocol:
|
|
default: TCP
|
|
description: 'Protocol is the protocol of
|
|
the service port of which status is recorded
|
|
here The supported values are: "TCP", "UDP",
|
|
"SCTP"'
|
|
type: string
|
|
required:
|
|
- port
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-type: atomic
|
|
type: object
|
|
type: array
|
|
type: object
|
|
name:
|
|
description: The name of the Ingress for the given cluster.
|
|
type: string
|
|
namespace:
|
|
description: The namespace which the Ingress for the given
|
|
cluster is deployed.
|
|
type: string
|
|
required:
|
|
- name
|
|
- namespace
|
|
type: object
|
|
service:
|
|
description: KubernetesServiceStatus defines the status for the
|
|
Tenant Control Plane Service in the management cluster.
|
|
properties:
|
|
conditions:
|
|
description: Current service state
|
|
items:
|
|
description: "Condition contains details for one aspect
|
|
of the current state of this API Resource. --- This struct
|
|
is intended for direct use as an array at the field path
|
|
.status.conditions. For example, \n type FooStatus struct{
|
|
// Represents the observations of a foo's current state.
|
|
// Known .status.conditions.type are: \"Available\", \"Progressing\",
|
|
and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
|
|
// +listType=map // +listMapKey=type Conditions []metav1.Condition
|
|
`json:\"conditions,omitempty\" patchStrategy:\"merge\"
|
|
patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`
|
|
\n // other fields }"
|
|
properties:
|
|
lastTransitionTime:
|
|
description: lastTransitionTime is the 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: message is a human readable message indicating
|
|
details about the transition. This may be an empty
|
|
string.
|
|
maxLength: 32768
|
|
type: string
|
|
observedGeneration:
|
|
description: observedGeneration represents the .metadata.generation
|
|
that the condition was set based upon. For instance,
|
|
if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration
|
|
is 9, the condition is out of date with respect to
|
|
the current state of the instance.
|
|
format: int64
|
|
minimum: 0
|
|
type: integer
|
|
reason:
|
|
description: reason contains a programmatic identifier
|
|
indicating the reason for the condition's last transition.
|
|
Producers of specific condition types may define expected
|
|
values and meanings for this field, and whether the
|
|
values are considered a guaranteed API. The value
|
|
should be a CamelCase string. This field may not be
|
|
empty.
|
|
maxLength: 1024
|
|
minLength: 1
|
|
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
|
|
type: string
|
|
status:
|
|
description: status of the condition, one of True, False,
|
|
Unknown.
|
|
enum:
|
|
- "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. The regex it matches is
|
|
(dns1123SubdomainFmt/)?(qualifiedNameFmt)
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
required:
|
|
- lastTransitionTime
|
|
- message
|
|
- reason
|
|
- status
|
|
- type
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-map-keys:
|
|
- type
|
|
x-kubernetes-list-type: map
|
|
loadBalancer:
|
|
description: LoadBalancer contains the current status of the
|
|
load-balancer, if one is present.
|
|
properties:
|
|
ingress:
|
|
description: Ingress is a list containing ingress points
|
|
for the load-balancer. Traffic intended for the service
|
|
should be sent to these ingress points.
|
|
items:
|
|
description: 'LoadBalancerIngress represents the status
|
|
of a load-balancer ingress point: traffic intended
|
|
for the service should be sent to an ingress point.'
|
|
properties:
|
|
hostname:
|
|
description: Hostname is set for load-balancer ingress
|
|
points that are DNS based (typically AWS load-balancers)
|
|
type: string
|
|
ip:
|
|
description: IP is set for load-balancer ingress
|
|
points that are IP based (typically GCE or OpenStack
|
|
load-balancers)
|
|
type: string
|
|
ports:
|
|
description: Ports is a list of records of service
|
|
ports If used, every port defined in the service
|
|
should have an entry in it
|
|
items:
|
|
properties:
|
|
error:
|
|
description: 'Error is to record the problem
|
|
with the service port The format of the
|
|
error shall comply with the following rules:
|
|
- built-in error values shall be specified
|
|
in this file and those shall use CamelCase
|
|
names - cloud provider specific error values
|
|
must have names that comply with the format
|
|
foo.example.com/CamelCase. --- The regex
|
|
it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)'
|
|
maxLength: 316
|
|
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
|
|
type: string
|
|
port:
|
|
description: Port is the port number of the
|
|
service port of which status is recorded
|
|
here
|
|
format: int32
|
|
type: integer
|
|
protocol:
|
|
default: TCP
|
|
description: 'Protocol is the protocol of
|
|
the service port of which status is recorded
|
|
here The supported values are: "TCP", "UDP",
|
|
"SCTP"'
|
|
type: string
|
|
required:
|
|
- port
|
|
- protocol
|
|
type: object
|
|
type: array
|
|
x-kubernetes-list-type: atomic
|
|
type: object
|
|
type: array
|
|
type: object
|
|
name:
|
|
description: The name of the Service for the given cluster.
|
|
type: string
|
|
namespace:
|
|
description: The namespace which the Service for the given
|
|
cluster is deployed.
|
|
type: string
|
|
port:
|
|
description: The port where the service is running
|
|
format: int32
|
|
type: integer
|
|
required:
|
|
- name
|
|
- namespace
|
|
- port
|
|
type: object
|
|
version:
|
|
description: KubernetesVersion contains the information regarding
|
|
the running Kubernetes version, and its upgrade status.
|
|
properties:
|
|
status:
|
|
default: Provisioning
|
|
description: Status returns the current status of the Kubernetes
|
|
version, such as its provisioning state, or completed upgrade.
|
|
enum:
|
|
- Provisioning
|
|
- Upgrading
|
|
- Ready
|
|
- NotReady
|
|
type: string
|
|
version:
|
|
description: Version is the running Kubernetes version of
|
|
the Tenant Control Plane.
|
|
type: string
|
|
type: object
|
|
type: object
|
|
storage:
|
|
description: Storage Status contains information about Kubernetes
|
|
storage system
|
|
properties:
|
|
certificate:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
config:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
secretName:
|
|
type: string
|
|
type: object
|
|
dataStoreName:
|
|
type: string
|
|
driver:
|
|
type: string
|
|
setup:
|
|
properties:
|
|
checksum:
|
|
type: string
|
|
lastUpdate:
|
|
format: date-time
|
|
type: string
|
|
schema:
|
|
type: string
|
|
user:
|
|
type: string
|
|
type: object
|
|
type: object
|
|
type: object
|
|
type: object
|
|
served: true
|
|
storage: true
|
|
subresources:
|
|
scale:
|
|
labelSelectorPath: .status.kubernetesResources.deployment.selector
|
|
specReplicasPath: .spec.controlPlane.deployment.replicas
|
|
statusReplicasPath: .status.kubernetesResources.deployment.replicas
|
|
status: {}
|