Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove installer.yaml for SageMaker operator #1440

Merged

Conversation

stephen37
Copy link
Contributor

Kustomizer released their PR that allows loading from HTTP, meaning that we can remove the installer.yaml for Sagemaker that was here because of that.

@welcome
Copy link

welcome bot commented Sep 7, 2021

Thank you for opening this pull request! 🙌
These tips will help get your PR across the finish line: - Most of the repos have a PR template; if not, fill it out to the best of your knowledge. - Sign off your commits (Reference: DCO Guide).

Kustomizer released their PR that allows loading from HTTP, meaning that
we can remove the `installer.yaml` that was here because of that.

Signed-off-by: stephen batifol <[email protected]>
@stephen37 stephen37 force-pushed the remove_installer_operator_sagemaker branch from a555b7e to 2da1637 Compare September 7, 2021 12:13
@stephen37 stephen37 marked this pull request as ready for review September 7, 2021 12:14
@kumare3
Copy link
Contributor

kumare3 commented Sep 7, 2021

Cc @jeevb @evalsocket

@kumare3 kumare3 assigned jeevb, yindia and EngHabu and unassigned EngHabu, yindia and jeevb Sep 7, 2021
@kumare3 kumare3 requested review from EngHabu, yindia and jeevb September 7, 2021 21:18
@EngHabu
Copy link
Contributor

EngHabu commented Sep 7, 2021

Hey @stephen37, thank you for the PR. Do you mind doing a diff between the checked in installer.yaml and the current version of installer.yaml that the http link refers to?

@stephen37
Copy link
Contributor Author

Sure, I used git diff to make it a bit more readable, it's pretty massive but here it is

diff --git a/installer.yaml b/installer_1_2_1.yaml
index 8399367e..36e4aad3 100644
--- a/installer.yaml
+++ b/installer_1_2_1.yaml
@@ -8,6 +8,8 @@ metadata:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
   name: batchtransformjobs.sagemaker.aws.amazon.com
 spec:
@@ -25,8 +27,10 @@ spec:
   group: sagemaker.aws.amazon.com
   names:
     kind: BatchTransformJob
+    listKind: BatchTransformJobList
     plural: batchtransformjobs
-  scope: ""
+    singular: batchtransformjob
+  scope: Namespaced
   subresources:
     status: {}
   validation:
@@ -36,374 +40,20 @@ spec:
         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'
+            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/api-conventions.md#types-kinds'
+            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:
-          properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
-              format: int64
-              type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
-              format: int64
-              type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
-              items:
-                properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
-                    type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
-                    type: string
-                type: object
-              type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-              type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
-              type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
-              type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
-              type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
-              type: string
           type: object
         spec:
+          description: BatchTransformJobSpec defines the desired state of BatchTransformJob
           properties:
             batchStrategy:
+              description: Batch Transform related struct
               type: string
             dataProcessing:
               properties:
@@ -416,6 +66,7 @@ spec:
               type: object
             environment:
               items:
+                description: Used in describing maps in Kubernetes.
                 properties:
                   name:
                     type: string
@@ -525,12 +176,13 @@ spec:
               type: object
           required:
           - modelName
+          - region
           - transformInput
           - transformOutput
           - transformResources
-          - region
           type: object
         status:
+          description: BatchTransformJobStatus defines the observed state of BatchTransformJob
           properties:
             additional:
               description: Field to store additional information, for example if we
@@ -549,6 +201,7 @@ spec:
               type: string
           type: object
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -563,6 +216,8 @@ status:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
   name: endpointconfigs.sagemaker.aws.amazon.com
 spec:
@@ -576,8 +231,10 @@ spec:
   group: sagemaker.aws.amazon.com
   names:
     kind: EndpointConfig
+    listKind: EndpointConfigList
     plural: endpointconfigs
-  scope: ""
+    singular: endpointconfig
+  scope: Namespaced
   subresources:
     status: {}
   validation:
@@ -587,372 +244,17 @@ spec:
         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'
+            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/api-conventions.md#types-kinds'
+            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:
-          properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
-              format: int64
-              type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
-              format: int64
-              type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
-              items:
-                properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
-                    type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
-                    type: string
-                type: object
-              type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-              type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
-              type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
-              type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
-              type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
-              type: string
           type: object
         spec:
+          description: EndpointConfigSpec defines the desired state of EndpointConfig
           properties:
             kmsKeyId:
               type: string
@@ -1010,6 +312,7 @@ spec:
           - region
           type: object
         status:
+          description: EndpointConfigStatus defines the observed state of EndpointConfig
           properties:
             additional:
               description: Field to store additional information, for example if we
@@ -1030,6 +333,7 @@ spec:
               type: string
           type: object
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -1044,409 +348,266 @@ status:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
-  name: hostingdeployments.sagemaker.aws.amazon.com
+  name: hostingautoscalingpolicies.sagemaker.aws.amazon.com
 spec:
   additionalPrinterColumns:
-  - JSONPath: .status.endpointStatus
+  - JSONPath: .status.hostingAutoscalingPolicyStatus
     name: Status
     type: string
-  - JSONPath: .status.endpointName
-    name: Sagemaker-endpoint-name
+  - JSONPath: .metadata.creationTimestamp
+    format: date
+    name: Creation-Time
     type: string
   group: sagemaker.aws.amazon.com
   names:
-    kind: HostingDeployment
-    plural: hostingdeployments
-  scope: ""
+    kind: HostingAutoscalingPolicy
+    listKind: HostingAutoscalingPolicyList
+    plural: hostingautoscalingpolicies
+    shortNames:
+    - hap
+    singular: hostingautoscalingpolicy
+  scope: Namespaced
   subresources:
     status: {}
   validation:
     openAPIV3Schema:
-      description: HostingDeployment is the Schema for the hostingdeployments API
+      description: HostingAutoscalingPolicy is the Schema for the HostingAutoscalingPolicy
+        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/api-conventions.md#resources'
+            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/api-conventions.md#types-kinds'
+            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: HostingAutoscalingPolicySpec defines the desired state of the
+            cluster for HostingAutoscalingPolicy
           properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
+            maxCapacity:
               format: int64
               type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
+            minCapacity:
               format: int64
               type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
+            policyName:
+              description: The autoscaling policy name. This is optional for the SageMaker
+                K8s operator. If it is empty, the operator will populate it with a
+                generated name.
+              maxLength: 256
+              type: string
+            policyType:
+              description: The autoscaling policy type. This is optional for the SageMaker
+                K8s operator. If it is empty, the operator will populate it with TargetTrackingScaling
+              type: string
+            region:
+              type: string
+            resourceId:
               items:
+                description: AutoscalingResource is used to create the string representing
+                  the resourceID in the format endpoint/my-end-point/variant/my-variant
                 properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
+                  endpointName:
+                    minLength: 1
                     type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
+                  variantName:
+                    minLength: 1
                     type: string
                 type: object
+              minItems: 1
               type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
+            sageMakerEndpoint:
+              description: A custom SageMaker endpoint to use when communicating with
+                SageMaker.
+              pattern: ^(https|http)://.*$
               type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
+            scalableDimension:
               type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
+            serviceNamespace:
+              type: string
+            suspendedState:
+              description: HAPSuspendedState https://docs.aws.amazon.com/autoscaling/application/APIReference/API_SuspendedState.html
+              properties:
+                dynamicScalingInSuspended:
+                  type: boolean
+                dynamicScalingOutSuspended:
+                  type: boolean
+                scheduledScalingSuspended:
+                  type: boolean
+              type: object
+            targetTrackingScalingPolicyConfiguration:
+              description: 'TargetTrackingScalingPolicyConfig https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html
+                TODO: string requires the input to be in quotes in the spec which
+                is not intuitive Needs a fix for floats, probably use resource.Quantity'
+              properties:
+                customizedMetricSpecification:
+                  description: CustomizedMetricSpecification https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html
+                  properties:
+                    dimensions:
+                      items:
+                        description: Used in describing maps in Kubernetes.
+                        properties:
+                          name:
+                            type: string
+                          value:
+                            type: string
+                        type: object
+                      type: array
+                    metricName:
+                      minLength: 1
+                      type: string
+                    namespace:
+                      minLength: 1
+                      type: string
+                    statistic:
+                      minLength: 1
+                      type: string
+                    unit:
+                      type: string
+                  type: object
+                disableScaleIn:
+                  type: boolean
+                predefinedMetricSpecification:
+                  description: Ideally Predefined metric should not need a value but
+                    this is for consistency with API usage
+                  properties:
+                    predefinedMetricType:
+                      type: string
+                  type: object
+                scaleInCooldown:
+                  format: int64
+                  type: integer
+                scaleOutCooldown:
+                  format: int64
+                  type: integer
+                targetValue:
+                  format: int64
+                  type: integer
+              type: object
+          required:
+          - region
+          type: object
+        status:
+          description: HostingAutoscalingPolicyStatus defines the observed state of
+            HostingAutoscalingPolicy
+          properties:
+            additional:
+              description: Field to store additional information, for example if we
+                are unable to check the status we update this.
               type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
+            hostingAutoscalingPolicyStatus:
               type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
+            lastCheckTime:
+              description: The last time that we checked the status of the job.
+              format: date-time
               type: string
+            policyName:
+              type: string
+            resourceIDList:
+              items:
+                type: string
+              type: array
+          type: object
+      required:
+      - spec
+      type: object
+  version: v1
+  versions:
+  - name: v1
+    served: true
+    storage: true
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
+  creationTimestamp: null
+  name: hostingdeployments.sagemaker.aws.amazon.com
+spec:
+  additionalPrinterColumns:
+  - JSONPath: .status.endpointStatus
+    name: Status
+    type: string
+  - JSONPath: .status.endpointName
+    name: Sagemaker-endpoint-name
+    type: string
+  group: sagemaker.aws.amazon.com
+  names:
+    kind: HostingDeployment
+    listKind: HostingDeploymentList
+    plural: hostingdeployments
+    singular: hostingdeployment
+  scope: Namespaced
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: HostingDeployment is the Schema for the hostingdeployments 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: HostingDeploymentSpec defines the desired state of HostingDeployment
           properties:
+            endpointName:
+              description: The SageMaker endpoint name. If it is empty the operator
+                will populate it with a generated name.
+              maxLength: 63
+              type: string
+            excludeRetainedVariantProperties:
+              items:
+                properties:
+                  variantPropertyType:
+                    enum:
+                    - DesiredInstanceCount
+                    - DesiredWeight
+                    - DataCaptureConfig
+                    type: string
+                required:
+                - variantPropertyType
+                type: object
+              type: array
             kmsKeyId:
               type: string
             models:
               items:
+                description: This is something we are defining not coming from aws-sdk-go-v2
                 properties:
                   containers:
                     items:
+                      description: Describes the container, as part of model definition.
                       properties:
                         containerHostname:
                           type: string
                         environment:
                           items:
+                            description: Used in describing maps in Kubernetes.
                             properties:
                               name:
                                 type: string
@@ -1456,6 +617,11 @@ spec:
                           type: array
                         image:
                           type: string
+                        mode:
+                          enum:
+                          - SingleModel
+                          - MultiModel
+                          type: string
                         modelDataUrl:
                           type: string
                         modelPackageName:
@@ -1471,17 +637,21 @@ spec:
                   name:
                     type: string
                   primaryContainer:
+                    description: Primary container will be ignored if more than one
+                      container in the `containers` field is provided.
                     type: string
                   vpcConfig:
                     properties:
                       securityGroupIds:
                         items:
                           type: string
+                        maxItems: 5
                         minItems: 1
                         type: array
                       subnets:
                         items:
                           type: string
+                        maxItems: 16
                         minItems: 1
                         type: array
                     required:
@@ -1489,8 +659,8 @@ spec:
                     - subnets
                     type: object
                 required:
-                - name
                 - executionRoleArn
+                - name
                 type: object
               type: array
             productionVariants:
@@ -1528,6 +698,8 @@ spec:
             region:
               minLength: 1
               type: string
+            retainAllVariantProperties:
+              type: boolean
             sageMakerEndpoint:
               description: A custom SageMaker endpoint to use when communicating with
                 SageMaker.
@@ -1547,11 +719,12 @@ spec:
                 type: object
               type: array
           required:
-          - region
-          - productionVariants
           - models
+          - productionVariants
+          - region
           type: object
         status:
+          description: HostingDeploymentStatus defines the observed state of HostingDeployment
           properties:
             additional:
               description: This field contains additional information about failures.
@@ -1586,6 +759,7 @@ spec:
               type: string
             modelNames:
               items:
+                description: Used in describing maps in Kubernetes.
                 properties:
                   name:
                     type: string
@@ -1596,6 +770,8 @@ spec:
             productionVariants:
               description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_ProductionVariantSummary.html
               items:
+                description: Please also see https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/ProductionVariantSummary
+                  This is only used in status so no validation is required
                 properties:
                   currentInstanceCount:
                     format: int64
@@ -1637,6 +813,7 @@ spec:
               type: array
           type: object
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -1651,6 +828,8 @@ status:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
   name: hyperparametertuningjobs.sagemaker.aws.amazon.com
 spec:
@@ -1687,8 +866,10 @@ spec:
   group: sagemaker.aws.amazon.com
   names:
     kind: HyperparameterTuningJob
+    listKind: HyperparameterTuningJobList
     plural: hyperparametertuningjobs
-  scope: ""
+    singular: hyperparametertuningjob
+  scope: Namespaced
   subresources:
     status: {}
   validation:
@@ -1699,372 +880,20 @@ spec:
         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'
+            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/api-conventions.md#types-kinds'
+            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:
-          properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
-              format: int64
-              type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
-              format: int64
-              type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
-              items:
-                properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
-                    type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
-                    type: string
-                type: object
-              type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-              type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
-              type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
-              type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
-              type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
-              type: string
           type: object
         spec:
+          description: HyperparameterTuningJobSpec defines the desired state of HyperparameterTuningJob
+            These are taken from aws-go-sdk-v2 and modified to use Kubebuilder validation
+            and json omitempty instead of aws-go-sdk-v2 validation and required parameter
+            notation, respectively.
           properties:
             hyperParameterTuningJobConfig:
               properties:
@@ -2338,6 +1167,7 @@ spec:
                   type: string
                 staticHyperParameters:
                   items:
+                    description: Used in describing maps in Kubernetes.
                     properties:
                       name:
                         type: string
@@ -2361,11 +1191,13 @@ spec:
                     securityGroupIds:
                       items:
                         type: string
+                      maxItems: 5
                       minItems: 1
                       type: array
                     subnets:
                       items:
                         type: string
+                      maxItems: 16
                       minItems: 1
                       type: array
                   required:
@@ -2401,6 +1233,8 @@ spec:
           - region
           type: object
         status:
+          description: HyperparameterTuningJobStatus defines the observed state of
+            HyperparameterTuningJob
           properties:
             additional:
               description: Field to store additional information, for example if we
@@ -2443,6 +1277,7 @@ spec:
                   type: string
                 tunedHyperParameters:
                   items:
+                    description: Used in describing maps in Kubernetes.
                     properties:
                       name:
                         type: string
@@ -2505,6 +1340,7 @@ spec:
               type: object
           type: object
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -2519,6 +1355,8 @@ status:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
   name: models.sagemaker.aws.amazon.com
 spec:
@@ -2532,8 +1370,10 @@ spec:
   group: sagemaker.aws.amazon.com
   names:
     kind: Model
+    listKind: ModelList
     plural: models
-  scope: ""
+    singular: model
+  scope: Namespaced
   subresources:
     status: {}
   validation:
@@ -2543,380 +1383,27 @@ spec:
         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'
+            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/api-conventions.md#types-kinds'
+            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:
-          properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
-              format: int64
-              type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
-              format: int64
-              type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
-              items:
-                properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
-                    type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
-                    type: string
-                type: object
-              type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-              type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
-              type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
-              type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
-              type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
-              type: string
           type: object
         spec:
+          description: ModelSpec defines the desired state of Model
           properties:
             containers:
               items:
+                description: Describes the container, as part of model definition.
                 properties:
                   containerHostname:
                     type: string
                   environment:
                     items:
+                      description: Used in describing maps in Kubernetes.
                       properties:
                         name:
                           type: string
@@ -2926,6 +1413,11 @@ spec:
                     type: array
                   image:
                     type: string
+                  mode:
+                    enum:
+                    - SingleModel
+                    - MultiModel
+                    type: string
                   modelDataUrl:
                     type: string
                   modelPackageName:
@@ -2937,11 +1429,13 @@ spec:
             executionRoleArn:
               type: string
             primaryContainer:
+              description: Describes the container, as part of model definition.
               properties:
                 containerHostname:
                   type: string
                 environment:
                   items:
+                    description: Used in describing maps in Kubernetes.
                     properties:
                       name:
                         type: string
@@ -2951,6 +1445,11 @@ spec:
                   type: array
                 image:
                   type: string
+                mode:
+                  enum:
+                  - SingleModel
+                  - MultiModel
+                  type: string
                 modelDataUrl:
                   type: string
                 modelPackageName:
@@ -2973,47 +1472,338 @@ spec:
                 - value
                 type: object
               type: array
-            vpcConfig:
-              properties:
-                securityGroupIds:
-                  items:
-                    type: string
-                  minItems: 1
-                  type: array
-                subnets:
-                  items:
-                    type: string
-                  minItems: 1
-                  type: array
-              required:
-              - securityGroupIds
-              - subnets
-              type: object
+            vpcConfig:
+              properties:
+                securityGroupIds:
+                  items:
+                    type: string
+                  maxItems: 5
+                  minItems: 1
+                  type: array
+                subnets:
+                  items:
+                    type: string
+                  maxItems: 16
+                  minItems: 1
+                  type: array
+              required:
+              - securityGroupIds
+              - subnets
+              type: object
+          required:
+          - executionRoleArn
+          - region
+          type: object
+        status:
+          description: ModelStatus defines the observed state of Model
+          properties:
+            additional:
+              description: Field to store additional information, for example if we
+                are unable to check the status in sagemaker we update this.
+              type: string
+            lastUpdateTime:
+              description: The last time this status was updated.
+              format: date-time
+              type: string
+            modelArn:
+              description: The Model ARN of the SageMaker model
+              type: string
+            sageMakerModelName:
+              description: The name of the model in SageMaker.
+              type: string
+            status:
+              description: The status of the model.
+              type: string
+          type: object
+      type: object
+  version: v1
+  versions:
+  - name: v1
+    served: true
+    storage: true
+status:
+  acceptedNames:
+    kind: ""
+    plural: ""
+  conditions: []
+  storedVersions: []
+---
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
+  creationTimestamp: null
+  name: processingjobs.sagemaker.aws.amazon.com
+spec:
+  additionalPrinterColumns:
+  - JSONPath: .status.processingJobStatus
+    name: Status
+    type: string
+  - JSONPath: .metadata.creationTimestamp
+    format: date
+    name: Creation-Time
+    type: string
+  - JSONPath: .status.sageMakerProcessingJobName
+    name: Sagemaker-Job-Name
+    type: string
+  group: sagemaker.aws.amazon.com
+  names:
+    kind: ProcessingJob
+    listKind: ProcessingJobList
+    plural: processingjobs
+    singular: processingjob
+  scope: Namespaced
+  subresources:
+    status: {}
+  validation:
+    openAPIV3Schema:
+      description: ProcessingJob is the Schema for the processingjobs 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: ProcessingJobSpec defines the desired state of ProcessingJob
+          properties:
+            appSpecification:
+              properties:
+                containerArguments:
+                  items:
+                    type: string
+                  type: array
+                containerEntrypoint:
+                  items:
+                    type: string
+                  type: array
+                imageUri:
+                  type: string
+              type: object
+            environment:
+              items:
+                description: Used in describing maps in Kubernetes.
+                properties:
+                  name:
+                    type: string
+                  value:
+                    type: string
+                type: object
+              maxItems: 100
+              type: array
+            networkConfig:
+              properties:
+                enableInterContainerTrafficEncryption:
+                  type: boolean
+                enableNetworkIsolation:
+                  type: boolean
+                vpcConfig:
+                  properties:
+                    securityGroupIds:
+                      items:
+                        type: string
+                      maxItems: 5
+                      minItems: 1
+                      type: array
+                    subnets:
+                      items:
+                        type: string
+                      maxItems: 16
+                      minItems: 1
+                      type: array
+                  required:
+                  - securityGroupIds
+                  - subnets
+                  type: object
+              type: object
+            processingInputs:
+              items:
+                properties:
+                  inputName:
+                    type: string
+                  s3Input:
+                    properties:
+                      localPath:
+                        maxLength: 256
+                        type: string
+                      s3CompressionType:
+                        enum:
+                        - None
+                        - Gzip
+                        type: string
+                      s3DataDistributionType:
+                        allOf:
+                        - enum:
+                          - FullyReplicated
+                          - ShardedByS3Key
+                        - enum:
+                          - FullyReplicated
+                          - ShardedByS3Key
+                        type: string
+                      s3DataType:
+                        enum:
+                        - S3Prefix
+                        - ManifestFile
+                        type: string
+                      s3InputMode:
+                        allOf:
+                        - enum:
+                          - File
+                          - Pipe
+                        - enum:
+                          - Pipe
+                          - File
+                        type: string
+                      s3Uri:
+                        pattern: ^(https|s3)://([^/]+)/?(.*)$
+                        type: string
+                    required:
+                    - localPath
+                    - s3DataType
+                    - s3InputMode
+                    - s3Uri
+                    type: object
+                required:
+                - inputName
+                - s3Input
+                type: object
+              maxItems: 10
+              type: array
+            processingOutputConfig:
+              properties:
+                kmsKeyId:
+                  maxLength: 1024
+                  type: string
+                outputs:
+                  items:
+                    properties:
+                      outputName:
+                        type: string
+                      s3Output:
+                        properties:
+                          localPath:
+                            maxLength: 256
+                            type: string
+                          s3UploadMode:
+                            enum:
+                            - Continuous
+                            - EndOfJob
+                            type: string
+                          s3Uri:
+                            pattern: ^(https|s3)://([^/]+)/?(.*)$
+                            type: string
+                        required:
+                        - localPath
+                        - s3UploadMode
+                        - s3Uri
+                        type: object
+                    required:
+                    - outputName
+                    - s3Output
+                    type: object
+                  maxItems: 10
+                  type: array
+              required:
+              - outputs
+              type: object
+            processingResources:
+              properties:
+                clusterConfig:
+                  properties:
+                    instanceCount:
+                      format: int64
+                      minimum: 1
+                      type: integer
+                    instanceType:
+                      minLength: 1
+                      type: string
+                    volumeKmsKeyId:
+                      type: string
+                    volumeSizeInGB:
+                      format: int64
+                      minimum: 1
+                      type: integer
+                  required:
+                  - instanceCount
+                  - instanceType
+                  - volumeSizeInGB
+                  type: object
+              required:
+              - clusterConfig
+              type: object
+            region:
+              minLength: 1
+              type: string
+            roleArn:
+              maxLength: 2048
+              minLength: 20
+              type: string
+            sageMakerEndpoint:
+              description: A custom SageMaker endpoint to use when communicating with
+                SageMaker.
+              pattern: ^(https|http)://.*$
+              type: string
+            stoppingCondition:
+              description: StoppingConditionNoSpot is used for APIs which do not support
+                WaitTime param i.e. managed spot training not supported
+              properties:
+                maxRuntimeInSeconds:
+                  format: int64
+                  minimum: 1
+                  type: integer
+              type: object
+            tags:
+              items:
+                properties:
+                  key:
+                    minLength: 1
+                    type: string
+                  value:
+                    type: string
+                required:
+                - key
+                - value
+                type: object
+              maxItems: 50
+              type: array
           required:
