
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.7.0
  creationTimestamp: null
  name: rollouts.rollouts.kruise.io
spec:
  group: rollouts.kruise.io
  names:
    kind: Rollout
    listKind: RolloutList
    plural: rollouts
    singular: rollout
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - description: The rollout status phase
      jsonPath: .status.phase
      name: STATUS
      type: string
    - description: The rollout canary status step
      jsonPath: .status.canaryStatus.currentStepIndex
      name: CANARY_STEP
      type: integer
    - description: The rollout canary status step state
      jsonPath: .status.canaryStatus.currentStepState
      name: CANARY_STATE
      type: string
    - description: The rollout canary status message
      jsonPath: .status.message
      name: MESSAGE
      type: string
    - jsonPath: .metadata.creationTimestamp
      name: AGE
      type: date
    name: v1alpha1
    schema:
      openAPIV3Schema:
        description: Rollout is the Schema for the rollouts 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: RolloutSpec defines the desired state of Rollout
            properties:
              disabled:
                default: false
                description: if a rollout disabled, then the rollout would not watch
                  changes of workload
                type: boolean
              objectRef:
                description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
                  Important: Run "make" to regenerate code after modifying this file
                  ObjectRef indicates workload'
                properties:
                  workloadRef:
                    description: WorkloadRef contains enough information to let you
                      identify a workload for Rollout Batch release of the bypass
                    properties:
                      apiVersion:
                        description: API Version of the referent
                        type: string
                      kind:
                        description: Kind of the referent
                        type: string
                      name:
                        description: Name of the referent
                        type: string
                    required:
                    - apiVersion
                    - kind
                    - name
                    type: object
                type: object
              rolloutID:
                description: DeprecatedRolloutID is the deprecated field. It is recommended
                  that configure RolloutId in workload.annotations[rollouts.kruise.io/rollout-id].
                  RolloutID should be changed before each workload revision publication.
                  It is to distinguish consecutive multiple workload publications
                  and rollout progress.
                type: string
              strategy:
                description: rollout strategy
                properties:
                  canary:
                    description: CanaryStrategy defines parameters for a Replica Based
                      Canary
                    properties:
                      failureThreshold:
                        anyOf:
                        - type: integer
                        - type: string
                        description: FailureThreshold indicates how many failed pods
                          can be tolerated in all upgraded pods. Only when FailureThreshold
                          are satisfied, Rollout can enter ready state. If FailureThreshold
                          is nil, Rollout will use the MaxUnavailable of workload
                          as its FailureThreshold. Defaults to nil.
                        x-kubernetes-int-or-string: true
                      patchPodTemplateMetadata:
                        description: PatchPodTemplateMetadata indicates patch configuration(e.g.
                          labels, annotations) to the canary deployment podTemplateSpec.metadata
                          only support for canary deployment
                        properties:
                          annotations:
                            additionalProperties:
                              type: string
                            description: annotations
                            type: object
                          labels:
                            additionalProperties:
                              type: string
                            description: labels
                            type: object
                        type: object
                      steps:
                        description: Steps define the order of phases to execute release
                          in batches(20%, 40%, 60%, 80%, 100%)
                        items:
                          description: CanaryStep defines a step of a canary workload.
                          properties:
                            matches:
                              description: Matches define conditions used for matching
                                the incoming HTTP requests to canary service. Each
                                match is independent, i.e. this rule will be matched
                                if **any** one of the matches is satisfied. If Gateway
                                API, current only support one match. And cannot support
                                both weight and matches, if both are configured, then
                                matches takes precedence.
                              items:
                                properties:
                                  headers:
                                    description: Headers specifies HTTP request header
                                      matchers. Multiple match values are ANDed together,
                                      meaning, a request must match all the specified
                                      headers to select the route.
                                    items:
                                      description: HTTPHeaderMatch describes how to
                                        select a HTTP route by matching HTTP request
                                        headers.
                                      properties:
                                        name:
                                          description: "Name is the name of the HTTP
                                            Header to be matched. Name matching MUST
                                            be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                            \n If multiple entries specify equivalent
                                            header names, only the first entry with
                                            an equivalent name MUST be considered
                                            for a match. Subsequent entries with an
                                            equivalent header name MUST be ignored.
                                            Due to the case-insensitivity of header
                                            names, \"foo\" and \"Foo\" are considered
                                            equivalent. \n When a header is repeated
                                            in an HTTP request, it is implementation-specific
                                            behavior as to how this is represented.
                                            Generally, proxies should follow the guidance
                                            from the RFC: https://www.rfc-editor.org/rfc/rfc7230.html#section-3.2.2
                                            regarding processing a repeated header,
                                            with special handling for \"Set-Cookie\"."
                                          maxLength: 256
                                          minLength: 1
                                          pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
                                          type: string
                                        type:
                                          default: Exact
                                          description: "Type specifies how to match
                                            against the value of the header. \n Support:
                                            Core (Exact) \n Support: Custom (RegularExpression)
                                            \n Since RegularExpression HeaderMatchType
                                            has custom conformance, implementations
                                            can support POSIX, PCRE or any other dialects
                                            of regular expressions. Please read the
                                            implementation's documentation to determine
                                            the supported dialect."
                                          enum:
                                          - Exact
                                          - RegularExpression
                                          type: string
                                        value:
                                          description: Value is the value of HTTP
                                            Header to be matched.
                                          maxLength: 4096
                                          minLength: 1
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    maxItems: 16
                                    type: array
                                type: object
                              type: array
                            pause:
                              description: Pause defines a pause stage for a rollout,
                                manual or auto
                              properties:
                                duration:
                                  description: Duration the amount of time to wait
                                    before moving to the next step.
                                  format: int32
                                  type: integer
                              type: object
                            replicas:
                              anyOf:
                              - type: integer
                              - type: string
                              description: 'Replicas is the number of expected canary
                                pods in this batch it can be an absolute number (ex:
                                5) or a percentage of total pods.'
                              x-kubernetes-int-or-string: true
                            requestHeaderModifier:
                              description: "Set overwrites the request with the given
                                header (name, value) before the action. \n Input:
                                \  GET /foo HTTP/1.1   my-header: foo \n requestHeaderModifier:
                                \  set:   - name: \"my-header\"     value: \"bar\"
                                \n Output:   GET /foo HTTP/1.1   my-header: bar"
                              properties:
                                add:
                                  description: "Add adds the given header(s) (name,
                                    value) to the request before the action. It appends
                                    to any existing values associated with the header
                                    name. \n Input:   GET /foo HTTP/1.1   my-header:
                                    foo \n Config:   add:   - name: \"my-header\"
                                    \    value: \"bar\" \n Output:   GET /foo HTTP/1.1
                                    \  my-header: foo   my-header: bar"
                                  items:
                                    description: HTTPHeader represents an HTTP Header
                                      name and value as defined by RFC 7230.
                                    properties:
                                      name:
                                        description: "Name is the name of the HTTP
                                          Header to be matched. Name matching MUST
                                          be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                          \n If multiple entries specify equivalent
                                          header names, the first entry with an equivalent
                                          name MUST be considered for a match. Subsequent
                                          entries with an equivalent header name MUST
                                          be ignored. Due to the case-insensitivity
                                          of header names, \"foo\" and \"Foo\" are
                                          considered equivalent."
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        description: Value is the value of HTTP Header
                                          to be matched.
                                        maxLength: 4096
                                        minLength: 1
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                                remove:
                                  description: "Remove the given header(s) from the
                                    HTTP request before the action. The value of Remove
                                    is a list of HTTP header names. Note that the
                                    header names are case-insensitive (see https://datatracker.ietf.org/doc/html/rfc2616#section-4.2).
                                    \n Input:   GET /foo HTTP/1.1   my-header1: foo
                                    \  my-header2: bar   my-header3: baz \n Config:
                                    \  remove: [\"my-header1\", \"my-header3\"] \n
                                    Output:   GET /foo HTTP/1.1   my-header2: bar"
                                  items:
                                    type: string
                                  maxItems: 16
                                  type: array
                                set:
                                  description: "Set overwrites the request with the
                                    given header (name, value) before the action.
                                    \n Input:   GET /foo HTTP/1.1   my-header: foo
                                    \n Config:   set:   - name: \"my-header\"     value:
                                    \"bar\" \n Output:   GET /foo HTTP/1.1   my-header:
                                    bar"
                                  items:
                                    description: HTTPHeader represents an HTTP Header
                                      name and value as defined by RFC 7230.
                                    properties:
                                      name:
                                        description: "Name is the name of the HTTP
                                          Header to be matched. Name matching MUST
                                          be case insensitive. (See https://tools.ietf.org/html/rfc7230#section-3.2).
                                          \n If multiple entries specify equivalent
                                          header names, the first entry with an equivalent
                                          name MUST be considered for a match. Subsequent
                                          entries with an equivalent header name MUST
                                          be ignored. Due to the case-insensitivity
                                          of header names, \"foo\" and \"Foo\" are
                                          considered equivalent."
                                        maxLength: 256
                                        minLength: 1
                                        pattern: ^[A-Za-z0-9!#$%&'*+\-.^_\x60|~]+$
                                        type: string
                                      value:
                                        description: Value is the value of HTTP Header
                                          to be matched.
                                        maxLength: 4096
                                        minLength: 1
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  maxItems: 16
                                  type: array
                                  x-kubernetes-list-map-keys:
                                  - name
                                  x-kubernetes-list-type: map
                              type: object
                            weight:
                              description: Weight indicate how many percentage of
                                traffic the canary pods should receive
                              format: int32
                              type: integer
                          type: object
                        type: array
                      trafficRoutings:
                        description: TrafficRoutings hosts all the supported service
                          meshes supported to enable more fine-grained traffic routing
                          and current only support one TrafficRouting
                        items:
                          description: TrafficRoutingRef hosts all the different configuration
                            for supported service meshes to enable more fine-grained
                            traffic routing
                          properties:
                            gateway:
                              description: Gateway holds Gateway specific configuration
                                to route traffic Gateway configuration only supports
                                >= v0.4.0 (v1alpha2).
                              properties:
                                httpRouteName:
                                  description: HTTPRouteName refers to the name of
                                    an `HTTPRoute` resource in the same namespace
                                    as the `Rollout`
                                  type: string
                              type: object
                            gracePeriodSeconds:
                              description: Optional duration in seconds the traffic
                                provider(e.g. nginx ingress controller) consumes the
                                service, ingress configuration changes gracefully.
                              format: int32
                              type: integer
                            ingress:
                              description: Ingress holds Ingress specific configuration
                                to route traffic, e.g. Nginx, Alb.
                              properties:
                                classType:
                                  description: ClassType refers to the type of `Ingress`.
                                    current support nginx, aliyun-alb. default is
                                    nginx.
                                  type: string
                                name:
                                  description: Name refers to the name of an `Ingress`
                                    resource in the same namespace as the `Rollout`
                                  type: string
                              required:
                              - name
                              type: object
                            service:
                              description: Service holds the name of a service which
                                selects pods with stable version and don't select
                                any pods with canary version.
                              type: string
                          required:
                          - service
                          type: object
                        type: array
                    type: object
                  paused:
                    description: Paused indicates that the Rollout is paused. Default
                      value is false
                    type: boolean
                type: object
            required:
            - objectRef
            - strategy
            type: object
          status:
            description: RolloutStatus defines the observed state of Rollout
            properties:
              canaryStatus:
                description: Canary describes the state of the canary rollout
                properties:
                  canaryReadyReplicas:
                    description: CanaryReadyReplicas the numbers of ready canary revision
                      pods
                    format: int32
                    type: integer
                  canaryReplicas:
                    description: CanaryReplicas the numbers of canary revision pods
                    format: int32
                    type: integer
                  canaryRevision:
                    description: CanaryRevision is calculated by rollout based on
                      podTemplateHash, and the internal logic flow uses It may be
                      different from rs podTemplateHash in different k8s versions,
                      so it cannot be used as service selector label
                    type: string
                  currentStepIndex:
                    description: CurrentStepIndex defines the current step of the
                      rollout is on. If the current step index is null, the controller
                      will execute the rollout.
                    format: int32
                    type: integer
                  currentStepState:
                    type: string
                  lastUpdateTime:
                    format: date-time
                    type: string
                  message:
                    type: string
                  observedRolloutID:
                    description: ObservedRolloutID will record the newest spec.RolloutID
                      if status.canaryRevision equals to workload.updateRevision
                    type: string
                  observedWorkloadGeneration:
                    description: observedWorkloadGeneration is the most recent generation
                      observed for this Rollout ref workload generation.
                    format: int64
                    type: integer
                  podTemplateHash:
                    description: pod template hash is used as service selector label
                    type: string
                  rolloutHash:
                    description: RolloutHash from rollout.spec object
                    type: string
                  stableRevision:
                    description: StableRevision indicates the revision of stable pods
                    type: string
                required:
                - canaryReadyReplicas
                - canaryReplicas
                - canaryRevision
                - currentStepState
                - podTemplateHash
                type: object
              conditions:
                description: Conditions a list of conditions a rollout can have.
                items:
                  description: RolloutCondition describes the state of a rollout 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: Phase of the condition, one of True, False, Unknown.
                      type: string
                    type:
                      description: Type of rollout condition.
                      type: string
                  required:
                  - message
                  - reason
                  - status
                  - type
                  type: object
                type: array
              message:
                description: Message provides details on why the rollout is in its
                  current phase
                type: string
              observedGeneration:
                description: observedGeneration is the most recent generation observed
                  for this Rollout.
                format: int64
                type: integer
              phase:
                description: BlueGreenStatus *BlueGreenStatus `json:"blueGreenStatus,omitempty"`
                  Phase is the rollout phase.
                type: string
            type: object
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []