apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  creationTimestamp: null
  labels:
    controller-tools.k8s.io: "1.0"
  name: uniteddeployments.apps.kruise.io
spec:
  additionalPrinterColumns:
  - JSONPath: .spec.replicas
    description: The desired number of pods.
    name: DESIRED
    type: integer
  - JSONPath: .status.replicas
    description: The number of currently all pods.
    name: CURRENT
    type: integer
  - JSONPath: .status.updatedReplicas
    description: The number of pods updated.
    name: UPDATED
    type: integer
  - JSONPath: .status.readyReplicas
    description: The number of pods ready.
    name: READY
    type: integer
  - JSONPath: .metadata.creationTimestamp
    description: CreationTimestamp is a timestamp representing the server time when
      this object was created. It is not guaranteed to be set in happens-before order
      across separate operations. Clients may not set this value. It is represented
      in RFC3339 form and is in UTC.
    name: AGE
    type: date
  group: apps.kruise.io
  names:
    kind: UnitedDeployment
    plural: uniteddeployments
    shortNames:
    - ud
  scope: Namespaced
  subresources:
    scale:
      labelSelectorPath: .status.selector
      specReplicasPath: .spec.replicas
      statusReplicasPath: .status.replicas
    status: {}
  validation:
    openAPIV3Schema:
      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/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/api-conventions.md#types-kinds'
          type: string
        metadata:
          type: object
        spec:
          properties:
            replicas:
              description: Replicas is the total desired replicas of all the subsets.
                If unspecified, defaults to 1.
              format: int32
              type: integer
            revisionHistoryLimit:
              description: Indicates the number of histories to be conserved. If unspecified,
                defaults to 10.
              format: int32
              type: integer
            selector:
              description: Selector is a label query over pods that should match the
                replica count. It must match the pod template's labels.
              type: object
            template:
              description: Template describes the subset that will be created.
              properties:
                advancedStatefulSetTemplate:
                  description: AdvancedStatefulSet template
                  properties:
                    metadata:
                      type: object
                    spec:
                      properties:
                        podManagementPolicy:
                          description: podManagementPolicy controls how pods are created
                            during initial scale up, when replacing pods on nodes,
                            or when scaling down. The default policy is `OrderedReady`,
                            where pods are created in increasing order (pod-0, then
                            pod-1, etc) and the controller will wait until each pod
                            is ready before continuing. When scaling down, the pods
                            are removed in the opposite order. The alternative policy
                            is `Parallel` which will create pods in parallel to match
                            the desired scale without waiting, and on scale down will
                            delete all pods at once.
                          type: string
                        replicas:
                          description: 'replicas is the desired number of replicas
                            of the given Template. These are replicas in the sense
                            that they are instantiations of the same Template, but
                            individual replicas also have a consistent identity. If
                            unspecified, defaults to 1. TODO: Consider a rename of
                            this field.'
                          format: int32
                          type: integer
                        revisionHistoryLimit:
                          description: revisionHistoryLimit is the maximum number
                            of revisions that will be maintained in the StatefulSet's
                            revision history. The revision history consists of all
                            revisions not represented by a currently applied StatefulSetSpec
                            version. The default value is 10.
                          format: int32
                          type: integer
                        selector:
                          description: 'selector is a label query over pods that should
                            match the replica count. It must match the pod template''s
                            labels. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors'
                          type: object
                        serviceName:
                          description: 'serviceName is the name of the service that
                            governs this StatefulSet. This service must exist before
                            the StatefulSet, and is responsible for the network identity
                            of the set. Pods get DNS/hostnames that follow the pattern:
                            pod-specific-string.serviceName.default.svc.cluster.local
                            where "pod-specific-string" is managed by the StatefulSet
                            controller.'
                          type: string
                        template:
                          description: template is the object that describes the pod
                            that will be created if insufficient replicas are detected.
                            Each pod stamped out by the StatefulSet will fulfill this
                            Template, but have a unique identity from the rest of
                            the StatefulSet.
                          type: object
                        updateStrategy:
                          description: updateStrategy indicates the StatefulSetUpdateStrategy
                            that will be employed to update Pods in the StatefulSet
                            when a revision is made to Template.
                          properties:
                            rollingUpdate:
                              description: RollingUpdate is used to communicate parameters
                                when Type is RollingUpdateStatefulSetStrategyType.
                              properties:
                                inPlaceUpdateStrategy:
                                  description: InPlaceUpdateStrategy contains strategies
                                    for in-place update.
                                  properties:
                                    gracePeriodSeconds:
                                      description: GracePeriodSeconds is the timespan
                                        between set Pod status to not-ready and update
                                        images in Pod spec when in-place update a
                                        Pod.
                                      format: int32
                                      type: integer
                                  type: object
                                maxUnavailable:
                                  description: 'The maximum number of pods that can
                                    be unavailable during the update. Value can be
                                    an absolute number (ex: 5) or a percentage of
                                    desired pods (ex: 10%). Absolute number is calculated
                                    from percentage by rounding down. Also, maxUnavailable
                                    can just be allowed to work with Parallel podManagementPolicy.
                                    Defaults to 1.'
                                  oneOf:
                                  - type: string
                                  - type: integer
                                partition:
                                  description: 'Partition indicates the ordinal at
                                    which the StatefulSet should be partitioned by
                                    default. But if unorderedUpdate has been set:   -
                                    Partition indicates the number of pods with non-updated
                                    revisions when rolling update.   - It means controller
                                    will update $(replicas - partition) number of
                                    pod. Default value is 0.'
                                  format: int32
                                  type: integer
                                paused:
                                  description: Paused indicates that the StatefulSet
                                    is paused. Default value is false
                                  type: boolean
                                podUpdatePolicy:
                                  description: PodUpdatePolicy indicates how pods
                                    should be updated Default value is "ReCreate"
                                  type: string
                                unorderedUpdate:
                                  description: UnorderedUpdate contains strategies
                                    for non-ordered update. If it is not nil, pods
                                    will be updated with non-ordered sequence. Noted
                                    that UnorderedUpdate can only be allowed to work
                                    with Parallel podManagementPolicy
                                  properties:
                                    priorityStrategy:
                                      description: Priorities are the rules for calculating
                                        the priority of updating pods. Each pod to
                                        be updated, will pass through these terms
                                        and get a sum of weights.
                                      properties:
                                        orderPriority:
                                          description: 'Order priority terms, pods
                                            will be sorted by the value of orderedKey.
                                            For example: ``` orderPriority: - orderedKey:
                                            key1 - orderedKey: key2 ``` First, all
                                            pods which have key1 in labels will be
                                            sorted by the value of key1. Then, the
                                            left pods which have no key1 but have
                                            key2 in labels will be sorted by the value
                                            of key2 and put behind those pods have
                                            key1.'
                                          items:
                                            properties:
                                              orderedKey:
                                                description: Calculate priority by
                                                  value of this key. Values of this
                                                  key, will be sorted by GetInt(val).
                                                  GetInt method will find the last
                                                  int in value, such as getting 5
                                                  in value '5', getting 10 in value
                                                  'sts-10'.
                                                type: string
                                            required:
                                            - orderedKey
                                            type: object
                                          type: array
                                        weightPriority:
                                          description: Weight priority terms, pods
                                            will be sorted by the sum of all terms
                                            weight.
                                          items:
                                            properties:
                                              matchSelector:
                                                description: MatchSelector is used
                                                  to select by pod's labels.
                                                type: object
                                              weight:
                                                description: Weight associated with
                                                  matching the corresponding matchExpressions,
                                                  in the range 1-100.
                                                format: int32
                                                type: integer
                                            required:
                                            - weight
                                            - matchSelector
                                            type: object
                                          type: array
                                      type: object
                                  type: object
                              type: object
                            type:
                              description: Type indicates the type of the StatefulSetUpdateStrategy.
                                Default is RollingUpdate.
                              type: string
                          type: object
                        volumeClaimTemplates:
                          description: 'volumeClaimTemplates is a list of claims that
                            pods are allowed to reference. The StatefulSet controller
                            is responsible for mapping network identities to claims
                            in a way that maintains the identity of a pod. Every claim
                            in this list must have at least one matching (by name)
                            volumeMount in one container in the template. A claim
                            in this list takes precedence over any volumes in the
                            template, with the same name. TODO: Define the behavior
                            if a claim already exists with the same name.'
                          items:
                            type: object
                          type: array
                      required:
                      - selector
                      - template
                      type: object
                  required:
                  - spec
                  type: object
                statefulSetTemplate:
                  description: StatefulSet template
                  properties:
                    metadata:
                      type: object
                    spec:
                      type: object
                  required:
                  - spec
                  type: object
              type: object
            topology:
              description: Topology describes the pods distribution detail between
                each of subsets.
              properties:
                subsets:
                  description: Contains the details of each subset. Each element in
                    this array represents one subset which will be provisioned and
                    managed by UnitedDeployment.
                  items:
                    properties:
                      name:
                        description: Indicates subset name as a DNS_LABEL, which will
                          be used to generate subset workload name prefix in the format
                          '<deployment-name>-<subset-name>-'. Name should be unique
                          between all of the subsets under one UnitedDeployment.
                        type: string
                      nodeSelectorTerm:
                        description: Indicates the node selector to form the subset.
                          Depending on the node selector, pods provisioned could be
                          distributed across multiple groups of nodes. A subset's
                          nodeSelectorTerm is not allowed to be updated.
                        type: object
                      replicas:
                        description: Indicates the number of the pod to be created
                          under this subset. Replicas could also be percentage like
                          '10%', which means 10% of UnitedDeployment replicas of pods
                          will be distributed under this subset. If nil, the number
                          of replicas in this subset is determined by controller.
                          Controller will try to keep all the subsets with nil replicas
                          have average pods.
                        oneOf:
                        - type: string
                        - type: integer
                      tolerations:
                        description: Indicates the tolerations the pods under this
                          subset have. A subset's tolerations is not allowed to be
                          updated.
                        items:
                          type: object
                        type: array
                    required:
                    - name
                    type: object
                  type: array
              type: object
            updateStrategy:
              description: UpdateStrategy indicates the strategy the UnitedDeployment
                use to preform the update, when template is changed.
              properties:
                manualUpdate:
                  description: Includes all of the parameters a Manual update strategy
                    needs.
                  properties:
                    partitions:
                      description: Indicates number of subset partition.
                      type: object
                  type: object
                type:
                  description: Type of UnitedDeployment update strategy. Default is
                    Manual.
                  type: string
              type: object
          required:
          - selector
          type: object
        status:
          properties:
            collisionCount:
              description: Count of hash collisions for the UnitedDeployment. The
                UnitedDeployment controller uses this field as a collision avoidance
                mechanism when it needs to create the name for the newest ControllerRevision.
              format: int32
              type: integer
            conditions:
              description: Represents the latest available observations of a UnitedDeployment's
                current state.
              items:
                properties:
                  lastTransitionTime:
                    description: Last time the condition transitioned from one status
                      to another.
                    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 in place set condition.
                    type: string
                type: object
              type: array
            currentRevision:
              description: CurrentRevision, if not empty, indicates the current version
                of the UnitedDeployment.
              type: string
            observedGeneration:
              description: ObservedGeneration is the most recent generation observed
                for this UnitedDeployment. It corresponds to the UnitedDeployment's
                generation, which is updated on mutation by the API Server.
              format: int64
              type: integer
            readyReplicas:
              description: The number of ready replicas.
              format: int32
              type: integer
            replicas:
              description: Replicas is the most recently observed number of replicas.
              format: int32
              type: integer
            subsetReplicas:
              description: Records the topology detail information of the replicas
                of each subset.
              type: object
            updateStatus:
              description: Records the information of update progress.
              properties:
                currentPartitions:
                  description: Records the current partition.
                  type: object
                updatedRevision:
                  description: Records the latest revision.
                  type: string
              type: object
            updatedReadyReplicas:
              description: The number of ready current revision replicas for this
                UnitedDeployment.
              format: int32
              type: integer
            updatedReplicas:
              description: The number of pods in current version.
              format: int32
              type: integer
          required:
          - replicas
          - updatedReplicas
          - currentRevision
          type: object
  version: v1alpha1
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