-          - executionRoleArn
+          - appSpecification
+          - processingResources
           - region
+          - roleArn
           type: object
         status:
+          description: ProcessingJobStatus defines the observed state of ProcessingJob
           properties:
             additional:
               description: Field to store additional information, for example if we
-                are unable to check the status in sagemaker we update this.
+                are unable to check the status we update this.
               type: string
-            lastUpdateTime:
-              description: The last time this status was updated.
-              format: date-time
+            cloudWatchLogUrl:
+              description: CloudWatch URL for log
               type: string
-            modelArn:
-              description: The Model ARN of the SageMaker model
+            lastCheckTime:
+              description: The last time that we checked the status of the SageMaker
+                job.
+              format: date-time
               type: string
-            sageMakerModelName:
-              description: The name of the model in SageMaker.
+            processingJobStatus:
+              description: The status of the processing job. https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus
               type: string
-            status:
-              description: The status of the model.
+            sageMakerProcessingJobName:
+              description: SageMaker processing job name
               type: string
           type: object
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -3028,6 +1818,8 @@ status:
 apiVersion: apiextensions.k8s.io/v1beta1
 kind: CustomResourceDefinition
 metadata:
+  annotations:
+    controller-gen.kubebuilder.io/version: v0.3.0
   creationTimestamp: null
   name: trainingjobs.sagemaker.aws.amazon.com
 spec:
@@ -3048,8 +1840,10 @@ spec:
   group: sagemaker.aws.amazon.com
   names:
     kind: TrainingJob
+    listKind: TrainingJobList
     plural: trainingjobs
-  scope: ""
+    singular: trainingjob
+  scope: Namespaced
   subresources:
     status: {}
   validation:
@@ -3059,372 +1853,17 @@ spec:
         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'
+            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/api-conventions.md#types-kinds'
+            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:
-          properties:
-            annotations:
-              additionalProperties:
-                type: string
-              description: 'Annotations is an unstructured key value map stored with
-                a resource that may be set by external tools to store and retrieve
-                arbitrary metadata. They are not queryable and should be preserved
-                when modifying objects. More info: http://kubernetes.io/docs/user-guide/annotations'
-              type: object
-            clusterName:
-              description: The name of the cluster which the object belongs to. This
-                is used to distinguish resources with same name and namespace in different
-                clusters. This field is not set anywhere right now and apiserver is
-                going to ignore it if set in create or update request.
-              type: string
-            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. \n
-                Populated by the system. Read-only. Null for lists. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            deletionGracePeriodSeconds:
-              description: Number of seconds allowed for this object to gracefully
-                terminate before it will be removed from the system. Only set when
-                deletionTimestamp is also set. May only be shortened. Read-only.
-              format: int64
-              type: integer
-            deletionTimestamp:
-              description: "DeletionTimestamp is RFC 3339 date and time at which this
-                resource will be deleted. This field is set by the server when a graceful
-                deletion is requested by the user, and is not directly settable by
-                a client. The resource is expected to be deleted (no longer visible
-                from resource lists, and not reachable by name) after the time in
-                this field, once the finalizers list is empty. As long as the finalizers
-                list contains items, deletion is blocked. Once the deletionTimestamp
-                is set, this value may not be unset or be set further into the future,
-                although it may be shortened or the resource may be deleted prior
-                to this time. For example, a user may request that a pod is deleted
-                in 30 seconds. The Kubelet will react by sending a graceful termination
-                signal to the containers in the pod. After that 30 seconds, the Kubelet
-                will send a hard termination signal (SIGKILL) to the container and
-                after cleanup, remove the pod from the API. In the presence of network
-                partitions, this object may still exist after this timestamp, until
-                an administrator or automated process can determine the resource is
-                fully terminated. If not set, graceful deletion of the object has
-                not been requested. \n Populated by the system when a graceful deletion
-                is requested. Read-only. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata"
-              format: date-time
-              type: string
-            finalizers:
-              description: Must be empty before the object is deleted from the registry.
-                Each entry is an identifier for the responsible component that will
-                remove the entry from the list. If the deletionTimestamp of the object
-                is non-nil, entries in this list can only be removed.
-              items:
-                type: string
-              type: array
-            generateName:
-              description: "GenerateName is an optional prefix, used by the server,
-                to generate a unique name ONLY IF the Name field has not been provided.
-                If this field is used, the name returned to the client will be different
-                than the name passed. This value will also be combined with a unique
-                suffix. The provided value has the same validation rules as the Name
-                field, and may be truncated by the length of the suffix required to
-                make the value unique on the server. \n If this field is specified
-                and the generated name exists, the server will NOT return a 409 -
-                instead, it will either return 201 Created or 500 with Reason ServerTimeout
-                indicating a unique name could not be found in the time allotted,
-                and the client should retry (optionally after the time indicated in
-                the Retry-After header). \n Applied only if Name is not specified.
-                More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#idempotency"
-              type: string
-            generation:
-              description: A sequence number representing a specific generation of
-                the desired state. Populated by the system. Read-only.
-              format: int64
-              type: integer
-            initializers:
-              description: "An initializer is a controller which enforces some system
-                invariant at object creation time. This field is a list of initializers
-                that have not yet acted on this object. If nil or empty, this object
-                has been completely initialized. Otherwise, the object is considered
-                uninitialized and is hidden (in list/watch and get calls) from clients
-                that haven't explicitly asked to observe uninitialized objects. \n
-                When an object is created, the system will populate this list with
-                the current set of initializers. Only privileged users may set or
-                modify this list. Once it is empty, it may not be modified further
-                by any user. \n DEPRECATED - initializers are an alpha field and will
-                be removed in v1.15."
-              properties:
-                pending:
-                  description: Pending is a list of initializers that must execute
-                    in order before this object is visible. When the last pending
-                    initializer is removed, and no failing result is set, the initializers
-                    struct will be set to nil and the object is considered as initialized
-                    and visible to all clients.
-                  items:
-                    properties:
-                      name:
-                        description: name of the process that is responsible for initializing
-                          this object.
-                        type: string
-                    required:
-                    - name
-                    type: object
-                  type: array
-                result:
-                  description: If result is set with the Failure field, the object
-                    will be persisted to storage and then deleted, ensuring that other
-                    clients can observe the deletion.
-                  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
-                    code:
-                      description: Suggested HTTP return code for this status, 0 if
-                        not set.
-                      format: int32
-                      type: integer
-                    details:
-                      description: Extended data associated with the reason.  Each
-                        reason may define its own extended details. This field is
-                        optional and the data returned is not guaranteed to conform
-                        to any schema except that defined by the reason type.
-                      properties:
-                        causes:
-                          description: The Causes array includes more details associated
-                            with the StatusReason failure. Not all StatusReasons may
-                            provide detailed causes.
-                          items:
-                            properties:
-                              field:
-                                description: "The field of the resource that has caused
-                                  this error, as named by its JSON serialization.
-                                  May include dot and postfix notation for nested
-                                  attributes. Arrays are zero-indexed.  Fields may
-                                  appear more than once in an array of causes due
-                                  to fields having multiple errors. Optional. \n Examples:
-                                  \  \"name\" - the field \"name\" on the current
-                                  resource   \"items[0].name\" - the field \"name\"
-                                  on the first array entry in \"items\""
-                                type: string
-                              message:
-                                description: A human-readable description of the cause
-                                  of the error.  This field may be presented as-is
-                                  to a reader.
-                                type: string
-                              reason:
-                                description: A machine-readable description of the
-                                  cause of the error. If this value is empty there
-                                  is no information available.
-                                type: string
-                            type: object
-                          type: array
-                        group:
-                          description: The group attribute of the resource associated
-                            with the status StatusReason.
-                          type: string
-                        kind:
-                          description: 'The kind attribute of the resource associated
-                            with the status StatusReason. On some operations may differ
-                            from the requested resource Kind. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                          type: string
-                        name:
-                          description: The name attribute of the resource associated
-                            with the status StatusReason (when there is a single name
-                            which can be described).
-                          type: string
-                        retryAfterSeconds:
-                          description: If specified, the time in seconds before the
-                            operation should be retried. Some errors may indicate
-                            the client must take an alternate action - for those errors
-                            this field may indicate how long to wait before taking
-                            the alternate action.
-                          format: int32
-                          type: integer
-                        uid:
-                          description: 'UID of the resource. (when there is a single
-                            resource which can be described). More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                          type: string
-                      type: object
-                    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
-                    message:
-                      description: A human-readable description of the status of this
-                        operation.
-                      type: string
-                    metadata:
-                      description: 'Standard list metadata. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                      properties:
-                        continue:
-                          description: continue may be set if the user set a limit
-                            on the number of items returned, and indicates that the
-                            server has more data available. The value is opaque and
-                            may be used to issue another request to the endpoint that
-                            served this list to retrieve the next set of available
-                            objects. Continuing a consistent list may not be possible
-                            if the server configuration has changed or more than a
-                            few minutes have passed. The resourceVersion field returned
-                            when using this continue value will be identical to the
-                            value in the first response, unless you have received
-                            this token from an error message.
-                          type: string
-                        resourceVersion:
-                          description: 'String that identifies the server''s internal
-                            version of this object that can be used by clients to
-                            determine when objects have changed. Value must be treated
-                            as opaque by clients and passed unmodified back to the
-                            server. Populated by the system. Read-only. More info:
-                            https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency'
-                          type: string
-                        selfLink:
-                          description: selfLink is a URL representing this object.
-                            Populated by the system. Read-only.
-                          type: string
-                      type: object
-                    reason:
-                      description: A machine-readable description of why this operation
-                        is in the "Failure" status. If this value is empty there is
-                        no information available. A Reason clarifies an HTTP status
-                        code but does not override it.
-                      type: string
-                    status:
-                      description: 'Status of the operation. One of: "Success" or
-                        "Failure". More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#spec-and-status'
-                      type: string
-                  type: object
-              required:
-              - pending
-              type: object
-            labels:
-              additionalProperties:
-                type: string
-              description: 'Map of string keys and values that can be used to organize
-                and categorize (scope and select) objects. May match selectors of
-                replication controllers and services. More info: http://kubernetes.io/docs/user-guide/labels'
-              type: object
-            managedFields:
-              description: "ManagedFields maps workflow-id and version to the set
-                of fields that are managed by that workflow. This is mostly for internal
-                housekeeping, and users typically shouldn't need to set or understand
-                this field. A workflow can be the user's name, a controller's name,
-                or the name of a specific apply path like \"ci-cd\". The set of fields
-                is always in the version that the workflow used when modifying the
-                object. \n This field is alpha and can be changed or removed without
-                notice."
-              items:
-                properties:
-                  apiVersion:
-                    description: APIVersion defines the version of this resource that
-                      this field set applies to. The format is "group/version" just
-                      like the top-level APIVersion field. It is necessary to track
-                      the version of a field set because it cannot be automatically
-                      converted.
-                    type: string
-                  fields:
-                    additionalProperties: true
-                    description: Fields identifies a set of fields.
-                    type: object
-                  manager:
-                    description: Manager is an identifier of the workflow managing
-                      these fields.
-                    type: string
-                  operation:
-                    description: Operation is the type of operation which lead to
-                      this ManagedFieldsEntry being created. The only valid values
-                      for this field are 'Apply' and 'Update'.
-                    type: string
-                  time:
-                    description: Time is timestamp of when these fields were set.
-                      It should always be empty if Operation is 'Apply'
-                    format: date-time
-                    type: string
-                type: object
-              type: array
-            name:
-              description: 'Name must be unique within a namespace. Is required when
-                creating resources, although some resources may allow a client to
-                request the generation of an appropriate name automatically. Name
-                is primarily intended for creation idempotence and configuration definition.
-                Cannot be updated. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-              type: string
-            namespace:
-              description: "Namespace defines the space within each name must be unique.
-                An empty namespace is equivalent to the \"default\" namespace, but
-                \"default\" is the canonical representation. Not all objects are required
-                to be scoped to a namespace - the value of this field for those objects
-                will be empty. \n Must be a DNS_LABEL. Cannot be updated. More info:
-                http://kubernetes.io/docs/user-guide/namespaces"
-              type: string
-            ownerReferences:
-              description: List of objects depended by this object. If ALL objects
-                in the list have been deleted, this object will be garbage collected.
-                If this object is managed by a controller, then an entry in this list
-                will point to this controller, with the controller field set to true.
-                There cannot be more than one managing controller.
-              items:
-                properties:
-                  apiVersion:
-                    description: API version of the referent.
-                    type: string
-                  blockOwnerDeletion:
-                    description: If true, AND if the owner has the "foregroundDeletion"
-                      finalizer, then the owner cannot be deleted from the key-value
-                      store until this reference is removed. Defaults to false. To
-                      set this field, a user needs "delete" permission of the owner,
-                      otherwise 422 (Unprocessable Entity) will be returned.
-                    type: boolean
-                  controller:
-                    description: If true, this reference points to the managing controller.
-                    type: boolean
-                  kind:
-                    description: 'Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
-                    type: string
-                  name:
-                    description: 'Name of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#names'
-                    type: string
-                  uid:
-                    description: 'UID of the referent. More info: http://kubernetes.io/docs/user-guide/identifiers#uids'
-                    type: string
-                required:
-                - apiVersion
-                - kind
-                - name
-                - uid
-                type: object
-              type: array
-            resourceVersion:
-              description: "An opaque value that represents the internal version of
-                this object that can be used by clients to determine when objects
-                have changed. May be used for optimistic concurrency, change detection,
-                and the watch operation on a resource or set of resources. Clients
-                must treat these values as opaque and passed unmodified back to the
-                server. They may only be valid for a particular resource or set of
-                resources. \n Populated by the system. Read-only. Value must be treated
-                as opaque by clients and . More info: https://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency"
-              type: string
-            selfLink:
-              description: SelfLink is a URL representing this object. Populated by
-                the system. Read-only.
-              type: string
-            uid:
-              description: "UID is the unique in time and space value for this object.
-                It is typically generated by the server on successful creation of
-                a resource and is not allowed to change on PUT operations. \n Populated
-                by the system. Read-only. More info: http://kubernetes.io/docs/user-guide/identifiers#uids"
-              type: string
           type: object
         spec:
+          description: TrainingJobSpec defines the desired state of TrainingJob
           properties:
             algorithmSpecification:
               properties:
@@ -3467,14 +1906,17 @@ spec:
               - s3Uri
               type: object
             debugHookConfig:
+              description: DebugHookConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugHookConfig.html
               properties:
                 collectionConfigurations:
                   items:
+                    description: CollectionConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_CollectionConfiguration.html
                     properties:
                       collectionName:
                         type: string
                       collectionParameters:
                         items:
+                          description: Used in describing maps in Kubernetes.
                           properties:
                             name:
                               type: string
@@ -3488,6 +1930,7 @@ spec:
                   type: string
                 ruleParameters:
                   items:
+                    description: Used in describing maps in Kubernetes.
                     properties:
                       name:
                         type: string
@@ -3503,6 +1946,7 @@ spec:
               type: object
             debugRuleConfigurations:
               items:
+                description: DebugRuleConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleConfiguration.html
                 properties:
                   instanceType:
                     type: string
@@ -3514,6 +1958,7 @@ spec:
                     type: string
                   ruleParameters:
                     items:
+                      description: Used in describing maps in Kubernetes.
                       properties:
                         name:
                           type: string
@@ -3541,6 +1986,7 @@ spec:
               type: boolean
             hyperParameters:
               items:
+                description: Used in describing maps in Kubernetes.
                 properties:
                   name:
                     type: string
@@ -3693,6 +2139,7 @@ spec:
                 type: object
               type: array
             tensorBoardOutputConfig:
+              description: TensorBoardOutputConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_TensorBoardOutputConfig.html
               properties:
                 localPath:
                   type: string
@@ -3713,11 +2160,13 @@ spec:
                 securityGroupIds:
                   items:
                     type: string
+                  maxItems: 5
                   minItems: 1
                   type: array
                 subnets:
                   items:
                     type: string
+                  maxItems: 16
                   minItems: 1
                   type: array
               required:
@@ -3727,12 +2176,13 @@ spec:
           required:
           - algorithmSpecification
           - outputDataConfig
+          - region
           - resourceConfig
           - roleArn
-          - region
           - stoppingCondition
           type: object
         status:
+          description: TrainingJobStatus defines the observed state of TrainingJob
           properties:
             additional:
               description: Field to store additional information, for example if we
@@ -3745,6 +2195,7 @@ spec:
               description: Status of rule evaluation jobs, obtained from DebugRuleEvaluationStatuses.
                 https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html#sagemaker-DescribeTrainingJob-response-DebugRuleEvaluationStatuses
               items:
+                description: DebugRuleEvaluationStatus https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleEvaluationStatus.html
                 properties:
                   lastModifiedTime:
                     format: date-time
@@ -3781,6 +2232,7 @@ spec:
       required:
       - spec
       type: object
+  version: v1
   versions:
   - name: v1
     served: true
@@ -3838,161 +2290,161 @@ rules:
   resources:
   - batchtransformjobs
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
   - batchtransformjobs/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
   - endpointconfigs
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
   - endpointconfigs/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - hostingdeployments
+  - hostingautoscalingpolicies
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - hostingdeployments/status
+  - hostingautoscalingpolicies/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - models
+  - hostingdeployments
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - models/status
+  - hostingdeployments/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - endpointconfigs
+  - hyperparametertuningjobs
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - endpointconfigs/status
+  - hyperparametertuningjobs/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - hyperparametertuningjobs
+  - models
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - hyperparametertuningjobs/status
+  - models/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - models
+  - processingjobs
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
-  - models/status
+  - processingjobs/status
   verbs:
   - get
-  - update
   - patch
+  - update
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
   - trainingjobs
   verbs:
+  - create
+  - delete
   - get
   - list
-  - watch
-  - create
-  - update
   - patch
-  - delete
+  - update
+  - watch
 - apiGroups:
   - sagemaker.aws.amazon.com
   resources:
   - trainingjobs/status
   verbs:
   - get
-  - update
   - patch
+  - update
 ---
 apiVersion: rbac.authorization.k8s.io/v1
 kind: ClusterRole
@@ -4106,7 +2558,7 @@ spec:
         env:
         - name: AWS_DEFAULT_SAGEMAKER_ENDPOINT
           value: ""
-        image: 957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1.1
+        image: 957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1.2
         imagePullPolicy: Always
         name: manager
         resources:

@EngHabu
Copy link
Contributor

EngHabu commented Sep 8, 2021

As far as I can tell, these seem equivalent! thank you for doing that.
Have you managed to try out the deployment and a SageMaker example?

@stephen37
Copy link
Contributor Author

I've got the deployment working and tried one simple thing but I haven't tried anything else. I can also put the same version as the one used in the installer.yaml that was used in Flyte if you're worried about anything in particular :D

@EngHabu
Copy link
Contributor

EngHabu commented Sep 8, 2021

Oh no, that's perfect, you tried a simple SageMaker through flyte example, right? Just wanted to make sure basic functionality is working...

@stephen37
Copy link
Contributor Author

Oh no, that's perfect, you tried a simple SageMaker through flyte example, right? Just wanted to make sure basic functionality is working...

Yes 😄

@EngHabu
Copy link
Contributor

EngHabu commented Sep 8, 2021

One last thing, can you run make kustomize and add the generated files to the PR?

@stephen37
Copy link
Contributor Author

I was pretty sure that I had pushed my comment but it turns out that it was too long for Github so I'm gonna split it in two

apiVersion: v1
kind: Namespace
metadata:
  name: flyte
---
apiVersion: v1
kind: Namespace
metadata:
  name: kubeflow
---
apiVersion: v1
kind: Namespace
metadata:
  labels:
    control-plane: controller-manager
  name: sagemaker-k8s-operator-system
---
apiVersion: v1
kind: Namespace
metadata:
  name: sparkoperator
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: batchtransformjobs.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.transformJobStatus
    name: Status
    type: string
  - JSONPath: .metadata.creationTimestamp
    format: date
    name: Creation-Time
    type: string
  - JSONPath: .status.sageMakerTransformJobName
    name: Sagemaker-Job-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: BatchTransformJob
    listKind: BatchTransformJobList
    plural: batchtransformjobs
    singular: batchtransformjob
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: BatchTransformJob is the Schema for the batchtransformjobs 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: BatchTransformJobSpec defines the desired state of BatchTransformJob
          properties:
            batchStrategy:
              description: Batch Transform related struct
              type: string
            dataProcessing:
              properties:
                JoinSource:
                  type: string
                OutputFilter:
                  type: string
                inputFilter:
                  type: string
              type: object
            environment:
              items:
                description: Used in describing maps in Kubernetes.
                properties:
                  name:
                    type: string
                  value:
                    type: string
                type: object
              type: array
            maxConcurrentTransforms:
              format: int64
              type: integer
            maxPayloadInMB:
              format: int64
              type: integer
            modelName:
              type: string
            region:
              minLength: 1
              type: string
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
            transformInput:
              properties:
                compressionType:
                  enum:
                  - None
                  - Gzip
                  type: string
                contentType:
                  type: string
                dataSource:
                  properties:
                    s3DataSource:
                      properties:
                        s3DataType:
                          enum:
                          - S3Prefix
                          - ManifestFile
                          - AugmentedManifestFile
                          type: string
                        s3Uri:
                          pattern: ^(https|s3)://([^/]+)/?(.*)$
                          type: string
                      required:
                      - s3DataType
                      - s3Uri
                      type: object
                  required:
                  - s3DataSource
                  type: object
                splitType:
                  type: string
              required:
              - dataSource
              type: object
            transformJobName:
              description: The SageMaker batchtransform job name. This is optional for the SageMaker K8s operator. If it is empty, the operator will populate it with a generated name.
              maxLength: 63
              type: string
            transformOutput:
              properties:
                accept:
                  type: string
                assembleWith:
                  type: string
                kmsKeyId:
                  type: string
                s3OutputPath:
                  pattern: ^(https|s3)://([^/]+)/?(.*)$
                  type: string
              required:
              - s3OutputPath
              type: object
            transformResources:
              properties:
                instanceCount:
                  format: int64
                  minimum: 1
                  type: integer
                instanceType:
                  description: Transform job has separate instance type called TransformInstanceType Keeping it string
                  minLength: 1
                  type: string
                volumeKmsKeyId:
                  type: string
              required:
              - instanceCount
              - instanceType
              type: object
          required:
          - modelName
          - region
          - transformInput
          - transformOutput
          - transformResources
          type: object
        status:
          description: BatchTransformJobStatus defines the observed state of BatchTransformJob
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status we update this.
              type: string
            lastCheckTime:
              description: The last time that we checked the status of the SageMaker job.
              format: date-time
              type: string
            sageMakerTransformJobName:
              description: SageMaker TransformJobName job name
              type: string
            transformJobStatus:
              description: The status of the transform job. https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTransformJob.html
              type: string
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: endpointconfigs.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.status
    name: Status
    type: string
  - JSONPath: .status.sageMakerEndpointConfigName
    name: Sage-Maker-EndpointConfig-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: EndpointConfig
    listKind: EndpointConfigList
    plural: endpointconfigs
    singular: endpointconfig
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: EndpointConfig is the Schema for the hostingdeployments 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: EndpointConfigSpec defines the desired state of EndpointConfig
          properties:
            kmsKeyId:
              type: string
            productionVariants:
              items:
                properties:
                  acceleratorType:
                    type: string
                  initialInstanceCount:
                    format: int64
                    minimum: 1
                    type: integer
                  initialVariantWeight:
                    description: We use an int64 here instead of float because floats are not supported by the Kubernetes API. The actual traffic directed to this ProductionVariant is the ratio of this variant weight to the sum of all variant weights.
                    format: int64
                    type: integer
                  instanceType:
                    type: string
                  modelName:
                    minLength: 1
                    type: string
                  variantName:
                    minLength: 1
                    type: string
                required:
                - initialInstanceCount
                - instanceType
                - modelName
                - variantName
                type: object
              minItems: 1
              type: array
            region:
              type: string
            sageMakerEndpoint:
              type: string
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
          required:
          - productionVariants
          - region
          type: object
        status:
          description: EndpointConfigStatus defines the observed state of EndpointConfig
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status in sagemaker we update this.
              type: string
            endpointConfigArn:
              description: The EndpointConfig ARN of the SageMaker EndpointConfig
              type: string
            lastUpdateTime:
              description: The last time this status was updated.
              format: date-time
              type: string
            sageMakerEndpointConfigName:
              description: The name of the EndpointConfig in SageMaker.
              type: string
            status:
              description: The status of the EndpointConfig
              type: string
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: flyteworkflows.flyte.lyft.com
spec:
  group: flyte.lyft.com
  names:
    kind: FlyteWorkflow
    plural: flyteworkflows
    shortNames:
    - fly
    singular: flyteworkflow
  scope: Namespaced
  version: v1alpha1
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: hostingautoscalingpolicies.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.hostingAutoscalingPolicyStatus
    name: Status
    type: string
  - JSONPath: .metadata.creationTimestamp
    format: date
    name: Creation-Time
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: HostingAutoscalingPolicy
    listKind: HostingAutoscalingPolicyList
    plural: hostingautoscalingpolicies
    shortNames:
    - hap
    singular: hostingautoscalingpolicy
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: HostingAutoscalingPolicy is the Schema for the HostingAutoscalingPolicy 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: HostingAutoscalingPolicySpec defines the desired state of the cluster for HostingAutoscalingPolicy
          properties:
            maxCapacity:
              format: int64
              type: integer
            minCapacity:
              format: int64
              type: integer
            policyName:
              description: The autoscaling policy name. This is optional for the SageMaker K8s operator. If it is empty, the operator will populate it with a generated name.
              maxLength: 256
              type: string
            policyType:
              description: The autoscaling policy type. This is optional for the SageMaker K8s operator. If it is empty, the operator will populate it with TargetTrackingScaling
              type: string
            region:
              type: string
            resourceId:
              items:
                description: AutoscalingResource is used to create the string representing the resourceID in the format endpoint/my-end-point/variant/my-variant
                properties:
                  endpointName:
                    minLength: 1
                    type: string
                  variantName:
                    minLength: 1
                    type: string
                type: object
              minItems: 1
              type: array
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            scalableDimension:
              type: string
            serviceNamespace:
              type: string
            suspendedState:
              description: HAPSuspendedState https://docs.aws.amazon.com/autoscaling/application/APIReference/API_SuspendedState.html
              properties:
                dynamicScalingInSuspended:
                  type: boolean
                dynamicScalingOutSuspended:
                  type: boolean
                scheduledScalingSuspended:
                  type: boolean
              type: object
            targetTrackingScalingPolicyConfiguration:
              description: 'TargetTrackingScalingPolicyConfig https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html TODO: string requires the input to be in quotes in the spec which is not intuitive Needs a fix for floats, probably use resource.Quantity'
              properties:
                customizedMetricSpecification:
                  description: CustomizedMetricSpecification https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html
                  properties:
                    dimensions:
                      items:
                        description: Used in describing maps in Kubernetes.
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                        type: object
                      type: array
                    metricName:
                      minLength: 1
                      type: string
                    namespace:
                      minLength: 1
                      type: string
                    statistic:
                      minLength: 1
                      type: string
                    unit:
                      type: string
                  type: object
                disableScaleIn:
                  type: boolean
                predefinedMetricSpecification:
                  description: Ideally Predefined metric should not need a value but this is for consistency with API usage
                  properties:
                    predefinedMetricType:
                      type: string
                  type: object
                scaleInCooldown:
                  format: int64
                  type: integer
                scaleOutCooldown:
                  format: int64
                  type: integer
                targetValue:
                  format: int64
                  type: integer
              type: object
          required:
          - region
          type: object
        status:
          description: HostingAutoscalingPolicyStatus defines the observed state of HostingAutoscalingPolicy
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status we update this.
              type: string
            hostingAutoscalingPolicyStatus:
              type: string
            lastCheckTime:
              description: The last time that we checked the status of the job.
              format: date-time
              type: string
            policyName:
              type: string
            resourceIDList:
              items:
                type: string
              type: array
          type: object
      required:
      - spec
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: hostingdeployments.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.endpointStatus
    name: Status
    type: string
  - JSONPath: .status.endpointName
    name: Sagemaker-endpoint-name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: HostingDeployment
    listKind: HostingDeploymentList
    plural: hostingdeployments
    singular: hostingdeployment
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: HostingDeployment is the Schema for the hostingdeployments 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: HostingDeploymentSpec defines the desired state of HostingDeployment
          properties:
            endpointName:
              description: The SageMaker endpoint name. If it is empty the operator will populate it with a generated name.
              maxLength: 63
              type: string
            excludeRetainedVariantProperties:
              items:
                properties:
                  variantPropertyType:
                    enum:
                    - DesiredInstanceCount
                    - DesiredWeight
                    - DataCaptureConfig
                    type: string
                required:
                - variantPropertyType
                type: object
              type: array
            kmsKeyId:
              type: string
            models:
              items:
                description: This is something we are defining not coming from aws-sdk-go-v2
                properties:
                  containers:
                    items:
                      description: Describes the container, as part of model definition.
                      properties:
                        containerHostname:
                          type: string
                        environment:
                          items:
                            description: Used in describing maps in Kubernetes.
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            type: object
                          type: array
                        image:
                          type: string
                        mode:
                          enum:
                          - SingleModel
                          - MultiModel
                          type: string
                        modelDataUrl:
                          type: string
                        modelPackageName:
                          type: string
                      type: object
                    minItems: 1
                    type: array
                  enableNetworkIsolation:
                    type: boolean
                  executionRoleArn:
                    minLength: 20
                    type: string
                  name:
                    type: string
                  primaryContainer:
                    description: Primary container will be ignored if more than one container in the `containers` field is provided.
                    type: string
                  vpcConfig:
                    properties:
                      securityGroupIds:
                        items:
                          type: string
                        maxItems: 5
                        minItems: 1
                        type: array
                      subnets:
                        items:
                          type: string
                        maxItems: 16
                        minItems: 1
                        type: array
                    required:
                    - securityGroupIds
                    - subnets
                    type: object
                required:
                - executionRoleArn
                - name
                type: object
              type: array
            productionVariants:
              items:
                properties:
                  acceleratorType:
                    type: string
                  initialInstanceCount:
                    format: int64
                    minimum: 1
                    type: integer
                  initialVariantWeight:
                    description: We use an int64 here instead of float because floats are not supported by the Kubernetes API. The actual traffic directed to this ProductionVariant is the ratio of this variant weight to the sum of all variant weights.
                    format: int64
                    type: integer
                  instanceType:
                    type: string
                  modelName:
                    minLength: 1
                    type: string
                  variantName:
                    minLength: 1
                    type: string
                required:
                - initialInstanceCount
                - instanceType
                - modelName
                - variantName
                type: object
              minItems: 1
              type: array
            region:
              minLength: 1
              type: string
            retainAllVariantProperties:
              type: boolean
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
          required:
          - models
          - productionVariants
          - region
          type: object
        status:
          description: HostingDeploymentStatus defines the observed state of HostingDeployment
          properties:
            additional:
              description: This field contains additional information about failures.
              type: string
            creationTime:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-CreationTime
              format: date-time
              type: string
            endpointArn:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-EndpointArn
              type: string
            endpointConfigName:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html#SageMaker-CreateEndpoint-request-EndpointConfigName
              type: string
            endpointName:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_CreateEndpoint.html#SageMaker-CreateEndpoint-request-EndpointName
              type: string
            endpointStatus:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-EndpointStatus
              type: string
            endpointUrl:
              type: string
            failureReason:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#SageMaker-DescribeEndpoint-response-FailureReason
              type: string
            lastCheckTime:
              format: date-time
              type: string
            lastModifiedTime:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeEndpoint.html#API_DescribeEndpoint_ResponseSyntax
              format: date-time
              type: string
            modelNames:
              items:
                description: Used in describing maps in Kubernetes.
                properties:
                  name:
                    type: string
                  value:
                    type: string
                type: object
              type: array
            productionVariants:
              description: https://docs.aws.amazon.com/sagemaker/latest/dg/API_ProductionVariantSummary.html
              items:
                description: Please also see https://docs.aws.amazon.com/goto/WebAPI/sagemaker-2017-07-24/ProductionVariantSummary This is only used in status so no validation is required
                properties:
                  currentInstanceCount:
                    format: int64
                    type: integer
                  currentWeight:
                    description: We use an int64 here instead of float because floats are not supported by the Kubernetes API. The actual traffic directed to this ProductionVariant is the ratio of this variant weight to the sum of all variant weights.
                    format: int64
                    type: integer
                  deployedImages:
                    items:
                      properties:
                        resolutionTime:
                          format: date-time
                          type: string
                        resolvedImage:
                          type: string
                        specifiedImage:
                          type: string
                      type: object
                    type: array
                  desiredInstanceCount:
                    format: int64
                    type: integer
                  desiredWeight:
                    description: We use an int64 here instead of float because floats are not supported by the Kubernetes API. The actual traffic directed to this ProductionVariant is the ratio of this variant weight to the sum of all variant weights.
                    format: int64
                    type: integer
                  variantName:
                    type: string
                required:
                - variantName
                type: object
              type: array
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: hyperparametertuningjobs.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.hyperParameterTuningJobStatus
    name: Status
    type: string
  - JSONPath: .metadata.creationTimestamp
    format: date
    name: Creation-Time
    type: string
  - JSONPath: .status.trainingJobStatusCounters.completed
    format: int64
    name: Completed
    type: number
  - JSONPath: .status.trainingJobStatusCounters.inProgress
    format: int64
    name: InProgress
    type: number
  - JSONPath: .status.trainingJobStatusCounters.totalError
    format: int64
    name: Errors
    type: number
  - JSONPath: .status.trainingJobStatusCounters.stopped
    format: int64
    name: Stopped
    type: number
  - JSONPath: .status.bestTrainingJob.trainingJobName
    name: Best-Training-Job
    type: string
  - JSONPath: .status.sageMakerHyperParameterTuningJobName
    name: Sagemaker-Job-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: HyperparameterTuningJob
    listKind: HyperparameterTuningJobList
    plural: hyperparametertuningjobs
    singular: hyperparametertuningjob
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: HyperparameterTuningJob is the Schema for the hyperparametertuningjobs 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: HyperparameterTuningJobSpec defines the desired state of HyperparameterTuningJob These are taken from aws-go-sdk-v2 and modified to use Kubebuilder validation and json omitempty instead of aws-go-sdk-v2 validation and required parameter notation, respectively.
          properties:
            hyperParameterTuningJobConfig:
              properties:
                hyperParameterTuningJobObjective:
                  properties:
                    metricName:
                      minLength: 1
                      type: string
                    type:
                      type: string
                  required:
                  - metricName
                  - type
                  type: object
                parameterRanges:
                  properties:
                    categoricalParameterRanges:
                      items:
                        properties:
                          name:
                            type: string
                          values:
                            items:
                              type: string
                            minItems: 1
                            type: array
                        required:
                        - name
                        - values
                        type: object
                      type: array
                    continuousParameterRanges:
                      items:
                        properties:
                          maxValue:
                            type: string
                          minValue:
                            type: string
                          name:
                            type: string
                          scalingType:
                            type: string
                        required:
                        - maxValue
                        - minValue
                        - name
                        - scalingType
                        type: object
                      type: array
                    integerParameterRanges:
                      items:
                        properties:
                          maxValue:
                            type: string
                          minValue:
                            type: string
                          name:
                            type: string
                          scalingType:
                            type: string
                        required:
                        - maxValue
                        - minValue
                        - name
                        - scalingType
                        type: object
                      type: array
                  type: object
                resourceLimits:
                  properties:
                    maxNumberOfTrainingJobs:
                      format: int64
                      minimum: 1
                      type: integer
                    maxParallelTrainingJobs:
                      format: int64
                      minimum: 1
                      type: integer
                  required:
                  - maxNumberOfTrainingJobs
                  - maxParallelTrainingJobs
                  type: object
                strategy:
                  type: string
                trainingJobEarlyStoppingType:
                  type: string
              required:
              - resourceLimits
              - strategy
              type: object
            hyperParameterTuningJobName:
              type: string
            region:
              minLength: 1
              type: string
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
            trainingJobDefinition:
              properties:
                algorithmSpecification:
                  properties:
                    algorithmName:
                      minLength: 1
                      type: string
                    metricDefinitions:
                      items:
                        properties:
                          name:
                            minLength: 1
                            type: string
                          regex:
                            minLength: 1
                            type: string
                        required:
                        - name
                        - regex
                        type: object
                      type: array
                    trainingImage:
                      type: string
                    trainingInputMode:
                      enum:
                      - File
                      - Pipe
                      type: string
                  required:
                  - trainingInputMode
                  type: object
                checkpointConfig:
                  properties:
                    localPath:
                      type: string
                    s3Uri:
                      pattern: ^(https|s3)://([^/]+)/?(.*)$
                      type: string
                  required:
                  - s3Uri
                  type: object
                enableInterContainerTrafficEncryption:
                  type: boolean
                enableManagedSpotTraining:
                  type: boolean
                enableNetworkIsolation:
                  type: boolean
                inputDataConfig:
                  items:
                    properties:
                      channelName:
                        minLength: 1
                        pattern: '[A-Za-z0-9\.\-_]+'
                        type: string
                      compressionType:
                        enum:
                        - None
                        - Gzip
                        type: string
                      contentType:
                        type: string
                      dataSource:
                        properties:
                          fileSystemDataSource:
                            properties:
                              directoryPath:
                                type: string
                              fileSystemAccessMode:
                                type: string
                              fileSystemId:
                                type: string
                              fileSystemType:
                                type: string
                            required:
                            - directoryPath
                            - fileSystemAccessMode
                            - fileSystemId
                            - fileSystemType
                            type: object
                          s3DataSource:
                            properties:
                              attributeNames:
                                items:
                                  type: string
                                type: array
                              s3DataDistributionType:
                                enum:
                                - FullyReplicated
                                - ShardedByS3Key
                                type: string
                              s3DataType:
                                enum:
                                - S3Prefix
                                - ManifestFile
                                - AugmentedManifestFile
                                type: string
                              s3Uri:
                                pattern: ^(https|s3)://([^/]+)/?(.*)$
                                type: string
                            required:
                            - s3DataType
                            - s3Uri
                            type: object
                        type: object
                      inputMode:
                        enum:
                        - Pipe
                        - File
                        type: string
                      recordWrapperType:
                        type: string
                      shuffleConfig:
                        properties:
                          seed:
                            format: int64
                            type: integer
                        required:
                        - seed
                        type: object
                    required:
                    - channelName
                    - dataSource
                    type: object
                  minItems: 1
                  type: array
                outputDataConfig:
                  properties:
                    kmsKeyId:
                      type: string
                    s3OutputPath:
                      pattern: ^(https|s3)://([^/]+)/?(.*)$
                      type: string
                  required:
                  - s3OutputPath
                  type: object
                resourceConfig:
                  properties:
                    instanceCount:
                      format: int64
                      minimum: 1
                      type: integer
                    instanceType:
                      minLength: 1
                      type: string
                    volumeKmsKeyId:
                      type: string
                    volumeSizeInGB:
                      format: int64
                      minimum: 1
                      type: integer
                  required:
                  - instanceCount
                  - instanceType
                  - volumeSizeInGB
                  type: object
                roleArn:
                  minLength: 20
                  type: string
                staticHyperParameters:
                  items:
                    description: Used in describing maps in Kubernetes.
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
                stoppingCondition:
                  properties:
                    maxRuntimeInSeconds:
                      format: int64
                      minimum: 1
                      type: integer
                    maxWaitTimeInSeconds:
                      format: int64
                      minimum: 1
                      type: integer
                  type: object
                vpcConfig:
                  properties:
                    securityGroupIds:
                      items:
                        type: string
                      maxItems: 5
                      minItems: 1
                      type: array
                    subnets:
                      items:
                        type: string
                      maxItems: 16
                      minItems: 1
                      type: array
                  required:
                  - securityGroupIds
                  - subnets
                  type: object
              required:
              - algorithmSpecification
              - outputDataConfig
              - resourceConfig
              - roleArn
              - stoppingCondition
              type: object
            warmStartConfig:
              properties:
                parentHyperParameterTuningJobs:
                  items:
                    properties:
                      hyperParameterTuningJobName:
                        minLength: 1
                        type: string
                    type: object
                  minItems: 1
                  type: array
                warmStartType:
                  type: string
              required:
              - parentHyperParameterTuningJobs
              - warmStartType
              type: object
          required:
          - hyperParameterTuningJobConfig
          - region
          type: object
        status:
          description: HyperparameterTuningJobStatus defines the observed state of HyperparameterTuningJob
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status we update this.
              type: string
            bestTrainingJob:
              description: A HyperParameterTrainingJobSummary object that describes the training job that completed with the best current HyperParameterTuningJobObjective. See https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-BestTrainingJob
              properties:
                creationTime:
                  format: date-time
                  type: string
                failureReason:
                  type: string
                finalHyperParameterTuningJobObjectiveMetric:
                  properties:
                    metricName:
                      type: string
                    type:
                      type: string
                    value:
                      description: Value is string instead of float64 to prevent bugs when deserializing onto different platforms.
                      type: string
                  type: object
                objectiveStatus:
                  type: string
                trainingEndTime:
                  format: date-time
                  type: string
                trainingJobArn:
                  type: string
                trainingJobName:
                  type: string
                trainingJobStatus:
                  type: string
                trainingStartTime:
                  format: date-time
                  type: string
                tunedHyperParameters:
                  items:
                    description: Used in describing maps in Kubernetes.
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
                tuningJobName:
                  type: string
              type: object
            hyperParameterTuningJobStatus:
              description: The status of HyperParameterTrainingJob https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeHyperParameterTuningJob.html#SageMaker-DescribeHyperParameterTuningJob-response-HyperParameterTuningJobStatus
              type: string
            lastCheckTime:
              description: The last time that we checked the status of the SageMaker job.
              format: date-time
              type: string
            sageMakerHyperParameterTuningJobName:
              description: SageMaker hyperparametertuning job name
              type: string
            trainingJobStatusCounters:
              description: The TrainingJobStatusCounters object that specifies the number of training jobs, categorized by status, that this tuning job launched. https://docs.aws.amazon.com/sagemaker/latest/dg/API_TrainingJobStatusCounters.html
              properties:
                completed:
                  description: The number of completed training jobs launched by the hyperparameter tuning job.
                  format: int64
                  type: integer
                inProgress:
                  description: The number of in-progress training jobs launched by a hyperparameter tuning job.
                  format: int64
                  type: integer
                nonRetryableError:
                  description: The number of training jobs that failed and can't be retried. A failed training job can't be retried if it failed because a client error occurred.
                  format: int64
                  type: integer
                retryableError:
                  description: The number of training jobs that failed, but can be retried. A failed training job can be retried only if it failed because an internal service error occurred.
                  format: int64
                  type: integer
                stopped:
                  description: The number of training jobs launched by a hyperparameter tuning job that were manually stopped.
                  format: int64
                  type: integer
                totalError:
                  description: The sum of NonRetryableError and RetryableError. This is unique to the Kubernetes operator and is used to simplify the `kubectl get` output.
                  format: int64
                  type: integer
              type: object
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: models.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.status
    name: Status
    type: string
  - JSONPath: .status.sageMakerModelName
    name: Sage-Maker-Model-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: Model
    listKind: ModelList
    plural: models
    singular: model
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: Model is the Schema for the hostingdeployments 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: ModelSpec defines the desired state of Model
          properties:
            containers:
              items:
                description: Describes the container, as part of model definition.
                properties:
                  containerHostname:
                    type: string
                  environment:
                    items:
                      description: Used in describing maps in Kubernetes.
                      properties:
                        name:
                          type: string
                        value:
                          type: string
                      type: object
                    type: array
                  image:
                    type: string
                  mode:
                    enum:
                    - SingleModel
                    - MultiModel
                    type: string
                  modelDataUrl:
                    type: string
                  modelPackageName:
                    type: string
                type: object
              type: array
            enableNetworkIsolation:
              type: boolean
            executionRoleArn:
              type: string
            primaryContainer:
              description: Describes the container, as part of model definition.
              properties:
                containerHostname:
                  type: string
                environment:
                  items:
                    description: Used in describing maps in Kubernetes.
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
                image:
                  type: string
                mode:
                  enum:
                  - SingleModel
                  - MultiModel
                  type: string
                modelDataUrl:
                  type: string
                modelPackageName:
                  type: string
              type: object
            region:
              type: string
            sageMakerEndpoint:
              type: string
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
            vpcConfig:
              properties:
                securityGroupIds:
                  items:
                    type: string
                  maxItems: 5
                  minItems: 1
                  type: array
                subnets:
                  items:
                    type: string
                  maxItems: 16
                  minItems: 1
                  type: array
              required:
              - securityGroupIds
              - subnets
              type: object
          required:
          - executionRoleArn
          - region
          type: object
        status:
          description: ModelStatus defines the observed state of Model
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status in sagemaker we update this.
              type: string
            lastUpdateTime:
              description: The last time this status was updated.
              format: date-time
              type: string
            modelArn:
              description: The Model ARN of the SageMaker model
              type: string
            sageMakerModelName:
              description: The name of the model in SageMaker.
              type: string
            status:
              description: The status of the model.
              type: string
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: processingjobs.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.processingJobStatus
    name: Status
    type: string
  - JSONPath: .metadata.creationTimestamp
    format: date
    name: Creation-Time
    type: string
  - JSONPath: .status.sageMakerProcessingJobName
    name: Sagemaker-Job-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: ProcessingJob
    listKind: ProcessingJobList
    plural: processingjobs
    singular: processingjob
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: ProcessingJob is the Schema for the processingjobs 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: ProcessingJobSpec defines the desired state of ProcessingJob
          properties:
            appSpecification:
              properties:
                containerArguments:
                  items:
                    type: string
                  type: array
                containerEntrypoint:
                  items:
                    type: string
                  type: array
                imageUri:
                  type: string
              type: object
            environment:
              items:
                description: Used in describing maps in Kubernetes.
                properties:
                  name:
                    type: string
                  value:
                    type: string
                type: object
              maxItems: 100
              type: array
            networkConfig:
              properties:
                enableInterContainerTrafficEncryption:
                  type: boolean
                enableNetworkIsolation:
                  type: boolean
                vpcConfig:
                  properties:
                    securityGroupIds:
                      items:
                        type: string
                      maxItems: 5
                      minItems: 1
                      type: array
                    subnets:
                      items:
                        type: string
                      maxItems: 16
                      minItems: 1
                      type: array
                  required:
                  - securityGroupIds
                  - subnets
                  type: object
              type: object
            processingInputs:
              items:
                properties:
                  inputName:
                    type: string
                  s3Input:
                    properties:
                      localPath:
                        maxLength: 256
                        type: string
                      s3CompressionType:
                        enum:
                        - None
                        - Gzip
                        type: string
                      s3DataDistributionType:
                        allOf:
                        - enum:
                          - FullyReplicated
                          - ShardedByS3Key
                        - enum:
                          - FullyReplicated
                          - ShardedByS3Key
                        type: string
                      s3DataType:
                        enum:
                        - S3Prefix
                        - ManifestFile
                        type: string
                      s3InputMode:
                        allOf:
                        - enum:
                          - File
                          - Pipe
                        - enum:
                          - Pipe
                          - File
                        type: string
                      s3Uri:
                        pattern: ^(https|s3)://([^/]+)/?(.*)$
                        type: string
                    required:
                    - localPath
                    - s3DataType
                    - s3InputMode
                    - s3Uri
                    type: object
                required:
                - inputName
                - s3Input
                type: object
              maxItems: 10
              type: array
            processingOutputConfig:
              properties:
                kmsKeyId:
                  maxLength: 1024
                  type: string
                outputs:
                  items:
                    properties:
                      outputName:
                        type: string
                      s3Output:
                        properties:
                          localPath:
                            maxLength: 256
                            type: string
                          s3UploadMode:
                            enum:
                            - Continuous
                            - EndOfJob
                            type: string
                          s3Uri:
                            pattern: ^(https|s3)://([^/]+)/?(.*)$
                            type: string
                        required:
                        - localPath
                        - s3UploadMode
                        - s3Uri
                        type: object
                    required:
                    - outputName
                    - s3Output
                    type: object
                  maxItems: 10
                  type: array
              required:
              - outputs
              type: object
            processingResources:
              properties:
                clusterConfig:
                  properties:
                    instanceCount:
                      format: int64
                      minimum: 1
                      type: integer
                    instanceType:
                      minLength: 1
                      type: string
                    volumeKmsKeyId:
                      type: string
                    volumeSizeInGB:
                      format: int64
                      minimum: 1
                      type: integer
                  required:
                  - instanceCount
                  - instanceType
                  - volumeSizeInGB
                  type: object
              required:
              - clusterConfig
              type: object
            region:
              minLength: 1
              type: string
            roleArn:
              maxLength: 2048
              minLength: 20
              type: string
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            stoppingCondition:
              description: StoppingConditionNoSpot is used for APIs which do not support WaitTime param i.e. managed spot training not supported
              properties:
                maxRuntimeInSeconds:
                  format: int64
                  minimum: 1
                  type: integer
              type: object
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              maxItems: 50
              type: array
          required:
          - appSpecification
          - processingResources
          - region
          - roleArn
          type: object
        status:
          description: ProcessingJobStatus defines the observed state of ProcessingJob
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status we update this.
              type: string
            cloudWatchLogUrl:
              description: CloudWatch URL for log
              type: string
            lastCheckTime:
              description: The last time that we checked the status of the SageMaker job.
              format: date-time
              type: string
            processingJobStatus:
              description: The status of the processing job. https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeProcessingJob.html#sagemaker-DescribeProcessingJob-response-ProcessingJobStatus
              type: string
            sageMakerProcessingJobName:
              description: SageMaker processing job name
              type: string
          type: object
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: pytorchjobs.kubeflow.org
spec:
  additionalPrinterColumns:
  - JSONPath: .status.conditions[-1:].type
    name: State
    type: string
  - JSONPath: .metadata.creationTimestamp
    name: Age
    type: date
  group: kubeflow.org
  names:
    kind: PyTorchJob
    plural: pytorchjobs
    singular: pytorchjob
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        spec:
          properties:
            pytorchReplicaSpecs:
              properties:
                Master:
                  properties:
                    replicas:
                      maximum: 1
                      minimum: 1
                      type: integer
                Worker:
                  properties:
                    replicas:
                      minimum: 1
                      type: integer
  versions:
  - name: v1
    served: true
    storage: true
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: (unknown)
  creationTimestamp: null
  name: scheduledsparkapplications.sparkoperator.k8s.io
spec:
  group: sparkoperator.k8s.io
  names:
    kind: ScheduledSparkApplication
    listKind: ScheduledSparkApplicationList
    plural: scheduledsparkapplications
    shortNames:
    - scheduledsparkapp
    singular: scheduledsparkapplication
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            concurrencyPolicy:
              type: string
            failedRunHistoryLimit:
              format: int32
              type: integer
            schedule:
              type: string
            successfulRunHistoryLimit:
              format: int32
              type: integer
            suspend:
              type: boolean
            template:
              properties:
                arguments:
                  items:
                    type: string
                  type: array
                batchScheduler:
                  type: string
                batchSchedulerOptions:
                  properties:
                    priorityClassName:
                      type: string
                    queue:
                      type: string
                  type: object
                deps:
                  properties:
                    files:
                      items:
                        type: string
                      type: array
                    jars:
                      items:
                        type: string
                      type: array
                    pyFiles:
                      items:
                        type: string
                      type: array
                  type: object
                driver:
                  properties:
                    affinity:
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - preference
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              required:
                              - nodeSelectorTerms
                              type: object
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                      topologyKey:
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                      topologyKey:
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                          type: object
                      type: object
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    configMaps:
                      items:
                        properties:
                          name:
                            type: string
                          path:
                            type: string
                        required:
                        - name
                        - path
                        type: object
                      type: array
                    coreLimit:
                      type: string
                    coreRequest:
                      type: string
                    cores:
                      format: int32
                      minimum: 1
                      type: integer
                    dnsConfig:
                      properties:
                        nameservers:
                          items:
                            type: string
                          type: array
                        options:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            type: object
                          type: array
                        searches:
                          items:
                            type: string
                          type: array
                      type: object
                    env:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    type: string
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                    envFrom:
                      items:
                        properties:
                          configMapRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                          prefix:
                            type: string
                          secretRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                        type: object
                      type: array
                    envSecretKeyRefs:
                      additionalProperties:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                        required:
                        - key
                        - name
                        type: object
                      type: object
                    envVars:
                      additionalProperties:
                        type: string
                      type: object
                    gpu:
                      properties:
                        name:
                          type: string
                        quantity:
                          format: int64
                          type: integer
                      required:
                      - name
                      - quantity
                      type: object
                    hostNetwork:
                      type: boolean
                    image:
                      type: string
                    initContainers:
                      items:
                        properties:
                          args:
                            items:
                              type: string
                            type: array
                          command:
                            items:
                              type: string
                            type: array
                          env:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                                valueFrom:
                                  properties:
                                    configMapKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          type: string
                                        resource:
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                    secretKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                          envFrom:
                            items:
                              properties:
                                configMapRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                prefix:
                                  type: string
                                secretRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                              type: object
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          lifecycle:
                            properties:
                              postStart:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                            type: object
                          livenessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          name:
                            type: string
                          ports:
                            items:
                              properties:
                                containerPort:
                                  format: int32
                                  type: integer
                                hostIP:
                                  type: string
                                hostPort:
                                  format: int32
                                  type: integer
                                name:
                                  type: string
                                protocol:
                                  type: string
                              required:
                              - containerPort
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          resources:
                            properties:
                              limits:
                                additionalProperties:
                                  type: string
                                type: object
                              requests:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                          securityContext:
                            properties:
                              allowPrivilegeEscalation:
                                type: boolean
                              capabilities:
                                properties:
                                  add:
                                    items:
                                      type: string
                                    type: array
                                  drop:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              privileged:
                                type: boolean
                              procMount:
                                type: string
                              readOnlyRootFilesystem:
                                type: boolean
                              runAsGroup:
                                format: int64
                                type: integer
                              runAsNonRoot:
                                type: boolean
                              runAsUser:
                                format: int64
                                type: integer
                              seLinuxOptions:
                                properties:
                                  level:
                                    type: string
                                  role:
                                    type: string
                                  type:
                                    type: string
                                  user:
                                    type: string
                                type: object
                            type: object
                          stdin:
                            type: boolean
                          stdinOnce:
                            type: boolean
                          terminationMessagePath:
                            type: string
                          terminationMessagePolicy:
                            type: string
                          tty:
                            type: boolean
                          volumeDevices:
                            items:
                              properties:
                                devicePath:
                                  type: string
                                name:
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                          volumeMounts:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                mountPropagation:
                                  type: string
                                name:
                                  type: string
                                readOnly:
                                  type: boolean
                                subPath:
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          workingDir:
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    javaOptions:
                      type: string
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    lifecycle:
                      properties:
                        postStart:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                          type: object
                        preStop:
                          properties:
                            exec:
                              properties:
                                command:
                                  items:
                                    type: string
                                  type: array
                              type: object
                            httpGet:
                              properties:
                                host:
                                  type: string
                                httpHeaders:
                                  items:
                                    properties:
                                      name:
                                        type: string
                                      value:
                                        type: string
                                    required:
                                    - name
                                    - value
                                    type: object
                                  type: array
                                path:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                                scheme:
                                  type: string
                              required:
                              - port
                              type: object
                            tcpSocket:
                              properties:
                                host:
                                  type: string
                                port:
                                  anyOf:
                                  - type: integer
                                  - type: string
                                  x-kubernetes-int-or-string: true
                              required:
                              - port
                              type: object
                          type: object
                      type: object
                    memory:
                      type: string
                    memoryOverhead:
                      type: string
                    nodeSelector:
                      additionalProperties:
                        type: string
                      type: object
                    podName:
                      pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                      type: string
                    schedulerName:
                      type: string
                    secrets:
                      items:
                        properties:
                          name:
                            type: string
                          path:
                            type: string
                          secretType:
                            type: string
                        required:
                        - name
                        - path
                        - secretType
                        type: object
                      type: array
                    securityContext:
                      properties:
                        fsGroup:
                          format: int64
                          type: integer
                        runAsGroup:
                          format: int64
                          type: integer
                        runAsNonRoot:
                          type: boolean
                        runAsUser:
                          format: int64
                          type: integer
                        seLinuxOptions:
                          properties:
                            level:
                              type: string
                            role:
                              type: string
                            type:
                              type: string
                            user:
                              type: string
                          type: object
                        supplementalGroups:
                          items:
                            format: int64
                            type: integer
                          type: array
                        sysctls:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                      type: object
                    serviceAccount:
                      type: string
                    sidecars:
                      items:
                        properties:
                          args:
                            items:
                              type: string
                            type: array
                          command:
                            items:
                              type: string
                            type: array
                          env:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                                valueFrom:
                                  properties:
                                    configMapKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          type: string
                                        resource:
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                    secretKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                          envFrom:
                            items:
                              properties:
                                configMapRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                prefix:
                                  type: string
                                secretRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                              type: object
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          lifecycle:
                            properties:
                              postStart:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                            type: object
                          livenessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          name:
                            type: string
                          ports:
                            items:
                              properties:
                                containerPort:
                                  format: int32
                                  type: integer
                                hostIP:
                                  type: string
                                hostPort:
                                  format: int32
                                  type: integer
                                name:
                                  type: string
                                protocol:
                                  type: string
                              required:
                              - containerPort
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          resources:
                            properties:
                              limits:
                                additionalProperties:
                                  type: string
                                type: object
                              requests:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                          securityContext:
                            properties:
                              allowPrivilegeEscalation:
                                type: boolean
                              capabilities:
                                properties:
                                  add:
                                    items:
                                      type: string
                                    type: array
                                  drop:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              privileged:
                                type: boolean
                              procMount:
                                type: string
                              readOnlyRootFilesystem:
                                type: boolean
                              runAsGroup:
                                format: int64
                                type: integer
                              runAsNonRoot:
                                type: boolean
                              runAsUser:
                                format: int64
                                type: integer
                              seLinuxOptions:
                                properties:
                                  level:
                                    type: string
                                  role:
                                    type: string
                                  type:
                                    type: string
                                  user:
                                    type: string
                                type: object
                            type: object
                          stdin:
                            type: boolean
                          stdinOnce:
                            type: boolean
                          terminationMessagePath:
                            type: string
                          terminationMessagePolicy:
                            type: string
                          tty:
                            type: boolean
                          volumeDevices:
                            items:
                              properties:
                                devicePath:
                                  type: string
                                name:
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                          volumeMounts:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                mountPropagation:
                                  type: string
                                name:
                                  type: string
                                readOnly:
                                  type: boolean
                                subPath:
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          workingDir:
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    terminationGracePeriodSeconds:
                      format: int64
                      type: integer
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    volumeMounts:
                      items:
                        properties:
                          mountPath:
                            type: string
                          mountPropagation:
                            type: string
                          name:
                            type: string
                          readOnly:
                            type: boolean
                          subPath:
                            type: string
                        required:
                        - mountPath
                        - name
                        type: object
                      type: array
                  type: object
                executor:
                  properties:
                    affinity:
                      properties:
                        nodeAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  preference:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - preference
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              properties:
                                nodeSelectorTerms:
                                  items:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchFields:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                    type: object
                                  type: array
                              required:
                              - nodeSelectorTerms
                              type: object
                          type: object
                        podAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                      topologyKey:
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                          type: object
                        podAntiAffinity:
                          properties:
                            preferredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  podAffinityTerm:
                                    properties:
                                      labelSelector:
                                        properties:
                                          matchExpressions:
                                            items:
                                              properties:
                                                key:
                                                  type: string
                                                operator:
                                                  type: string
                                                values:
                                                  items:
                                                    type: string
                                                  type: array
                                              required:
                                              - key
                                              - operator
                                              type: object
                                            type: array
                                          matchLabels:
                                            additionalProperties:
                                              type: string
                                            type: object
                                        type: object
                                      namespaces:
                                        items:
                                          type: string
                                        type: array
                                      topologyKey:
                                        type: string
                                    required:
                                    - topologyKey
                                    type: object
                                  weight:
                                    format: int32
                                    type: integer
                                required:
                                - podAffinityTerm
                                - weight
                                type: object
                              type: array
                            requiredDuringSchedulingIgnoredDuringExecution:
                              items:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              type: array
                          type: object
                      type: object
                    annotations:
                      additionalProperties:
                        type: string
                      type: object
                    configMaps:
                      items:
                        properties:
                          name:
                            type: string
                          path:
                            type: string
                        required:
                        - name
                        - path
                        type: object
                      type: array
                    coreLimit:
                      type: string
                    coreRequest:
                      type: string
                    cores:
                      format: int32
                      minimum: 1
                      type: integer
                    deleteOnTermination:
                      type: boolean
                    dnsConfig:
                      properties:
                        nameservers:
                          items:
                            type: string
                          type: array
                        options:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            type: object
                          type: array
                        searches:
                          items:
                            type: string
                          type: array
                      type: object
                    env:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                          valueFrom:
                            properties:
                              configMapKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                              fieldRef:
                                properties:
                                  apiVersion:
                                    type: string
                                  fieldPath:
                                    type: string
                                required:
                                - fieldPath
                                type: object
                              resourceFieldRef:
                                properties:
                                  containerName:
                                    type: string
                                  divisor:
                                    type: string
                                  resource:
                                    type: string
                                required:
                                - resource
                                type: object
                              secretKeyRef:
                                properties:
                                  key:
                                    type: string
                                  name:
                                    type: string
                                  optional:
                                    type: boolean
                                required:
                                - key
                                type: object
                            type: object
                        required:
                        - name
                        type: object
                      type: array
                    envFrom:
                      items:
                        properties:
                          configMapRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                          prefix:
                            type: string
                          secretRef:
                            properties:
                              name:
                                type: string
                              optional:
                                type: boolean
                            type: object
                        type: object
                      type: array
                    envSecretKeyRefs:
                      additionalProperties:
                        properties:
                          key:
                            type: string
                          name:
                            type: string
                        required:
                        - key
                        - name
                        type: object
                      type: object
                    envVars:
                      additionalProperties:
                        type: string
                      type: object
                    gpu:
                      properties:
                        name:
                          type: string
                        quantity:
                          format: int64
                          type: integer
                      required:
                      - name
                      - quantity
                      type: object
                    hostNetwork:
                      type: boolean
                    image:
                      type: string
                    initContainers:
                      items:
                        properties:
                          args:
                            items:
                              type: string
                            type: array
                          command:
                            items:
                              type: string
                            type: array
                          env:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                                valueFrom:
                                  properties:
                                    configMapKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          type: string
                                        resource:
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                    secretKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                          envFrom:
                            items:
                              properties:
                                configMapRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                prefix:
                                  type: string
                                secretRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                              type: object
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          lifecycle:
                            properties:
                              postStart:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                            type: object
                          livenessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          name:
                            type: string
                          ports:
                            items:
                              properties:
                                containerPort:
                                  format: int32
                                  type: integer
                                hostIP:
                                  type: string
                                hostPort:
                                  format: int32
                                  type: integer
                                name:
                                  type: string
                                protocol:
                                  type: string
                              required:
                              - containerPort
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          resources:
                            properties:
                              limits:
                                additionalProperties:
                                  type: string
                                type: object
                              requests:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                          securityContext:
                            properties:
                              allowPrivilegeEscalation:
                                type: boolean
                              capabilities:
                                properties:
                                  add:
                                    items:
                                      type: string
                                    type: array
                                  drop:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              privileged:
                                type: boolean
                              procMount:
                                type: string
                              readOnlyRootFilesystem:
                                type: boolean
                              runAsGroup:
                                format: int64
                                type: integer
                              runAsNonRoot:
                                type: boolean
                              runAsUser:
                                format: int64
                                type: integer
                              seLinuxOptions:
                                properties:
                                  level:
                                    type: string
                                  role:
                                    type: string
                                  type:
                                    type: string
                                  user:
                                    type: string
                                type: object
                            type: object
                          stdin:
                            type: boolean
                          stdinOnce:
                            type: boolean
                          terminationMessagePath:
                            type: string
                          terminationMessagePolicy:
                            type: string
                          tty:
                            type: boolean
                          volumeDevices:
                            items:
                              properties:
                                devicePath:
                                  type: string
                                name:
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                          volumeMounts:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                mountPropagation:
                                  type: string
                                name:
                                  type: string
                                readOnly:
                                  type: boolean
                                subPath:
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          workingDir:
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    instances:
                      format: int32
                      minimum: 1
                      type: integer
                    javaOptions:
                      type: string
                    labels:
                      additionalProperties:
                        type: string
                      type: object
                    memory:
                      type: string
                    memoryOverhead:
                      type: string
                    nodeSelector:
                      additionalProperties:
                        type: string
                      type: object
                    schedulerName:
                      type: string
                    secrets:
                      items:
                        properties:
                          name:
                            type: string
                          path:
                            type: string
                          secretType:
                            type: string
                        required:
                        - name
                        - path
                        - secretType
                        type: object
                      type: array
                    securityContext:
                      properties:
                        fsGroup:
                          format: int64
                          type: integer
                        runAsGroup:
                          format: int64
                          type: integer
                        runAsNonRoot:
                          type: boolean
                        runAsUser:
                          format: int64
                          type: integer
                        seLinuxOptions:
                          properties:
                            level:
                              type: string
                            role:
                              type: string
                            type:
                              type: string
                            user:
                              type: string
                          type: object
                        supplementalGroups:
                          items:
                            format: int64
                            type: integer
                          type: array
                        sysctls:
                          items:
                            properties:
                              name:
                                type: string
                              value:
                                type: string
                            required:
                            - name
                            - value
                            type: object
                          type: array
                      type: object
                    sidecars:
                      items:
                        properties:
                          args:
                            items:
                              type: string
                            type: array
                          command:
                            items:
                              type: string
                            type: array
                          env:
                            items:
                              properties:
                                name:
                                  type: string
                                value:
                                  type: string
                                valueFrom:
                                  properties:
                                    configMapKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                    fieldRef:
                                      properties:
                                        apiVersion:
                                          type: string
                                        fieldPath:
                                          type: string
                                      required:
                                      - fieldPath
                                      type: object
                                    resourceFieldRef:
                                      properties:
                                        containerName:
                                          type: string
                                        divisor:
                                          type: string
                                        resource:
                                          type: string
                                      required:
                                      - resource
                                      type: object
                                    secretKeyRef:
                                      properties:
                                        key:
                                          type: string
                                        name:
                                          type: string
                                        optional:
                                          type: boolean
                                      required:
                                      - key
                                      type: object
                                  type: object
                              required:
                              - name
                              type: object
                            type: array
                          envFrom:
                            items:
                              properties:
                                configMapRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                prefix:
                                  type: string
                                secretRef:
                                  properties:
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                              type: object
                            type: array
                          image:
                            type: string
                          imagePullPolicy:
                            type: string
                          lifecycle:
                            properties:
                              postStart:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                              preStop:
                                properties:
                                  exec:
                                    properties:
                                      command:
                                        items:
                                          type: string
                                        type: array
                                    type: object
                                  httpGet:
                                    properties:
                                      host:
                                        type: string
                                      httpHeaders:
                                        items:
                                          properties:
                                            name:
                                              type: string
                                            value:
                                              type: string
                                          required:
                                          - name
                                          - value
                                          type: object
                                        type: array
                                      path:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                      scheme:
                                        type: string
                                    required:
                                    - port
                                    type: object
                                  tcpSocket:
                                    properties:
                                      host:
                                        type: string
                                      port:
                                        anyOf:
                                        - type: integer
                                        - type: string
                                        x-kubernetes-int-or-string: true
                                    required:
                                    - port
                                    type: object
                                type: object
                            type: object
                          livenessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          name:
                            type: string
                          ports:
                            items:
                              properties:
                                containerPort:
                                  format: int32
                                  type: integer
                                hostIP:
                                  type: string
                                hostPort:
                                  format: int32
                                  type: integer
                                name:
                                  type: string
                                protocol:
                                  type: string
                              required:
                              - containerPort
                              - protocol
                              type: object
                            type: array
                            x-kubernetes-list-map-keys:
                            - containerPort
                            - protocol
                            x-kubernetes-list-type: map
                          readinessProbe:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              failureThreshold:
                                format: int32
                                type: integer
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              initialDelaySeconds:
                                format: int32
                                type: integer
                              periodSeconds:
                                format: int32
                                type: integer
                              successThreshold:
                                format: int32
                                type: integer
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                              timeoutSeconds:
                                format: int32
                                type: integer
                            type: object
                          resources:
                            properties:
                              limits:
                                additionalProperties:
                                  type: string
                                type: object
                              requests:
                                additionalProperties:
                                  type: string
                                type: object
                            type: object
                          securityContext:
                            properties:
                              allowPrivilegeEscalation:
                                type: boolean
                              capabilities:
                                properties:
                                  add:
                                    items:
                                      type: string
                                    type: array
                                  drop:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              privileged:
                                type: boolean
                              procMount:
                                type: string
                              readOnlyRootFilesystem:
                                type: boolean
                              runAsGroup:
                                format: int64
                                type: integer
                              runAsNonRoot:
                                type: boolean
                              runAsUser:
                                format: int64
                                type: integer
                              seLinuxOptions:
                                properties:
                                  level:
                                    type: string
                                  role:
                                    type: string
                                  type:
                                    type: string
                                  user:
                                    type: string
                                type: object
                            type: object
                          stdin:
                            type: boolean
                          stdinOnce:
                            type: boolean
                          terminationMessagePath:
                            type: string
                          terminationMessagePolicy:
                            type: string
                          tty:
                            type: boolean
                          volumeDevices:
                            items:
                              properties:
                                devicePath:
                                  type: string
                                name:
                                  type: string
                              required:
                              - devicePath
                              - name
                              type: object
                            type: array
                          volumeMounts:
                            items:
                              properties:
                                mountPath:
                                  type: string
                                mountPropagation:
                                  type: string
                                name:
                                  type: string
                                readOnly:
                                  type: boolean
                                subPath:
                                  type: string
                              required:
                              - mountPath
                              - name
                              type: object
                            type: array
                          workingDir:
                            type: string
                        required:
                        - name
                        type: object
                      type: array
                    terminationGracePeriodSeconds:
                      format: int64
                      type: integer
                    tolerations:
                      items:
                        properties:
                          effect:
                            type: string
                          key:
                            type: string
                          operator:
                            type: string
                          tolerationSeconds:
                            format: int64
                            type: integer
                          value:
                            type: string
                        type: object
                      type: array
                    volumeMounts:
                      items:
                        properties:
                          mountPath:
                            type: string
                          mountPropagation:
                            type: string
                          name:
                            type: string
                          readOnly:
                            type: boolean
                          subPath:
                            type: string
                        required:
                        - mountPath
                        - name
                        type: object
                      type: array
                  type: object
                failureRetries:
                  format: int32
                  type: integer
                hadoopConf:
                  additionalProperties:
                    type: string
                  type: object
                hadoopConfigMap:
                  type: string
                image:
                  type: string
                imagePullPolicy:
                  type: string
                imagePullSecrets:
                  items:
                    type: string
                  type: array
                mainApplicationFile:
                  type: string
                mainClass:
                  type: string
                memoryOverheadFactor:
                  type: string
                mode:
                  enum:
                  - cluster
                  - client
                  type: string
                monitoring:
                  properties:
                    exposeDriverMetrics:
                      type: boolean
                    exposeExecutorMetrics:
                      type: boolean
                    metricsProperties:
                      type: string
                    metricsPropertiesFile:
                      type: string
                    prometheus:
                      properties:
                        configFile:
                          type: string
                        configuration:
                          type: string
                        jmxExporterJar:
                          type: string
                        port:
                          format: int32
                          maximum: 49151
                          minimum: 1024
                          type: integer
                      required:
                      - jmxExporterJar
                      type: object
                  required:
                  - exposeDriverMetrics
                  - exposeExecutorMetrics
                  type: object
                nodeSelector:
                  additionalProperties:
                    type: string
                  type: object
                pythonVersion:
                  enum:
                  - "2"
                  - "3"
                  type: string
                restartPolicy:
                  properties:
                    onFailureRetries:
                      format: int32
                      minimum: 0
                      type: integer
                    onFailureRetryInterval:
                      format: int64
                      minimum: 1
                      type: integer
                    onSubmissionFailureRetries:
                      format: int32
                      minimum: 0
                      type: integer
                    onSubmissionFailureRetryInterval:
                      format: int64
                      minimum: 1
                      type: integer
                    type:
                      enum:
                      - Never
                      - Always
                      - OnFailure
                      type: string
                  type: object
                retryInterval:
                  format: int64
                  type: integer
                serviceAccount:
                  type: string
                sparkConf:
                  additionalProperties:
                    type: string
                  type: object
                sparkConfigMap:
                  type: string
                sparkVersion:
                  type: string
                timeToLiveSeconds:
                  format: int64
                  type: integer
                type:
                  enum:
                  - Java
                  - Python
                  - Scala
                  - R
                  type: string
                volumes:
                  items:
                    properties:
                      awsElasticBlockStore:
                        properties:
                          fsType:
                            type: string
                          partition:
                            format: int32
                            type: integer
                          readOnly:
                            type: boolean
                          volumeID:
                            type: string
                        required:
                        - volumeID
                        type: object
                      azureDisk:
                        properties:
                          cachingMode:
                            type: string
                          diskName:
                            type: string
                          diskURI:
                            type: string
                          fsType:
                            type: string
                          kind:
                            type: string
                          readOnly:
                            type: boolean
                        required:
                        - diskName
                        - diskURI
                        type: object
                      azureFile:
                        properties:
                          readOnly:
                            type: boolean
                          secretName:
                            type: string
                          shareName:
                            type: string
                        required:
                        - secretName
                        - shareName
                        type: object
                      cephfs:
                        properties:
                          monitors:
                            items:
                              type: string
                            type: array
                          path:
                            type: string
                          readOnly:
                            type: boolean
                          secretFile:
                            type: string
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          user:
                            type: string
                        required:
                        - monitors
                        type: object
                      cinder:
                        properties:
                          fsType:
                            type: string
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          volumeID:
                            type: string
                        required:
                        - volumeID
                        type: object
                      configMap:
                        properties:
                          defaultMode:
                            format: int32
                            type: integer
                          items:
                            items:
                              properties:
                                key:
                                  type: string
                                mode:
                                  format: int32
                                  type: integer
                                path:
                                  type: string
                              required:
                              - key
                              - path
                              type: object
                            type: array
                          name:
                            type: string
                          optional:
                            type: boolean
                        type: object
                      downwardAPI:
                        properties:
                          defaultMode:
                            format: int32
                            type: integer
                          items:
                            items:
                              properties:
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                mode:
                                  format: int32
                                  type: integer
                                path:
                                  type: string
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      type: string
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                              required:
                              - path
                              type: object
                            type: array
                        type: object
                      emptyDir:
                        properties:
                          medium:
                            type: string
                          sizeLimit:
                            type: string
                        type: object
                      fc:
                        properties:
                          fsType:
                            type: string
                          lun:
                            format: int32
                            type: integer
                          readOnly:
                            type: boolean
                          targetWWNs:
                            items:
                              type: string
                            type: array
                          wwids:
                            items:
                              type: string
                            type: array
                        type: object
                      flexVolume:
                        properties:
                          driver:
                            type: string
                          fsType:
                            type: string
                          options:
                            additionalProperties:
                              type: string
                            type: object
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                        required:
                        - driver
                        type: object
                      flocker:
                        properties:
                          datasetName:
                            type: string
                          datasetUUID:
                            type: string
                        type: object
                      gcePersistentDisk:
                        properties:
                          fsType:
                            type: string
                          partition:
                            format: int32
                            type: integer
                          pdName:
                            type: string
                          readOnly:
                            type: boolean
                        required:
                        - pdName
                        type: object
                      gitRepo:
                        properties:
                          directory:
                            type: string
                          repository:
                            type: string
                          revision:
                            type: string
                        required:
                        - repository
                        type: object
                      glusterfs:
                        properties:
                          endpoints:
                            type: string
                          path:
                            type: string
                          readOnly:
                            type: boolean
                        required:
                        - endpoints
                        - path
                        type: object
                      hostPath:
                        properties:
                          path:
                            type: string
                          type:
                            type: string
                        required:
                        - path
                        type: object
                      iscsi:
                        properties:
                          chapAuthDiscovery:
                            type: boolean
                          chapAuthSession:
                            type: boolean
                          fsType:
                            type: string
                          initiatorName:
                            type: string
                          iqn:
                            type: string
                          iscsiInterface:
                            type: string
                          lun:
                            format: int32
                            type: integer
                          portals:
                            items:
                              type: string
                            type: array
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          targetPortal:
                            type: string
                        required:
                        - iqn
                        - lun
                        - targetPortal
                        type: object
                      name:
                        type: string
                      nfs:
                        properties:
                          path:
                            type: string
                          readOnly:
                            type: boolean
                          server:
                            type: string
                        required:
                        - path
                        - server
                        type: object
                      persistentVolumeClaim:
                        properties:
                          claimName:
                            type: string
                          readOnly:
                            type: boolean
                        required:
                        - claimName
                        type: object
                      photonPersistentDisk:
                        properties:
                          fsType:
                            type: string
                          pdID:
                            type: string
                        required:
                        - pdID
                        type: object
                      portworxVolume:
                        properties:
                          fsType:
                            type: string
                          readOnly:
                            type: boolean
                          volumeID:
                            type: string
                        required:
                        - volumeID
                        type: object
                      projected:
                        properties:
                          defaultMode:
                            format: int32
                            type: integer
                          sources:
                            items:
                              properties:
                                configMap:
                                  properties:
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                downwardAPI:
                                  properties:
                                    items:
                                      items:
                                        properties:
                                          fieldRef:
                                            properties:
                                              apiVersion:
                                                type: string
                                              fieldPath:
                                                type: string
                                            required:
                                            - fieldPath
                                            type: object
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                          resourceFieldRef:
                                            properties:
                                              containerName:
                                                type: string
                                              divisor:
                                                type: string
                                              resource:
                                                type: string
                                            required:
                                            - resource
                                            type: object
                                        required:
                                        - path
                                        type: object
                                      type: array
                                  type: object
                                secret:
                                  properties:
                                    items:
                                      items:
                                        properties:
                                          key:
                                            type: string
                                          mode:
                                            format: int32
                                            type: integer
                                          path:
                                            type: string
                                        required:
                                        - key
                                        - path
                                        type: object
                                      type: array
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  type: object
                                serviceAccountToken:
                                  properties:
                                    audience:
                                      type: string
                                    expirationSeconds:
                                      format: int64
                                      type: integer
                                    path:
                                      type: string
                                  required:
                                  - path
                                  type: object
                              type: object
                            type: array
                        required:
                        - sources
                        type: object
                      quobyte:
                        properties:
                          group:
                            type: string
                          readOnly:
                            type: boolean
                          registry:
                            type: string
                          user:
                            type: string
                          volume:
                            type: string
                        required:
                        - registry
                        - volume
                        type: object
                      rbd:
                        properties:
                          fsType:
                            type: string
                          image:
                            type: string
                          keyring:
                            type: string
                          monitors:
                            items:
                              type: string
                            type: array
                          pool:
                            type: string
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          user:
                            type: string
                        required:
                        - image
                        - monitors
                        type: object
                      scaleIO:
                        properties:
                          fsType:
                            type: string
                          gateway:
                            type: string
                          protectionDomain:
                            type: string
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          sslEnabled:
                            type: boolean
                          storageMode:
                            type: string
                          storagePool:
                            type: string
                          system:
                            type: string
                          volumeName:
                            type: string
                        required:
                        - gateway
                        - secretRef
                        - system
                        type: object
                      secret:
                        properties:
                          defaultMode:
                            format: int32
                            type: integer
                          items:
                            items:
                              properties:
                                key:
                                  type: string
                                mode:
                                  format: int32
                                  type: integer
                                path:
                                  type: string
                              required:
                              - key
                              - path
                              type: object
                            type: array
                          optional:
                            type: boolean
                          secretName:
                            type: string
                        type: object
                      storageos:
                        properties:
                          fsType:
                            type: string
                          readOnly:
                            type: boolean
                          secretRef:
                            properties:
                              name:
                                type: string
                            type: object
                          volumeName:
                            type: string
                          volumeNamespace:
                            type: string
                        type: object
                      vsphereVolume:
                        properties:
                          fsType:
                            type: string
                          storagePolicyID:
                            type: string
                          storagePolicyName:
                            type: string
                          volumePath:
                            type: string
                        required:
                        - volumePath
                        type: object
                    required:
                    - name
                    type: object
                  type: array
              required:
              - driver
              - executor
              - sparkVersion
              - type
              type: object
          required:
          - schedule
          - template
          type: object
        status:
          properties:
            lastRun:
              format: date-time
              nullable: true
              type: string
            lastRunName:
              type: string
            nextRun:
              format: date-time
              nullable: true
              type: string
            pastFailedRunNames:
              items:
                type: string
              type: array
            pastSuccessfulRunNames:
              items:
                type: string
              type: array
            reason:
              type: string
            scheduleState:
              type: string
          type: object
      required:
      - metadata
      - spec
      type: object
  version: v1beta2
  versions:
  - name: v1beta2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []

@stephen37
Copy link
Contributor Author

Part 2:

---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: (unknown)
  creationTimestamp: null
  name: sparkapplications.sparkoperator.k8s.io
spec:
  group: sparkoperator.k8s.io
  names:
    kind: SparkApplication
    listKind: SparkApplicationList
    plural: sparkapplications
    shortNames:
    - sparkapp
    singular: sparkapplication
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      properties:
        apiVersion:
          type: string
        kind:
          type: string
        metadata:
          type: object
        spec:
          properties:
            arguments:
              items:
                type: string
              type: array
            batchScheduler:
              type: string
            batchSchedulerOptions:
              properties:
                priorityClassName:
                  type: string
                queue:
                  type: string
              type: object
            deps:
              properties:
                files:
                  items:
                    type: string
                  type: array
                jars:
                  items:
                    type: string
                  type: array
                pyFiles:
                  items:
                    type: string
                  type: array
              type: object
            driver:
              properties:
                affinity:
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - preference
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                type: object
                              type: array
                          required:
                          - nodeSelectorTerms
                          type: object
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              namespaces:
                                items:
                                  type: string
                                type: array
                              topologyKey:
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              namespaces:
                                items:
                                  type: string
                                type: array
                              topologyKey:
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                      type: object
                  type: object
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                configMaps:
                  items:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                    required:
                    - name
                    - path
                    type: object
                  type: array
                coreLimit:
                  type: string
                coreRequest:
                  type: string
                cores:
                  format: int32
                  minimum: 1
                  type: integer
                dnsConfig:
                  properties:
                    nameservers:
                      items:
                        type: string
                      type: array
                    options:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                        type: object
                      type: array
                    searches:
                      items:
                        type: string
                      type: array
                  type: object
                env:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                type: string
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                envFrom:
                  items:
                    properties:
                      configMapRef:
                        properties:
                          name:
                            type: string
                          optional:
                            type: boolean
                        type: object
                      prefix:
                        type: string
                      secretRef:
                        properties:
                          name:
                            type: string
                          optional:
                            type: boolean
                        type: object
                    type: object
                  type: array
                envSecretKeyRefs:
                  additionalProperties:
                    properties:
                      key:
                        type: string
                      name:
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  type: object
                envVars:
                  additionalProperties:
                    type: string
                  type: object
                gpu:
                  properties:
                    name:
                      type: string
                    quantity:
                      format: int64
                      type: integer
                  required:
                  - name
                  - quantity
                  type: object
                hostNetwork:
                  type: boolean
                image:
                  type: string
                initContainers:
                  items:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                      command:
                        items:
                          type: string
                        type: array
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      type: string
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                          type: object
                        type: array
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              type: string
                          required:
                          - containerPort
                          - protocol
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resources:
                        properties:
                          limits:
                            additionalProperties:
                              type: string
                            type: object
                          requests:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                              drop:
                                items:
                                  type: string
                                type: array
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      workingDir:
                        type: string
                    required:
                    - name
                    type: object
                  type: array
                javaOptions:
                  type: string
                labels:
                  additionalProperties:
                    type: string
                  type: object
                lifecycle:
                  properties:
                    postStart:
                      properties:
                        exec:
                          properties:
                            command:
                              items:
                                type: string
                              type: array
                          type: object
                        httpGet:
                          properties:
                            host:
                              type: string
                            httpHeaders:
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            path:
                              type: string
                            port:
                              anyOf:
                              - type: integer
                              - type: string
                              x-kubernetes-int-or-string: true
                            scheme:
                              type: string
                          required:
                          - port
                          type: object
                        tcpSocket:
                          properties:
                            host:
                              type: string
                            port:
                              anyOf:
                              - type: integer
                              - type: string
                              x-kubernetes-int-or-string: true
                          required:
                          - port
                          type: object
                      type: object
                    preStop:
                      properties:
                        exec:
                          properties:
                            command:
                              items:
                                type: string
                              type: array
                          type: object
                        httpGet:
                          properties:
                            host:
                              type: string
                            httpHeaders:
                              items:
                                properties:
                                  name:
                                    type: string
                                  value:
                                    type: string
                                required:
                                - name
                                - value
                                type: object
                              type: array
                            path:
                              type: string
                            port:
                              anyOf:
                              - type: integer
                              - type: string
                              x-kubernetes-int-or-string: true
                            scheme:
                              type: string
                          required:
                          - port
                          type: object
                        tcpSocket:
                          properties:
                            host:
                              type: string
                            port:
                              anyOf:
                              - type: integer
                              - type: string
                              x-kubernetes-int-or-string: true
                          required:
                          - port
                          type: object
                      type: object
                  type: object
                memory:
                  type: string
                memoryOverhead:
                  type: string
                nodeSelector:
                  additionalProperties:
                    type: string
                  type: object
                podName:
                  pattern: '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*'
                  type: string
                schedulerName:
                  type: string
                secrets:
                  items:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                      secretType:
                        type: string
                    required:
                    - name
                    - path
                    - secretType
                    type: object
                  type: array
                securityContext:
                  properties:
                    fsGroup:
                      format: int64
                      type: integer
                    runAsGroup:
                      format: int64
                      type: integer
                    runAsNonRoot:
                      type: boolean
                    runAsUser:
                      format: int64
                      type: integer
                    seLinuxOptions:
                      properties:
                        level:
                          type: string
                        role:
                          type: string
                        type:
                          type: string
                        user:
                          type: string
                      type: object
                    supplementalGroups:
                      items:
                        format: int64
                        type: integer
                      type: array
                    sysctls:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                        required:
                        - name
                        - value
                        type: object
                      type: array
                  type: object
                serviceAccount:
                  type: string
                sidecars:
                  items:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                      command:
                        items:
                          type: string
                        type: array
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      type: string
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                          type: object
                        type: array
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              type: string
                          required:
                          - containerPort
                          - protocol
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resources:
                        properties:
                          limits:
                            additionalProperties:
                              type: string
                            type: object
                          requests:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                              drop:
                                items:
                                  type: string
                                type: array
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      workingDir:
                        type: string
                    required:
                    - name
                    type: object
                  type: array
                terminationGracePeriodSeconds:
                  format: int64
                  type: integer
                tolerations:
                  items:
                    properties:
                      effect:
                        type: string
                      key:
                        type: string
                      operator:
                        type: string
                      tolerationSeconds:
                        format: int64
                        type: integer
                      value:
                        type: string
                    type: object
                  type: array
                volumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
              type: object
            executor:
              properties:
                affinity:
                  properties:
                    nodeAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              preference:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - preference
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          properties:
                            nodeSelectorTerms:
                              items:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchFields:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                type: object
                              type: array
                          required:
                          - nodeSelectorTerms
                          type: object
                      type: object
                    podAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              namespaces:
                                items:
                                  type: string
                                type: array
                              topologyKey:
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                      type: object
                    podAntiAffinity:
                      properties:
                        preferredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              podAffinityTerm:
                                properties:
                                  labelSelector:
                                    properties:
                                      matchExpressions:
                                        items:
                                          properties:
                                            key:
                                              type: string
                                            operator:
                                              type: string
                                            values:
                                              items:
                                                type: string
                                              type: array
                                          required:
                                          - key
                                          - operator
                                          type: object
                                        type: array
                                      matchLabels:
                                        additionalProperties:
                                          type: string
                                        type: object
                                    type: object
                                  namespaces:
                                    items:
                                      type: string
                                    type: array
                                  topologyKey:
                                    type: string
                                required:
                                - topologyKey
                                type: object
                              weight:
                                format: int32
                                type: integer
                            required:
                            - podAffinityTerm
                            - weight
                            type: object
                          type: array
                        requiredDuringSchedulingIgnoredDuringExecution:
                          items:
                            properties:
                              labelSelector:
                                properties:
                                  matchExpressions:
                                    items:
                                      properties:
                                        key:
                                          type: string
                                        operator:
                                          type: string
                                        values:
                                          items:
                                            type: string
                                          type: array
                                      required:
                                      - key
                                      - operator
                                      type: object
                                    type: array
                                  matchLabels:
                                    additionalProperties:
                                      type: string
                                    type: object
                                type: object
                              namespaces:
                                items:
                                  type: string
                                type: array
                              topologyKey:
                                type: string
                            required:
                            - topologyKey
                            type: object
                          type: array
                      type: object
                  type: object
                annotations:
                  additionalProperties:
                    type: string
                  type: object
                configMaps:
                  items:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                    required:
                    - name
                    - path
                    type: object
                  type: array
                coreLimit:
                  type: string
                coreRequest:
                  type: string
                cores:
                  format: int32
                  minimum: 1
                  type: integer
                deleteOnTermination:
                  type: boolean
                dnsConfig:
                  properties:
                    nameservers:
                      items:
                        type: string
                      type: array
                    options:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                        type: object
                      type: array
                    searches:
                      items:
                        type: string
                      type: array
                  type: object
                env:
                  items:
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                      valueFrom:
                        properties:
                          configMapKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                          fieldRef:
                            properties:
                              apiVersion:
                                type: string
                              fieldPath:
                                type: string
                            required:
                            - fieldPath
                            type: object
                          resourceFieldRef:
                            properties:
                              containerName:
                                type: string
                              divisor:
                                type: string
                              resource:
                                type: string
                            required:
                            - resource
                            type: object
                          secretKeyRef:
                            properties:
                              key:
                                type: string
                              name:
                                type: string
                              optional:
                                type: boolean
                            required:
                            - key
                            type: object
                        type: object
                    required:
                    - name
                    type: object
                  type: array
                envFrom:
                  items:
                    properties:
                      configMapRef:
                        properties:
                          name:
                            type: string
                          optional:
                            type: boolean
                        type: object
                      prefix:
                        type: string
                      secretRef:
                        properties:
                          name:
                            type: string
                          optional:
                            type: boolean
                        type: object
                    type: object
                  type: array
                envSecretKeyRefs:
                  additionalProperties:
                    properties:
                      key:
                        type: string
                      name:
                        type: string
                    required:
                    - key
                    - name
                    type: object
                  type: object
                envVars:
                  additionalProperties:
                    type: string
                  type: object
                gpu:
                  properties:
                    name:
                      type: string
                    quantity:
                      format: int64
                      type: integer
                  required:
                  - name
                  - quantity
                  type: object
                hostNetwork:
                  type: boolean
                image:
                  type: string
                initContainers:
                  items:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                      command:
                        items:
                          type: string
                        type: array
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      type: string
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                          type: object
                        type: array
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              type: string
                          required:
                          - containerPort
                          - protocol
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resources:
                        properties:
                          limits:
                            additionalProperties:
                              type: string
                            type: object
                          requests:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                              drop:
                                items:
                                  type: string
                                type: array
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      workingDir:
                        type: string
                    required:
                    - name
                    type: object
                  type: array
                instances:
                  format: int32
                  minimum: 1
                  type: integer
                javaOptions:
                  type: string
                labels:
                  additionalProperties:
                    type: string
                  type: object
                memory:
                  type: string
                memoryOverhead:
                  type: string
                nodeSelector:
                  additionalProperties:
                    type: string
                  type: object
                schedulerName:
                  type: string
                secrets:
                  items:
                    properties:
                      name:
                        type: string
                      path:
                        type: string
                      secretType:
                        type: string
                    required:
                    - name
                    - path
                    - secretType
                    type: object
                  type: array
                securityContext:
                  properties:
                    fsGroup:
                      format: int64
                      type: integer
                    runAsGroup:
                      format: int64
                      type: integer
                    runAsNonRoot:
                      type: boolean
                    runAsUser:
                      format: int64
                      type: integer
                    seLinuxOptions:
                      properties:
                        level:
                          type: string
                        role:
                          type: string
                        type:
                          type: string
                        user:
                          type: string
                      type: object
                    supplementalGroups:
                      items:
                        format: int64
                        type: integer
                      type: array
                    sysctls:
                      items:
                        properties:
                          name:
                            type: string
                          value:
                            type: string
                        required:
                        - name
                        - value
                        type: object
                      type: array
                  type: object
                sidecars:
                  items:
                    properties:
                      args:
                        items:
                          type: string
                        type: array
                      command:
                        items:
                          type: string
                        type: array
                      env:
                        items:
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                            valueFrom:
                              properties:
                                configMapKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                                fieldRef:
                                  properties:
                                    apiVersion:
                                      type: string
                                    fieldPath:
                                      type: string
                                  required:
                                  - fieldPath
                                  type: object
                                resourceFieldRef:
                                  properties:
                                    containerName:
                                      type: string
                                    divisor:
                                      type: string
                                    resource:
                                      type: string
                                  required:
                                  - resource
                                  type: object
                                secretKeyRef:
                                  properties:
                                    key:
                                      type: string
                                    name:
                                      type: string
                                    optional:
                                      type: boolean
                                  required:
                                  - key
                                  type: object
                              type: object
                          required:
                          - name
                          type: object
                        type: array
                      envFrom:
                        items:
                          properties:
                            configMapRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            prefix:
                              type: string
                            secretRef:
                              properties:
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                          type: object
                        type: array
                      image:
                        type: string
                      imagePullPolicy:
                        type: string
                      lifecycle:
                        properties:
                          postStart:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                          preStop:
                            properties:
                              exec:
                                properties:
                                  command:
                                    items:
                                      type: string
                                    type: array
                                type: object
                              httpGet:
                                properties:
                                  host:
                                    type: string
                                  httpHeaders:
                                    items:
                                      properties:
                                        name:
                                          type: string
                                        value:
                                          type: string
                                      required:
                                      - name
                                      - value
                                      type: object
                                    type: array
                                  path:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                  scheme:
                                    type: string
                                required:
                                - port
                                type: object
                              tcpSocket:
                                properties:
                                  host:
                                    type: string
                                  port:
                                    anyOf:
                                    - type: integer
                                    - type: string
                                    x-kubernetes-int-or-string: true
                                required:
                                - port
                                type: object
                            type: object
                        type: object
                      livenessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      name:
                        type: string
                      ports:
                        items:
                          properties:
                            containerPort:
                              format: int32
                              type: integer
                            hostIP:
                              type: string
                            hostPort:
                              format: int32
                              type: integer
                            name:
                              type: string
                            protocol:
                              type: string
                          required:
                          - containerPort
                          - protocol
                          type: object
                        type: array
                        x-kubernetes-list-map-keys:
                        - containerPort
                        - protocol
                        x-kubernetes-list-type: map
                      readinessProbe:
                        properties:
                          exec:
                            properties:
                              command:
                                items:
                                  type: string
                                type: array
                            type: object
                          failureThreshold:
                            format: int32
                            type: integer
                          httpGet:
                            properties:
                              host:
                                type: string
                              httpHeaders:
                                items:
                                  properties:
                                    name:
                                      type: string
                                    value:
                                      type: string
                                  required:
                                  - name
                                  - value
                                  type: object
                                type: array
                              path:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                              scheme:
                                type: string
                            required:
                            - port
                            type: object
                          initialDelaySeconds:
                            format: int32
                            type: integer
                          periodSeconds:
                            format: int32
                            type: integer
                          successThreshold:
                            format: int32
                            type: integer
                          tcpSocket:
                            properties:
                              host:
                                type: string
                              port:
                                anyOf:
                                - type: integer
                                - type: string
                                x-kubernetes-int-or-string: true
                            required:
                            - port
                            type: object
                          timeoutSeconds:
                            format: int32
                            type: integer
                        type: object
                      resources:
                        properties:
                          limits:
                            additionalProperties:
                              type: string
                            type: object
                          requests:
                            additionalProperties:
                              type: string
                            type: object
                        type: object
                      securityContext:
                        properties:
                          allowPrivilegeEscalation:
                            type: boolean
                          capabilities:
                            properties:
                              add:
                                items:
                                  type: string
                                type: array
                              drop:
                                items:
                                  type: string
                                type: array
                            type: object
                          privileged:
                            type: boolean
                          procMount:
                            type: string
                          readOnlyRootFilesystem:
                            type: boolean
                          runAsGroup:
                            format: int64
                            type: integer
                          runAsNonRoot:
                            type: boolean
                          runAsUser:
                            format: int64
                            type: integer
                          seLinuxOptions:
                            properties:
                              level:
                                type: string
                              role:
                                type: string
                              type:
                                type: string
                              user:
                                type: string
                            type: object
                        type: object
                      stdin:
                        type: boolean
                      stdinOnce:
                        type: boolean
                      terminationMessagePath:
                        type: string
                      terminationMessagePolicy:
                        type: string
                      tty:
                        type: boolean
                      volumeDevices:
                        items:
                          properties:
                            devicePath:
                              type: string
                            name:
                              type: string
                          required:
                          - devicePath
                          - name
                          type: object
                        type: array
                      volumeMounts:
                        items:
                          properties:
                            mountPath:
                              type: string
                            mountPropagation:
                              type: string
                            name:
                              type: string
                            readOnly:
                              type: boolean
                            subPath:
                              type: string
                          required:
                          - mountPath
                          - name
                          type: object
                        type: array
                      workingDir:
                        type: string
                    required:
                    - name
                    type: object
                  type: array
                terminationGracePeriodSeconds:
                  format: int64
                  type: integer
                tolerations:
                  items:
                    properties:
                      effect:
                        type: string
                      key:
                        type: string
                      operator:
                        type: string
                      tolerationSeconds:
                        format: int64
                        type: integer
                      value:
                        type: string
                    type: object
                  type: array
                volumeMounts:
                  items:
                    properties:
                      mountPath:
                        type: string
                      mountPropagation:
                        type: string
                      name:
                        type: string
                      readOnly:
                        type: boolean
                      subPath:
                        type: string
                    required:
                    - mountPath
                    - name
                    type: object
                  type: array
              type: object
            failureRetries:
              format: int32
              type: integer
            hadoopConf:
              additionalProperties:
                type: string
              type: object
            hadoopConfigMap:
              type: string
            image:
              type: string
            imagePullPolicy:
              type: string
            imagePullSecrets:
              items:
                type: string
              type: array
            mainApplicationFile:
              type: string
            mainClass:
              type: string
            memoryOverheadFactor:
              type: string
            mode:
              enum:
              - cluster
              - client
              type: string
            monitoring:
              properties:
                exposeDriverMetrics:
                  type: boolean
                exposeExecutorMetrics:
                  type: boolean
                metricsProperties:
                  type: string
                metricsPropertiesFile:
                  type: string
                prometheus:
                  properties:
                    configFile:
                      type: string
                    configuration:
                      type: string
                    jmxExporterJar:
                      type: string
                    port:
                      format: int32
                      maximum: 49151
                      minimum: 1024
                      type: integer
                  required:
                  - jmxExporterJar
                  type: object
              required:
              - exposeDriverMetrics
              - exposeExecutorMetrics
              type: object
            nodeSelector:
              additionalProperties:
                type: string
              type: object
            pythonVersion:
              enum:
              - "2"
              - "3"
              type: string
            restartPolicy:
              properties:
                onFailureRetries:
                  format: int32
                  minimum: 0
                  type: integer
                onFailureRetryInterval:
                  format: int64
                  minimum: 1
                  type: integer
                onSubmissionFailureRetries:
                  format: int32
                  minimum: 0
                  type: integer
                onSubmissionFailureRetryInterval:
                  format: int64
                  minimum: 1
                  type: integer
                type:
                  enum:
                  - Never
                  - Always
                  - OnFailure
                  type: string
              type: object
            retryInterval:
              format: int64
              type: integer
            serviceAccount:
              type: string
            sparkConf:
              additionalProperties:
                type: string
              type: object
            sparkConfigMap:
              type: string
            sparkVersion:
              type: string
            timeToLiveSeconds:
              format: int64
              type: integer
            type:
              enum:
              - Java
              - Python
              - Scala
              - R
              type: string
            volumes:
              items:
                properties:
                  awsElasticBlockStore:
                    properties:
                      fsType:
                        type: string
                      partition:
                        format: int32
                        type: integer
                      readOnly:
                        type: boolean
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  azureDisk:
                    properties:
                      cachingMode:
                        type: string
                      diskName:
                        type: string
                      diskURI:
                        type: string
                      fsType:
                        type: string
                      kind:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - diskName
                    - diskURI
                    type: object
                  azureFile:
                    properties:
                      readOnly:
                        type: boolean
                      secretName:
                        type: string
                      shareName:
                        type: string
                    required:
                    - secretName
                    - shareName
                    type: object
                  cephfs:
                    properties:
                      monitors:
                        items:
                          type: string
                        type: array
                      path:
                        type: string
                      readOnly:
                        type: boolean
                      secretFile:
                        type: string
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      user:
                        type: string
                    required:
                    - monitors
                    type: object
                  cinder:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  configMap:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            key:
                              type: string
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                          required:
                          - key
                          - path
                          type: object
                        type: array
                      name:
                        type: string
                      optional:
                        type: boolean
                    type: object
                  downwardAPI:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            fieldRef:
                              properties:
                                apiVersion:
                                  type: string
                                fieldPath:
                                  type: string
                              required:
                              - fieldPath
                              type: object
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                            resourceFieldRef:
                              properties:
                                containerName:
                                  type: string
                                divisor:
                                  type: string
                                resource:
                                  type: string
                              required:
                              - resource
                              type: object
                          required:
                          - path
                          type: object
                        type: array
                    type: object
                  emptyDir:
                    properties:
                      medium:
                        type: string
                      sizeLimit:
                        type: string
                    type: object
                  fc:
                    properties:
                      fsType:
                        type: string
                      lun:
                        format: int32
                        type: integer
                      readOnly:
                        type: boolean
                      targetWWNs:
                        items:
                          type: string
                        type: array
                      wwids:
                        items:
                          type: string
                        type: array
                    type: object
                  flexVolume:
                    properties:
                      driver:
                        type: string
                      fsType:
                        type: string
                      options:
                        additionalProperties:
                          type: string
                        type: object
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                    required:
                    - driver
                    type: object
                  flocker:
                    properties:
                      datasetName:
                        type: string
                      datasetUUID:
                        type: string
                    type: object
                  gcePersistentDisk:
                    properties:
                      fsType:
                        type: string
                      partition:
                        format: int32
                        type: integer
                      pdName:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - pdName
                    type: object
                  gitRepo:
                    properties:
                      directory:
                        type: string
                      repository:
                        type: string
                      revision:
                        type: string
                    required:
                    - repository
                    type: object
                  glusterfs:
                    properties:
                      endpoints:
                        type: string
                      path:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - endpoints
                    - path
                    type: object
                  hostPath:
                    properties:
                      path:
                        type: string
                      type:
                        type: string
                    required:
                    - path
                    type: object
                  iscsi:
                    properties:
                      chapAuthDiscovery:
                        type: boolean
                      chapAuthSession:
                        type: boolean
                      fsType:
                        type: string
                      initiatorName:
                        type: string
                      iqn:
                        type: string
                      iscsiInterface:
                        type: string
                      lun:
                        format: int32
                        type: integer
                      portals:
                        items:
                          type: string
                        type: array
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      targetPortal:
                        type: string
                    required:
                    - iqn
                    - lun
                    - targetPortal
                    type: object
                  name:
                    type: string
                  nfs:
                    properties:
                      path:
                        type: string
                      readOnly:
                        type: boolean
                      server:
                        type: string
                    required:
                    - path
                    - server
                    type: object
                  persistentVolumeClaim:
                    properties:
                      claimName:
                        type: string
                      readOnly:
                        type: boolean
                    required:
                    - claimName
                    type: object
                  photonPersistentDisk:
                    properties:
                      fsType:
                        type: string
                      pdID:
                        type: string
                    required:
                    - pdID
                    type: object
                  portworxVolume:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      volumeID:
                        type: string
                    required:
                    - volumeID
                    type: object
                  projected:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      sources:
                        items:
                          properties:
                            configMap:
                              properties:
                                items:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            downwardAPI:
                              properties:
                                items:
                                  items:
                                    properties:
                                      fieldRef:
                                        properties:
                                          apiVersion:
                                            type: string
                                          fieldPath:
                                            type: string
                                        required:
                                        - fieldPath
                                        type: object
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                      resourceFieldRef:
                                        properties:
                                          containerName:
                                            type: string
                                          divisor:
                                            type: string
                                          resource:
                                            type: string
                                        required:
                                        - resource
                                        type: object
                                    required:
                                    - path
                                    type: object
                                  type: array
                              type: object
                            secret:
                              properties:
                                items:
                                  items:
                                    properties:
                                      key:
                                        type: string
                                      mode:
                                        format: int32
                                        type: integer
                                      path:
                                        type: string
                                    required:
                                    - key
                                    - path
                                    type: object
                                  type: array
                                name:
                                  type: string
                                optional:
                                  type: boolean
                              type: object
                            serviceAccountToken:
                              properties:
                                audience:
                                  type: string
                                expirationSeconds:
                                  format: int64
                                  type: integer
                                path:
                                  type: string
                              required:
                              - path
                              type: object
                          type: object
                        type: array
                    required:
                    - sources
                    type: object
                  quobyte:
                    properties:
                      group:
                        type: string
                      readOnly:
                        type: boolean
                      registry:
                        type: string
                      user:
                        type: string
                      volume:
                        type: string
                    required:
                    - registry
                    - volume
                    type: object
                  rbd:
                    properties:
                      fsType:
                        type: string
                      image:
                        type: string
                      keyring:
                        type: string
                      monitors:
                        items:
                          type: string
                        type: array
                      pool:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      user:
                        type: string
                    required:
                    - image
                    - monitors
                    type: object
                  scaleIO:
                    properties:
                      fsType:
                        type: string
                      gateway:
                        type: string
                      protectionDomain:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      sslEnabled:
                        type: boolean
                      storageMode:
                        type: string
                      storagePool:
                        type: string
                      system:
                        type: string
                      volumeName:
                        type: string
                    required:
                    - gateway
                    - secretRef
                    - system
                    type: object
                  secret:
                    properties:
                      defaultMode:
                        format: int32
                        type: integer
                      items:
                        items:
                          properties:
                            key:
                              type: string
                            mode:
                              format: int32
                              type: integer
                            path:
                              type: string
                          required:
                          - key
                          - path
                          type: object
                        type: array
                      optional:
                        type: boolean
                      secretName:
                        type: string
                    type: object
                  storageos:
                    properties:
                      fsType:
                        type: string
                      readOnly:
                        type: boolean
                      secretRef:
                        properties:
                          name:
                            type: string
                        type: object
                      volumeName:
                        type: string
                      volumeNamespace:
                        type: string
                    type: object
                  vsphereVolume:
                    properties:
                      fsType:
                        type: string
                      storagePolicyID:
                        type: string
                      storagePolicyName:
                        type: string
                      volumePath:
                        type: string
                    required:
                    - volumePath
                    type: object
                required:
                - name
                type: object
              type: array
          required:
          - driver
          - executor
          - sparkVersion
          - type
          type: object
        status:
          properties:
            applicationState:
              properties:
                errorMessage:
                  type: string
                state:
                  type: string
              required:
              - state
              type: object
            driverInfo:
              properties:
                podName:
                  type: string
                webUIAddress:
                  type: string
                webUIIngressAddress:
                  type: string
                webUIIngressName:
                  type: string
                webUIPort:
                  format: int32
                  type: integer
                webUIServiceName:
                  type: string
              type: object
            executionAttempts:
              format: int32
              type: integer
            executorState:
              additionalProperties:
                type: string
              type: object
            sparkApplicationId:
              type: string
            submissionAttempts:
              format: int32
              type: integer
            submissionID:
              type: string
            submissionTime:
              format: date-time
              nullable: true
              type: string
            terminationTime:
              format: date-time
              nullable: true
              type: string
          required:
          - driverInfo
          type: object
      required:
      - metadata
      - spec
      type: object
  version: v1beta2
  versions:
  - name: v1beta2
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  annotations:
    controller-gen.kubebuilder.io/version: v0.3.0
  creationTimestamp: null
  name: trainingjobs.sagemaker.aws.amazon.com
spec:
  additionalPrinterColumns:
  - JSONPath: .status.trainingJobStatus
    name: Status
    type: string
  - JSONPath: .status.secondaryStatus
    name: Secondary-Status
    type: string
  - JSONPath: .metadata.creationTimestamp
    format: date
    name: Creation-Time
    type: string
  - JSONPath: .status.sageMakerTrainingJobName
    name: Sagemaker-Job-Name
    type: string
  group: sagemaker.aws.amazon.com
  names:
    kind: TrainingJob
    listKind: TrainingJobList
    plural: trainingjobs
    singular: trainingjob
  scope: Namespaced
  subresources:
    status: {}
  validation:
    openAPIV3Schema:
      description: TrainingJob is the Schema for the trainingjobs 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: TrainingJobSpec defines the desired state of TrainingJob
          properties:
            algorithmSpecification:
              properties:
                algorithmName:
                  minLength: 1
                  type: string
                metricDefinitions:
                  items:
                    properties:
                      name:
                        minLength: 1
                        type: string
                      regex:
                        minLength: 1
                        type: string
                    required:
                    - name
                    - regex
                    type: object
                  type: array
                trainingImage:
                  minLength: 1
                  type: string
                trainingInputMode:
                  enum:
                  - File
                  - Pipe
                  type: string
              required:
              - trainingInputMode
              type: object
            checkpointConfig:
              properties:
                localPath:
                  type: string
                s3Uri:
                  pattern: ^(https|s3)://([^/]+)/?(.*)$
                  type: string
              required:
              - s3Uri
              type: object
            debugHookConfig:
              description: DebugHookConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugHookConfig.html
              properties:
                collectionConfigurations:
                  items:
                    description: CollectionConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_CollectionConfiguration.html
                    properties:
                      collectionName:
                        type: string
                      collectionParameters:
                        items:
                          description: Used in describing maps in Kubernetes.
                          properties:
                            name:
                              type: string
                            value:
                              type: string
                          type: object
                        type: array
                    type: object
                  type: array
                localPath:
                  type: string
                ruleParameters:
                  items:
                    description: Used in describing maps in Kubernetes.
                    properties:
                      name:
                        type: string
                      value:
                        type: string
                    type: object
                  type: array
                s3OutputPath:
                  pattern: ^(https|s3)://([^/]+)/?(.*)$
                  type: string
              required:
              - s3OutputPath
              type: object
            debugRuleConfigurations:
              items:
                description: DebugRuleConfiguration https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleConfiguration.html
                properties:
                  instanceType:
                    type: string
                  localPath:
                    type: string
                  ruleConfigurationName:
                    type: string
                  ruleEvaluatorImage:
                    type: string
                  ruleParameters:
                    items:
                      description: Used in describing maps in Kubernetes.
                      properties:
                        name:
                          type: string
                        value:
                          type: string
                      type: object
                    type: array
                  s3OutputPath:
                    pattern: ^(https|s3)://([^/]+)/?(.*)$
                    type: string
                  volumeSizeInGB:
                    format: int64
                    minimum: 1
                    type: integer
                required:
                - ruleConfigurationName
                - ruleEvaluatorImage
                type: object
              type: array
            enableInterContainerTrafficEncryption:
              type: boolean
            enableManagedSpotTraining:
              type: boolean
            enableNetworkIsolation:
              type: boolean
            hyperParameters:
              items:
                description: Used in describing maps in Kubernetes.
                properties:
                  name:
                    type: string
                  value:
                    type: string
                type: object
              type: array
            inputDataConfig:
              items:
                properties:
                  channelName:
                    minLength: 1
                    pattern: '[A-Za-z0-9\.\-_]+'
                    type: string
                  compressionType:
                    enum:
                    - None
                    - Gzip
                    type: string
                  contentType:
                    type: string
                  dataSource:
                    properties:
                      fileSystemDataSource:
                        properties:
                          directoryPath:
                            type: string
                          fileSystemAccessMode:
                            type: string
                          fileSystemId:
                            type: string
                          fileSystemType:
                            type: string
                        required:
                        - directoryPath
                        - fileSystemAccessMode
                        - fileSystemId
                        - fileSystemType
                        type: object
                      s3DataSource:
                        properties:
                          attributeNames:
                            items:
                              type: string
                            type: array
                          s3DataDistributionType:
                            enum:
                            - FullyReplicated
                            - ShardedByS3Key
                            type: string
                          s3DataType:
                            enum:
                            - S3Prefix
                            - ManifestFile
                            - AugmentedManifestFile
                            type: string
                          s3Uri:
                            pattern: ^(https|s3)://([^/]+)/?(.*)$
                            type: string
                        required:
                        - s3DataType
                        - s3Uri
                        type: object
                    type: object
                  inputMode:
                    enum:
                    - Pipe
                    - File
                    type: string
                  recordWrapperType:
                    type: string
                  shuffleConfig:
                    properties:
                      seed:
                        format: int64
                        type: integer
                    required:
                    - seed
                    type: object
                required:
                - channelName
                - dataSource
                type: object
              minItems: 1
              type: array
            outputDataConfig:
              properties:
                kmsKeyId:
                  type: string
                s3OutputPath:
                  pattern: ^(https|s3)://([^/]+)/?(.*)$
                  type: string
              required:
              - s3OutputPath
              type: object
            region:
              minLength: 1
              type: string
            resourceConfig:
              properties:
                instanceCount:
                  format: int64
                  minimum: 1
                  type: integer
                instanceType:
                  minLength: 1
                  type: string
                volumeKmsKeyId:
                  type: string
                volumeSizeInGB:
                  format: int64
                  minimum: 1
                  type: integer
              required:
              - instanceCount
              - instanceType
              - volumeSizeInGB
              type: object
            roleArn:
              minLength: 20
              pattern: ^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$
              type: string
            sageMakerEndpoint:
              description: A custom SageMaker endpoint to use when communicating with SageMaker.
              pattern: ^(https|http)://.*$
              type: string
            stoppingCondition:
              properties:
                maxRuntimeInSeconds:
                  format: int64
                  minimum: 1
                  type: integer
                maxWaitTimeInSeconds:
                  format: int64
                  minimum: 1
                  type: integer
              type: object
            tags:
              items:
                properties:
                  key:
                    minLength: 1
                    type: string
                  value:
                    type: string
                required:
                - key
                - value
                type: object
              type: array
            tensorBoardOutputConfig:
              description: TensorBoardOutputConfig https://docs.aws.amazon.com/sagemaker/latest/dg/API_TensorBoardOutputConfig.html
              properties:
                localPath:
                  type: string
                s3OutputPath:
                  pattern: ^(https|s3)://([^/]+)/?(.*)$
                  type: string
              required:
              - s3OutputPath
              type: object
            trainingJobName:
              description: The SageMaker training job name. This is optional for the SageMaker K8s operator. If it is empty, the operator will populate it with a generated name.
              maxLength: 63
              type: string
            vpcConfig:
              properties:
                securityGroupIds:
                  items:
                    type: string
                  maxItems: 5
                  minItems: 1
                  type: array
                subnets:
                  items:
                    type: string
                  maxItems: 16
                  minItems: 1
                  type: array
              required:
              - securityGroupIds
              - subnets
              type: object
          required:
          - algorithmSpecification
          - outputDataConfig
          - region
          - resourceConfig
          - roleArn
          - stoppingCondition
          type: object
        status:
          description: TrainingJobStatus defines the observed state of TrainingJob
          properties:
            additional:
              description: Field to store additional information, for example if we are unable to check the status we update this.
              type: string
            cloudWatchLogUrl:
              description: Cloud Watch url for training log
              type: string
            debugRuleEvaluationStatuses:
              description: Status of rule evaluation jobs, obtained from DebugRuleEvaluationStatuses. https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrainingJob.html#sagemaker-DescribeTrainingJob-response-DebugRuleEvaluationStatuses
              items:
                description: DebugRuleEvaluationStatus https://docs.aws.amazon.com/sagemaker/latest/dg/API_DebugRuleEvaluationStatus.html
                properties:
                  lastModifiedTime:
                    format: date-time
                    type: string
                  ruleConfigurationName:
                    type: string
                  ruleEvaluationJobArn:
                    type: string
                  ruleEvaluationStatus:
                    type: string
                  statusDetail:
                    type: string
                type: object
              type: array
            lastCheckTime:
              description: The last time that we checked the status of the SageMaker job.
              format: date-time
              type: string
            modelPath:
              description: Full path to the training artifact (model)
              type: string
            sageMakerTrainingJobName:
              description: SageMaker training job name
              type: string
            secondaryStatus:
              description: The secondary, more granular status of the training job. https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-SecondaryStatus
              type: string
            trainingJobStatus:
              description: The status of the training job. https://docs.aws.amazon.com/sagemaker/latest/dg/API_DescribeTrainingJob.html#SageMaker-DescribeTrainingJob-response-TrainingJobStatus
              type: string
          type: object
      required:
      - spec
      type: object
  version: v1
  versions:
  - name: v1
    served: true
    storage: true
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: datacatalog
  namespace: flyte
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: flyte-pod-webhook
  namespace: flyte
---
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::111222333456:role/flyte-operator
  name: flyteadmin
  namespace: flyte
---
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::111222333456:role/flyte-operator
  name: flytepropeller
  namespace: flyte
---
apiVersion: v1
kind: ServiceAccount
metadata:
  labels:
    app: pytorch-operator
    kustomize.component: pytorch-operator
  name: pytorch-operator
  namespace: kubeflow
---
apiVersion: v1
kind: ServiceAccount
metadata:
  annotations:
    eks.amazonaws.com/role-arn: arn:aws:iam::123456789012:role/DELETE_ME
  name: sagemaker-k8s-operator-default
  namespace: sagemaker-k8s-operator-system
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: sparkoperator
  namespace: sparkoperator
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: sagemaker-k8s-operator-leader-election-role
  namespace: sagemaker-k8s-operator-system
rules:
- apiGroups:
  - ""
  resources:
  - configmaps
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - patch
  - delete
- apiGroups:
  - ""
  resources:
  - configmaps/status
  verbs:
  - get
  - update
  - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: flyte-pod-webhook
  namespace: flyte
rules:
- apiGroups:
  - '*'
  resources:
  - mutatingwebhookconfigurations
  - secrets
  - pods
  verbs:
  - get
  - create
  - update
  - patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: flyteadmin
  namespace: flyte
rules:
- apiGroups:
  - ""
  - flyte.lyft.com
  - rbac.authorization.k8s.io
  resources:
  - configmaps
  - flyteworkflows
  - namespaces
  - pods
  - resourcequotas
  - roles
  - rolebindings
  - secrets
  - services
  - serviceaccounts
  - spark-role
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: flytepropeller
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - update
  - delete
  - patch
- apiGroups:
  - '*'
  resources:
  - '*'
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
  - patch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - get
  - list
  - watch
  - create
  - delete
  - update
- apiGroups:
  - flyte.lyft.com
  resources:
  - flyteworkflows
  - flyteworkflows/finalizers
  verbs:
  - get
  - list
  - watch
  - create
  - update
  - delete
  - patch
  - post
  - deletecollection
---
aggregationRule:
  clusterRoleSelectors:
  - matchLabels:
      rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true"
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    kustomize.component: pytorch-operator
    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true"
  name: kubeflow-pytorchjobs-admin
rules: []
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    kustomize.component: pytorch-operator
    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true"
    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-pytorchjobs-admin: "true"
  name: kubeflow-pytorchjobs-edit
rules:
- apiGroups:
  - kubeflow.org
  resources:
  - pytorchjobs
  - pytorchjobs/status
  verbs:
  - get
  - list
  - watch
  - create
  - delete
  - deletecollection
  - patch
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  labels:
    kustomize.component: pytorch-operator
    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true"
  name: kubeflow-pytorchjobs-view
rules:
- apiGroups:
  - kubeflow.org
  resources:
  - pytorchjobs
  - pytorchjobs/status
  verbs:
  - get
  - list
  - watch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  creationTimestamp: null
  name: sagemaker-k8s-operator-manager-role
rules:
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - batchtransformjobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - batchtransformjobs/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - endpointconfigs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - endpointconfigs/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hostingautoscalingpolicies
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hostingautoscalingpolicies/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hostingdeployments
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hostingdeployments/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hyperparametertuningjobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - hyperparametertuningjobs/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - models
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - models/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - processingjobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - processingjobs/status
  verbs:
  - get
  - patch
  - update
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - trainingjobs
  verbs:
  - create
  - delete
  - get
  - list
  - patch
  - update
  - watch
- apiGroups:
  - sagemaker.aws.amazon.com
  resources:
  - trainingjobs/status
  verbs:
  - get
  - patch
  - update
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: sagemaker-k8s-operator-proxy-role
rules:
- apiGroups:
  - authentication.k8s.io
  resources:
  - tokenreviews
  verbs:
  - create
- apiGroups:
  - authorization.k8s.io
  resources:
  - subjectaccessreviews
  verbs:
  - create
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  labels:
    app: pytorch-operator
    kustomize.component: pytorch-operator
  name: pytorch-operator
rules:
- apiGroups:
  - kubeflow.org
  resources:
  - pytorchjobs
  - pytorchjobs/status
  verbs:
  - '*'
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - '*'
- apiGroups:
  - ""
  resources:
  - pods
  - services
  - endpoints
  - events
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRole
metadata:
  name: sparkoperator
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - '*'
- apiGroups:
  - ""
  resources:
  - services
  - configmaps
  - secrets
  verbs:
  - create
  - get
  - delete
- apiGroups:
  - extensions
  resources:
  - ingresses
  verbs:
  - create
  - get
  - delete
- apiGroups:
  - ""
  resources:
  - nodes
  verbs:
  - get
- apiGroups:
  - batch
  resources:
  - jobs
  verbs:
  - create
  - get
  - update
  - delete
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - events
  verbs:
  - create
  - update
  - patch
- apiGroups:
  - apiextensions.k8s.io
  resources:
  - customresourcedefinitions
  verbs:
  - create
  - get
  - update
  - delete
- apiGroups:
  - admissionregistration.k8s.io
  resources:
  - mutatingwebhookconfigurations
  verbs:
  - create
  - get
  - update
  - delete
- apiGroups:
  - sparkoperator.k8s.io
  resources:
  - sparkapplications
  - scheduledsparkapplications
  - sparkapplications/status
  - scheduledsparkapplications/status
  verbs:
  - '*'
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: sagemaker-k8s-operator-leader-election-rolebinding
  namespace: sagemaker-k8s-operator-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: sagemaker-k8s-operator-leader-election-role
subjects:
- kind: ServiceAccount
  name: sagemaker-k8s-operator-default
  namespace: sagemaker-k8s-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: flyte-pod-webhook
  namespace: flyte
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flyte-pod-webhook
subjects:
- kind: ServiceAccount
  name: flyte-pod-webhook
  namespace: flyte
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: sagemaker-k8s-operator-manager-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: sagemaker-k8s-operator-manager-role
subjects:
- kind: ServiceAccount
  name: sagemaker-k8s-operator-default
  namespace: sagemaker-k8s-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: sagemaker-k8s-operator-proxy-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: sagemaker-k8s-operator-proxy-role
subjects:
- kind: ServiceAccount
  name: sagemaker-k8s-operator-default
  namespace: sagemaker-k8s-operator-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: flyteadmin-binding
  namespace: flyte
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flyteadmin
subjects:
- kind: ServiceAccount
  name: flyteadmin
  namespace: flyte
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: flytepropeller
  namespace: flyte
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: flytepropeller
subjects:
- kind: ServiceAccount
  name: flytepropeller
  namespace: flyte
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  labels:
    app: pytorch-operator
    kustomize.component: pytorch-operator
  name: pytorch-operator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: pytorch-operator
subjects:
- kind: ServiceAccount
  name: pytorch-operator
  namespace: kubeflow
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: sparkoperator
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: sparkoperator
subjects:
- kind: ServiceAccount
  name: sparkoperator
  namespace: sparkoperator
---
apiVersion: v1
data:
  aa_namespace.yaml: |
    apiVersion: v1
    kind: Namespace
    metadata:
      name: {{ namespace }}
    spec:
      finalizers:
      - kubernetes
  ab_project-resource-quota.yaml: "apiVersion: v1\nkind: ResourceQuota\nmetadata:\n  name: project-quota\n  namespace: {{ namespace }} \nspec:\n  hard:\n    limits.cpu: {{ projectQuotaCpu }} \n    limits.memory: {{ projectQuotaMemory }}\n\n"
  ac_project-copilot-dataconfig.yaml: |
    kind: ConfigMap
    apiVersion: v1
    metadata:
      name: flyte-data-config
      namespace: {{ namespace }}
    data:
      config.yaml: |
        storage:
          connection:
            access-key: minio
            auth-type: accesskey
            disable-ssl: true
            endpoint: http://minio.flyte.svc.cluster.local:9000
            region: us-east-1
            secret-key: miniostorage
          type: minio
          container: my-s3-bucket
          enable-multicontainer: true
  ad_spark-role.yaml: |
    apiVersion: rbac.authorization.k8s.io/v1beta1
    kind: Role
    metadata:
      name: spark-role
      namespace: {{ namespace }}
    rules:
    - apiGroups:
      - ""
      resources:
      - pods
      verbs:
      - '*'
    - apiGroups:
      - ""
      resources:
      - services
      verbs:
      - '*'
    - apiGroups:
      - ""
      resources:
      - configmaps
      verbs:
      - '*'
  ae_spark-service-account.yaml: |
    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: spark
      namespace: {{ namespace }}
  af_spark-role-binding.yaml: "apiVersion: rbac.authorization.k8s.io/v1beta1\nkind: RoleBinding\nmetadata:\n  name: spark-role-binding\n  namespace: {{ namespace }} \nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: spark-role\nsubjects:\n- kind: ServiceAccount\n  name: spark\n  namespace: {{ namespace }}\n\n"
kind: ConfigMap
metadata:
  name: clusterresource-template-tkdkkt4cb5
  namespace: flyte
---
apiVersion: v1
data:
  db.yaml: |
    database:
      port: 5432
      username: flyte
      # TODO Change this to match aurora or rds postgres endpoint
      host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com
      dbname: flytedatacatalog
      passwordPath: /etc/db/pass.txt
  logger.yaml: |
    # TODO this is used to control the log level
    logger:
      show-source: true
      level: 2
  server.yaml: |
    datacatalog:
      storage-prefix: metadata/datacatalog
      metrics-scope: "datacatalog"
      profiler-port: 10254
    application:
      grpcPort: 8089
  storage.yaml: |
    storage:
      type: stow
      stow:
        kind: s3
        config:
          auth_type: iam
          region: us-east-2
      # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store
      container: "flyte-demo"
      # NOTE this cache configuration is purely for propeller. But since we are having a common storage
      # config, we are configuring this value. In production create a separate storage config for
      # propeller and increase the cache size
      cache:
        max_size_mbs: 512
        target_gc_percent: 70
      limits:
        maxDownloadMBs: 10
kind: ConfigMap
metadata:
  name: datacatalog-config-fktmhdgfk8
  namespace: flyte
---
apiVersion: v1
data:
  cluster_resources.yaml: |
    cluster_resources:
      templatePath: "/etc/flyte/clusterresource/templates"
      customData:
        - production:
            - projectQuotaCpu:
                value: "5"
            - projectQuotaMemory:
                value: "4000Mi"
        - staging:
            - projectQuotaCpu:
                value: "2"
            - projectQuotaMemory:
                value: "3000Mi"
        - development:
            - projectQuotaCpu:
                value: "4"
            - projectQuotaMemory:
                value: "3000Mi"
      refreshInterval: 1m
  db.yaml: |
    database:
      port: 5432
      username: flyte
      # TODO Change this to match aurora or rds postgres endpoint
      host: flyteadmin-cluster.cluster-456123e6ivib.us-west-2.rds.amazonaws.com
      dbname: flyte
      passwordPath: /etc/db/pass.txt
  domain.yaml: |
    domains:
      - id: development
        name: development
      - id: staging
        name: staging
      - id: production
        name: production
  logger.yaml: |
    # TODO this is used to control the log level
    logger:
      show-source: true
      level: 2
  server.yaml: |
    server:
      httpPort: 8088
      grpcPort: 8089
      security:
        # Controls whether to serve requests over SSL/TLS.
        secure: false
        # Controls whether to enforce authentication. Follow the guide in https://docs.flyte.org/ on how to setup authentication.
        useAuth: false
        allowCors: true
        allowedOrigins:
          # Accepting all domains for Sandbox installation
          - "*"
        allowedHeaders:
          - "Content-Type"
          - "flyte-authorization"
    auth:
      authorizedUris:
        # This should point at your public http Uri.
        - https://localhost:30081
        # This will be used by internal services in the same namespace as flyteadmin
        - http://flyteadmin:80
        # This will be used by internal services in the same cluster but different namespaces
        - http://flyteadmin.flyte.svc.cluster.local:80

      # Controls app authentication config
      appAuth:
        thirdPartyConfig:
          flyteClient:
            clientId: flytectl
            redirectUri: https://localhost:53593/callback
            scopes:
              - offline
              - all
      # Controls user authentication
      userAuth:
        openId:
          baseUrl: https://accounts.google.com
          scopes:
            - profile
            - openid
          clientId: 657465813211-6eog7ek7li5k7i7fvgv2921075063hpe.apps.googleusercontent.com
    flyteadmin:
      roleNameKey: "iam.amazonaws.com/role"
  storage.yaml: |
    storage:
      type: stow
      stow:
        kind: s3
        config:
          auth_type: iam
          region: us-east-2
      # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store
      container: "flyte-demo"
      # NOTE this cache configuration is purely for propeller. But since we are having a common storage
      # config, we are configuring this value. In production create a separate storage config for
      # propeller and increase the cache size
      cache:
        max_size_mbs: 512
        target_gc_percent: 70
      limits:
        maxDownloadMBs: 10
  task_resource_defaults.yaml: |
    task_resources:
      defaults:
        cpu: 1000m
        memory: 1000Mi
        storage: 1000Mi
      limits:
        cpu: 2
        memory: 8Gi
        storage: 2000Mi
        gpu: 1
kind: ConfigMap
metadata:
  name: flyte-admin-config-29g4dtt8tc
  namespace: flyte
---
apiVersion: v1
data:
  BASE_URL: /console
  CONFIG_DIR: /etc/flyte/config
kind: ConfigMap
metadata:
  name: flyte-console-config
  namespace: flyte
---
apiVersion: v1
data:
  admin.yaml: |
    event:
      type: admin
      rate: 500
      capacity: 1000
    admin:
      endpoint: flyteadmin:81
      insecure: true
  catalog.yaml: |
    catalog-cache:
      endpoint: datacatalog:89
      type: datacatalog
      insecure: true
  catalog_cache.yaml: "plugins:\n  catalogCache:  \n    reader:\n      maxItems: 10000\n    writer:\n      maxItems: 10000\n"
  copilot.yaml: |
    plugins:
      k8s:
        co-pilot:
          name: "flyte-copilot-"
          image: "cr.flyte.org/flyteorg/flytecopilot:v0.5.28"
          start-timeout: "30s"
  core.yaml: |
    propeller:
      rawoutput-prefix: s3://my-s3-bucket/
      metadata-prefix: metadata/propeller
      workers: 40
      gc-interval: 12h
      max-workflow-retries: 50
      workflow-reeval-duration: 30s
      downstream-eval-duration: 30s
      limit-namespace: "all"
      prof-port: 10254
      metrics-prefix: flyte
      enable-admin-launcher: true
      leader-election:
        lock-config-map:
          name: propeller-leader
          namespace: flyte
        enabled: true
        lease-duration: 15s
        renew-deadline: 10s
        retry-period: 2s
      kube-client-config:
        qps: 100
        burst: 25
        timeout: 30s
      queue:
        type: batch
        batching-interval: 2s
        batch-size: -1
        queue:
          type: maxof
          rate: 100
          capacity: 1000
          base-delay: 5s
          max-delay: 120s
        sub-queue:
          type: bucket
          rate: 100
          capacity: 1000
      workflowStore:
        policy: "ResourceVersionCache"
  enabled_plugins.yaml: |
    tasks:
      max-plugin-phase-versions: 1000000
      task-plugins:
        enabled-plugins:
          - container
          - sidecar
          - spark
          - k8s-array
          - pytorch
        default-for-task-types:
          container: container
          sidecar: sidecar
          spark: spark
          container_array: k8s-array
          pytorch: pytorch
  k8s.yaml: |
    plugins:
      k8s:
        default-env-vars:
          - FLYTE_AWS_ENDPOINT: "http://minio.flyte:9000"
          - FLYTE_AWS_ACCESS_KEY_ID: minio
          - FLYTE_AWS_SECRET_ACCESS_KEY: miniostorage
        default-cpus: 100m
        default-memory: 100Mi
  logger.yaml: |
    # TODO this is used to control the log level
    logger:
      show-source: true
      level: 2
  qubole.yaml: |
    plugins:
      qubole:
        quboleTokenKey: "FLYTE_QUBOLE_CLIENT_TOKEN"
  resource_manager.yaml: |
    propeller:
      resourcemanager:
        type: redis
        resourceMaxQuota: 10000
        redis:
          hostPath: redis-resource-manager:6379
          hostKey: mypassword
  spark.yaml: |
    plugins:
      spark:
        spark-config-default:
          # We override the default credentials chain provider for Hadoop so that
          # it can use the serviceAccount based IAM role or ec2 metadata based.
          # This is more in line with how AWS works
          - spark.hadoop.fs.s3a.aws.credentials.provider: "com.amazonaws.auth.DefaultAWSCredentialsProviderChain"
          - spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version: "2"
          - spark.kubernetes.allocation.batch.size: "50"
          - spark.hadoop.fs.s3a.acl.default: "BucketOwnerFullControl"
          - spark.hadoop.fs.s3n.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem"
          - spark.hadoop.fs.AbstractFileSystem.s3n.impl: "org.apache.hadoop.fs.s3a.S3A"
          - spark.hadoop.fs.s3.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem"
          - spark.hadoop.fs.AbstractFileSystem.s3.impl: "org.apache.hadoop.fs.s3a.S3A"
          - spark.hadoop.fs.s3a.impl: "org.apache.hadoop.fs.s3a.S3AFileSystem"
          - spark.hadoop.fs.AbstractFileSystem.s3a.impl: "org.apache.hadoop.fs.s3a.S3A"
          - spark.hadoop.fs.s3a.multipart.threshold: "536870912"
          - spark.blacklist.enabled: "true"
          - spark.blacklist.timeout: "5m"
          - spark.task.maxfailures: "8"
  storage.yaml: |
    storage:
      type: stow
      stow:
        kind: s3
        config:
          auth_type: iam
          region: us-east-2
      # TODO replace with the container (bucket) in s3 used by Flyte as intermediate store
      container: "flyte-demo"
      # NOTE this cache configuration is purely for propeller. But since we are having a common storage
      # config, we are configuring this value. In production create a separate storage config for
      # propeller and increase the cache size
      cache:
        max_size_mbs: 512
        target_gc_percent: 70
      limits:
        maxDownloadMBs: 10
  task_logs.yaml: |
    plugins:
      logs:
        # Log links can link to multiple options
        # #1 Kubernetes dashboard is disabled in GCP
        kubernetes-enabled: false
        # #2 AWS Cloudwatch
        cloudwatch-enabled: true
          # TODO Add region and log group
        cloudwatch-region: <region>
        cloudwatch-log-group: <log-group>
kind: ConfigMap
metadata:
  name: flyte-propeller-config-79b62khbc5
  namespace: flyte
---
apiVersion: v1
data:
  pass.txt: eW91cnBhc3N3b3Jk
kind: Secret
metadata:
  name: db-pass-bthd2588cc
  namespace: flyte
type: Opaque
---
apiVersion: v1
kind: Secret
metadata:
  name: flyte-admin-auth
  namespace: flyte
type: Opaque
---
apiVersion: v1
kind: Secret
metadata:
  name: flyte-pod-webhook
  namespace: flyte
type: Opaque
---
apiVersion: v1
kind: Secret
metadata:
  name: flyte-propeller-auth
  namespace: flyte
stringData:
  client_secret: foobar
type: Opaque
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    contour.heptio.com/upstream-protocol.h2c: grpc
  name: datacatalog
  namespace: flyte
spec:
  ports:
  - name: http
    port: 88
    protocol: TCP
    targetPort: 8088
  - name: grpc
    port: 89
    protocol: TCP
    targetPort: 8089
  selector:
    app: datacatalog
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/load-balancer-type: Internal
  name: datacatalog-metrics
  namespace: flyte
spec:
  ports:
  - name: http-metrics
    port: 10254
    protocol: TCP
  selector:
    app: datacatalog
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    projectcontour.io/upstream-protocol.h2c: grpc
  name: flyte-pod-webhook
  namespace: flyte
spec:
  ports:
  - name: https
    port: 443
    protocol: TCP
    targetPort: 9443
  selector:
    app: flyte-pod-webhook
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: flyteadmin.subdomain.mydomain.com
    projectcontour.io/upstream-protocol.h2c: grpc
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"
    service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: sg-...,sg-...,sg-...
  name: flyteadmin
  namespace: flyte
spec:
  loadBalancerSourceRanges:
  - 0.0.0.0
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8088
  - name: grpc
    port: 81
    protocol: TCP
    targetPort: 8089
  selector:
    app: flyteadmin
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    external-dns.alpha.kubernetes.io/hostname: flyte.subdomain.mydomain.com
    service.beta.kubernetes.io/aws-load-balancer-connection-idle-timeout: "600"
    service.beta.kubernetes.io/aws-load-balancer-extra-security-groups: sg-....,sg-...,sg-...
  name: flyteconsole
  namespace: flyte
spec:
  loadBalancerSourceRanges:
  - 0.0.0.0
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: flyteconsole
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/load-balancer-type: Internal
  name: flytepropeller
  namespace: flyte
spec:
  ports:
  - name: http-metrics
    port: 10254
    protocol: TCP
  selector:
    app: flytepropeller
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis-resource-manager
  name: redis-resource-manager
  namespace: flyte
spec:
  ports:
  - name: redis
    port: 6379
    protocol: TCP
    targetPort: redis
  selector:
    app: redis-resource-manager
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/port: "8443"
    prometheus.io/scrape: "true"
  labels:
    app: pytorch-operator
    kustomize.component: pytorch-operator
  name: pytorch-operator
  namespace: kubeflow
spec:
  ports:
  - name: monitoring-port
    port: 8443
    targetPort: 8443
  selector:
    kustomize.component: pytorch-operator
    name: pytorch-operator
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    prometheus.io/port: "8443"
    prometheus.io/scheme: https
    prometheus.io/scrape: "true"
  labels:
    control-plane: controller-manager
  name: sagemaker-k8s-operator-controller-manager-metrics-service
  namespace: sagemaker-k8s-operator-system
spec:
  ports:
  - name: https
    port: 8443
    targetPort: https
  selector:
    control-plane: controller-manager
---
apiVersion: v1
kind: Service
metadata:
  name: spark-webhook
  namespace: sparkoperator
spec:
  ports:
  - name: webhook
    port: 443
    targetPort: 8080
  selector:
    app.kubernetes.io/name: sparkoperator
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: datacatalog
  name: datacatalog
  namespace: flyte
spec:
  replicas: 1
  selector:
    matchLabels:
      app: datacatalog
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      labels:
        app: datacatalog
        app.kubernetes.io/name: datacatalog
        app.kubernetes.io/version: 0.3.0
    spec:
      containers:
      - command:
        - datacatalog
        - --config
        - /etc/datacatalog/config/*.yaml
        - serve
        image: cr.flyte.org/flyteorg/datacatalog:v0.3.9
        imagePullPolicy: IfNotPresent
        name: datacatalog
        ports:
        - containerPort: 8088
        - containerPort: 8089
        resources:
          limits:
            cpu: "2"
            ephemeral-storage: 1000Mi
            memory: 1Gi
        volumeMounts:
        - mountPath: /etc/datacatalog/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
      initContainers:
      - command:
        - datacatalog
        - --config
        - /etc/datacatalog/config/*.yaml
        - migrate
        - run
        image: cr.flyte.org/flyteorg/datacatalog:v0.3.9
        imagePullPolicy: IfNotPresent
        name: run-migrations
        volumeMounts:
        - mountPath: /etc/datacatalog/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
      serviceAccountName: datacatalog
      volumes:
      - emptyDir: {}
        name: shared-data
      - configMap:
          name: datacatalog-config-fktmhdgfk8
        name: config-volume
      - name: db-pass
        secret:
          secretName: db-pass-bthd2588cc
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flyte-pod-webhook
  name: flyte-pod-webhook
  namespace: flyte
spec:
  selector:
    matchLabels:
      app: flyte-pod-webhook
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      labels:
        app: flyte-pod-webhook
        app.kubernetes.io/name: flyte-pod-webhook
        app.kubernetes.io/version: 0.5.13
    spec:
      containers:
      - args:
        - webhook
        - --config
        - /etc/flyte/config/*.yaml
        command:
        - flytepropeller
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: cr.flyte.org/flyteorg/flytepropeller:v0.13.20
        imagePullPolicy: IfNotPresent
        name: webhook
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
          readOnly: true
        - mountPath: /etc/webhook/certs
          name: webhook-certs
          readOnly: true
      initContainers:
      - args:
        - webhook
        - init-certs
        - --config
        - /etc/flyte/config/*.yaml
        command:
        - flytepropeller
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: cr.flyte.org/flyteorg/flytepropeller:v0.13.20
        imagePullPolicy: IfNotPresent
        name: generate-secrets
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
      serviceAccountName: flyte-pod-webhook
      volumes:
      - configMap:
          name: flyte-propeller-config-79b62khbc5
        name: config-volume
      - name: webhook-certs
        secret:
          secretName: flyte-pod-webhook
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flyteadmin
  name: flyteadmin
  namespace: flyte
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flyteadmin
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      labels:
        app: flyteadmin
        app.kubernetes.io/name: flyteadmin
        app.kubernetes.io/version: 0.4.13
    spec:
      containers:
      - command:
        - flyteadmin
        - --config
        - /etc/flyte/config/*.yaml
        - serve
        image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
        imagePullPolicy: IfNotPresent
        name: flyteadmin
        ports:
        - containerPort: 8088
        - containerPort: 8089
        resources:
          limits:
            cpu: "2"
            ephemeral-storage: 1Gi
            memory: 1Gi
        volumeMounts:
        - mountPath: /srv/flyte
          name: shared-data
        - mountPath: /etc/flyte/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
        - mountPath: /etc/secrets/
          name: auth
      - command:
        - sh
        - -c
        - ln -s /usr/share/nginx/html /usr/share/nginx/html/openapi && sh /usr/local/bin/docker-run.sh
        env:
        - name: PAGE_TITLE
          value: Flyte Admin OpenAPI
        - name: SPEC_URL
          value: /api/v1/openapi
        - name: PORT
          value: "8087"
        image: docker.io/redocly/redoc
        imagePullPolicy: IfNotPresent
        name: redoc
        ports:
        - containerPort: 8087
        resources:
          limits:
            cpu: "0.1"
            memory: 200Mi
      initContainers:
      - command:
        - flyteadmin
        - --config
        - /etc/flyte/config/*.yaml
        - migrate
        - run
        image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
        imagePullPolicy: IfNotPresent
        name: run-migrations
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
      - command:
        - flyteadmin
        - --config
        - /etc/flyte/config/*.yaml
        - migrate
        - seed-projects
        - flytesnacks
        - flytetester
        - flyteexamples
        image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
        imagePullPolicy: IfNotPresent
        name: seed-projects
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
      - command:
        - flyteadmin
        - --config
        - /etc/flyte/config/*.yaml
        - clusterresource
        - sync
        image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
        imagePullPolicy: IfNotPresent
        name: sync-cluster-resources
        volumeMounts:
        - mountPath: /etc/flyte/clusterresource/templates
          name: resource-templates
        - mountPath: /etc/flyte/config
          name: config-volume
        - mountPath: /etc/db
          name: db-pass
      - args:
        - flyteadmin --config=/etc/flyte/config/*.yaml secrets init --localPath /etc/secrets/auth && flyteadmin --config=/etc/flyte/config/*.yaml secrets create --fromPath /etc/secrets/auth
        command:
        - /bin/sh
        - -c
        env:
        - name: POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
        imagePullPolicy: IfNotPresent
        name: generate-secrets
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
      serviceAccountName: flyteadmin
      volumes:
      - emptyDir: {}
        name: shared-data
      - configMap:
          name: flyte-admin-config-29g4dtt8tc
        name: config-volume
      - configMap:
          name: clusterresource-template-tkdkkt4cb5
        name: resource-templates
      - name: db-pass
        secret:
          secretName: db-pass-bthd2588cc
      - name: auth
        secret:
          secretName: flyte-admin-auth
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flyteconsole
  name: flyteconsole
  namespace: flyte
spec:
  replicas: 1
  selector:
    matchLabels:
      app: flyteconsole
  template:
    metadata:
      labels:
        app: flyteconsole
        app.kubernetes.io/name: flyteconsole
        app.kubernetes.io/version: 0.19.0
    spec:
      containers:
      - envFrom:
        - configMapRef:
            name: flyte-console-config
        image: cr.flyte.org/flyteorg/flyteconsole:v0.25.0
        name: flyteconsole
        ports:
        - containerPort: 8080
        volumeMounts:
        - mountPath: /srv/flyte
          name: shared-data
      volumes:
      - emptyDir: {}
        name: shared-data
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: flytepropeller
  name: flytepropeller
  namespace: flyte
spec:
  selector:
    matchLabels:
      app: flytepropeller
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      labels:
        app: flytepropeller
        app.kubernetes.io/name: flytepropeller
        app.kubernetes.io/version: 0.7.1
    spec:
      containers:
      - args:
        - --config
        - /etc/flyte/config/*.yaml
        command:
        - flytepropeller
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: cr.flyte.org/flyteorg/flytepropeller:v0.13.20
        imagePullPolicy: IfNotPresent
        name: flytepropeller
        ports:
        - containerPort: 10254
        resources:
          limits:
            cpu: "2"
            ephemeral-storage: 1Gi
            memory: 4Gi
        volumeMounts:
        - mountPath: /etc/flyte/config
          name: config-volume
        - mountPath: /etc/secrets/
          name: auth
      serviceAccountName: flytepropeller
      volumes:
      - configMap:
          name: flyte-propeller-config-79b62khbc5
        name: config-volume
      - name: auth
        secret:
          secretName: flyte-propeller-auth
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    kustomize.component: pytorch-operator
  name: pytorch-operator
  namespace: kubeflow
spec:
  replicas: 1
  selector:
    matchLabels:
      kustomize.component: pytorch-operator
      name: pytorch-operator
  template:
    metadata:
      labels:
        kustomize.component: pytorch-operator
        name: pytorch-operator
    spec:
      containers:
      - command:
        - /pytorch-operator.v1
        - --alsologtostderr
        - -v=1
        - --monitoring-port=8443
        env:
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        image: gcr.io/kubeflow-images-public/pytorch-operator:v1.0.0-g047cf0f
        name: pytorch-operator
      serviceAccountName: pytorch-operator
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    control-plane: controller-manager
  name: sagemaker-k8s-operator-controller-manager
  namespace: sagemaker-k8s-operator-system
spec:
  replicas: 1
  selector:
    matchLabels:
      control-plane: controller-manager
  template:
    metadata:
      labels:
        control-plane: controller-manager
    spec:
      containers:
      - args:
        - --secure-listen-address=0.0.0.0:8443
        - --upstream=http://127.0.0.1:8080/
        - --logtostderr=true
        - --v=10
        image: gcr.io/kubebuilder/kube-rbac-proxy:v0.4.0
        name: kube-rbac-proxy
        ports:
        - containerPort: 8443
          name: https
      - args:
        - --metrics-addr=127.0.0.1:8080
        command:
        - /manager
        env:
        - name: AWS_DEFAULT_SAGEMAKER_ENDPOINT
          value: ""
        image: 957583890962.dkr.ecr.us-east-1.amazonaws.com/amazon-sagemaker-operator-for-k8s:v1.2
        imagePullPolicy: Always
        name: manager
        resources:
          limits:
            cpu: 100m
            memory: 30Mi
          requests:
            cpu: 100m
            memory: 20Mi
      serviceAccountName: sagemaker-k8s-operator-default
      terminationGracePeriodSeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/name: sparkoperator
    app.kubernetes.io/version: v2.4.5-v1beta2
  name: sparkoperator
  namespace: sparkoperator
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: sparkoperator
  strategy:
    type: Recreate
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "10254"
        prometheus.io/scrape: "true"
      labels:
        app.kubernetes.io/name: sparkoperator
        app.kubernetes.io/version: v2.4.5-v1beta2
    spec:
      containers:
      - args:
        - -logtostderr
        - -v=2
        - -controller-threads=20
        - -enable-metrics=true
        - '-metrics-prefix=service:'
        - -metrics-labels=task_name
        - -metrics-labels=workflow_name
        - -enable-webhook=true
        - -webhook-svc-namespace=sparkoperator
        command:
        - /usr/bin/spark-operator
        image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5
        imagePullPolicy: Always
        name: sparkoperator-unknown
        ports:
        - containerPort: 10254
        - containerPort: 8080
        volumeMounts:
        - mountPath: /etc/webhook-certs
          name: webhook-certs
      serviceAccountName: sparkoperator
      volumes:
      - name: webhook-certs
        secret:
          secretName: spark-webhook-certs
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: redis
  namespace: flyte
spec:
  replicas: 1
  selector:
    matchLabels:
      app: redis-resource-manager
  serviceName: redis-resource-manager
  template:
    metadata:
      labels:
        app: redis-resource-manager
    spec:
      containers:
      - env:
        - name: REDIS_PASSWORD
          value: mypassword
        image: docker.io/bitnami/redis:4.0.2-r1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          exec:
            command:
            - redis-cli
            - ping
          failureThreshold: 3
          initialDelaySeconds: 30
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 5
        name: redis-resource-manager
        ports:
        - containerPort: 6379
          name: redis
          protocol: TCP
        readinessProbe:
          exec:
            command:
            - redis-cli
            - ping
          failureThreshold: 3
          initialDelaySeconds: 5
          periodSeconds: 10
          successThreshold: 1
          timeoutSeconds: 1
        resources:
          requests:
            cpu: 200m
            memory: 128Mi
        volumeMounts:
        - mountPath: /bitnami
          name: redis-data
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      volumes:
      - emptyDir: {}
        name: redis-data
---
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: syncresources
  namespace: flyte
spec:
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - command:
            - flyteadmin
            - --config
            - /etc/flyte/config/*.yaml
            - clusterresource
            - sync
            image: cr.flyte.org/flyteorg/flyteadmin:v0.6.22
            imagePullPolicy: IfNotPresent
            name: sync-cluster-resources
            volumeMounts:
            - mountPath: /etc/flyte/clusterresource/templates
              name: resource-templates
            - mountPath: /etc/flyte/config
              name: config-volume
            - mountPath: /etc/db
              name: db-pass
          restartPolicy: OnFailure
          serviceAccountName: flyteadmin
          volumes:
          - configMap:
              name: clusterresource-template-tkdkkt4cb5
            name: resource-templates
          - configMap:
              name: flyte-admin-config-29g4dtt8tc
            name: config-volume
          - name: db-pass
            secret:
              secretName: db-pass-bthd2588cc
  schedule: '*/1 * * * *'
---
apiVersion: batch/v1
kind: Job
metadata:
  labels:
    app.kubernetes.io/name: sparkoperator
    app.kubernetes.io/version: v2.4.5-v1beta2
  name: sparkoperator-init
  namespace: sparkoperator
spec:
  backoffLimit: 3
  template:
    metadata:
      labels:
        app.kubernetes.io/name: sparkoperator
        app.kubernetes.io/version: v2.4.5-v1beta2
    spec:
      containers:
      - command:
        - /usr/bin/gencerts.sh
        - --namespace
        - sparkoperator
        - -p
        image: gcr.io/spark-operator/spark-operator:v1beta2-1.1.2-2.4.5
        imagePullPolicy: IfNotPresent
        name: main
      restartPolicy: Never
      serviceAccountName: sparkoperator
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6
    alb.ingress.kubernetes.io/group.name: flytesystem
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: service_instance=production
    kubernetes.io/ingress.class: alb
  labels:
    app: flyteadmin
  name: flytesystem
  namespace: flyte
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: ssl-redirect
            port:
              name: use-annotation
        path: /*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteconsole
            port:
              number: 80
        path: /console
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteconsole
            port:
              number: 80
        path: /console/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /api/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /healthcheck
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /v1/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /openapi/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /.well-known/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /login
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /login/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /logout
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /logout/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /callback
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /callback/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /me
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /config
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /config/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /oauth2
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 80
        path: /oauth2/*
        pathType: ImplementationSpecific
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_301"}}'
    alb.ingress.kubernetes.io/backend-protocol-version: GRPC
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:111111111111:certificate/e92fefd8-6197-4249-a524-431d611c9af6
    alb.ingress.kubernetes.io/group.name: flytesystem
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/tags: service_instance=production
    kubernetes.io/ingress.class: alb
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
  labels:
    app: flyteadmin
  name: flytesystem-grpc
  namespace: flyte
spec:
  rules:
  - http:
      paths:
      - backend:
          service:
            name: flyteadmin
            port:
              number: 81
        path: /flyteidl.service.AdminService/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 81
        path: /flyteidl.service.AuthMetadataService/*
        pathType: ImplementationSpecific
      - backend:
          service:
            name: flyteadmin
            port:
              number: 81
        path: /flyteidl.service.IdentityService/*
        pathType: ImplementationSpecific

@stephen37
Copy link
Contributor Author

You think we can merge it @EngHabu?

@EngHabu
Copy link
Contributor

EngHabu commented Sep 20, 2021

Thank you!

@EngHabu EngHabu merged commit 25bde74 into flyteorg:master Sep 20, 2021
@welcome
Copy link

welcome bot commented Sep 20, 2021

Congrats on merging your first pull request! 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants