Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
5ddc7f7d
"vscode:/vscode.git/clone" did not exist on "497670998b5fdfd933cbdeb51fbc1673fe036162"
Commit
5ddc7f7d
authored
Mar 04, 2025
by
Maksim Khadkevich
Committed by
GitHub
Mar 04, 2025
Browse files
feat: moved compoundAI operator, APIserver, and examples (#10)
parent
14ce7e03
Changes
239
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
9444 additions
and
0 deletions
+9444
-0
deploy/compoundai/operator/api/compoundai/schemasv1/yatai_component.go
...ndai/operator/api/compoundai/schemasv1/yatai_component.go
+44
-0
deploy/compoundai/operator/api/compoundai/yatai-client/client.go
...compoundai/operator/api/compoundai/yatai-client/client.go
+197
-0
deploy/compoundai/operator/api/v1alpha1/common.go
deploy/compoundai/operator/api/v1alpha1/common.go
+46
-0
deploy/compoundai/operator/api/v1alpha1/compoundaideployment_types.go
...undai/operator/api/v1alpha1/compoundaideployment_types.go
+72
-0
deploy/compoundai/operator/api/v1alpha1/compoundainim_types.go
...y/compoundai/operator/api/v1alpha1/compoundainim_types.go
+86
-0
deploy/compoundai/operator/api/v1alpha1/compoundainimdeployment_types.go
...ai/operator/api/v1alpha1/compoundainimdeployment_types.go
+137
-0
deploy/compoundai/operator/api/v1alpha1/compoundainimrequest_types.go
...undai/operator/api/v1alpha1/compoundainimrequest_types.go
+115
-0
deploy/compoundai/operator/api/v1alpha1/groupversion_info.go
deploy/compoundai/operator/api/v1alpha1/groupversion_info.go
+37
-0
deploy/compoundai/operator/api/v1alpha1/shared.go
deploy/compoundai/operator/api/v1alpha1/shared.go
+85
-0
deploy/compoundai/operator/api/v1alpha1/zz_generated.deepcopy.go
...compoundai/operator/api/v1alpha1/zz_generated.deepcopy.go
+811
-0
deploy/compoundai/operator/cmd/main.go
deploy/compoundai/operator/cmd/main.go
+196
-0
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundaideployments.yaml
...or/config/crd/bases/nvidia.com_compoundaideployments.yaml
+2884
-0
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainimdeployments.yaml
...config/crd/bases/nvidia.com_compoundainimdeployments.yaml
+2837
-0
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainimrequests.yaml
...or/config/crd/bases/nvidia.com_compoundainimrequests.yaml
+1494
-0
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainims.yaml
.../operator/config/crd/bases/nvidia.com_compoundainims.yaml
+96
-0
deploy/compoundai/operator/config/crd/kustomization.yaml
deploy/compoundai/operator/config/crd/kustomization.yaml
+42
-0
deploy/compoundai/operator/config/crd/kustomizeconfig.yaml
deploy/compoundai/operator/config/crd/kustomizeconfig.yaml
+34
-0
deploy/compoundai/operator/config/default/kustomization.yaml
deploy/compoundai/operator/config/default/kustomization.yaml
+157
-0
deploy/compoundai/operator/config/default/manager_auth_proxy_patch.yaml
...dai/operator/config/default/manager_auth_proxy_patch.yaml
+57
-0
deploy/compoundai/operator/config/manager/kustomization.yaml
deploy/compoundai/operator/config/manager/kustomization.yaml
+17
-0
No files found.
deploy/compoundai/operator/api/compoundai/schemasv1/yatai_component.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
schemasv1
import
(
"time"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
)
type
YataiComponentSchema
struct
{
ResourceSchema
Creator
*
UserSchema
`json:"creator"`
Cluster
*
ClusterFullSchema
`json:"cluster"`
Description
string
`json:"description"`
Version
string
`json:"version"`
KubeNamespace
string
`json:"kube_namespace"`
Manifest
*
modelschemas
.
YataiComponentManifestSchema
`json:"manifest"`
LatestInstalledAt
*
time
.
Time
`json:"latest_installed_at"`
LatestHeartbeatAt
*
time
.
Time
`json:"latest_heartbeat_at"`
}
type
RegisterYataiComponentSchema
struct
{
Name
modelschemas
.
YataiComponentName
`json:"name"`
Version
string
`json:"version"`
KubeNamespace
string
`json:"kube_namespace"`
SelectorLabels
map
[
string
]
string
`json:"selector_labels,omitempty"`
Manifest
*
modelschemas
.
YataiComponentManifestSchema
`json:"manifest"`
}
deploy/compoundai/operator/api/compoundai/yatai-client/client.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
yataiclient
import
(
"context"
"fmt"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/schemasv1"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/pkg/compoundai/consts"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/pkg/compoundai/reqcli"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/pkg/compoundai/utils"
)
type
CompoundAIAuthHeaders
struct
{
OrgId
string
UserId
string
}
type
YataiClient
struct
{
endpoint
string
apiToken
string
headers
CompoundAIAuthHeaders
}
func
NewYataiClient
(
endpoint
,
apiToken
string
)
*
YataiClient
{
return
&
YataiClient
{
endpoint
:
endpoint
,
apiToken
:
apiToken
,
}
}
func
(
c
*
YataiClient
)
SetAuth
(
headers
CompoundAIAuthHeaders
)
{
c
.
headers
=
headers
}
func
(
c
*
YataiClient
)
getJSONReqBuilder
()
*
reqcli
.
JsonRequestBuilder
{
return
reqcli
.
NewJsonRequestBuilder
()
.
Headers
(
map
[
string
]
string
{
consts
.
YataiApiTokenHeaderName
:
c
.
apiToken
,
consts
.
NgcOrganizationHeaderName
:
c
.
headers
.
OrgId
,
consts
.
NgcUserHeaderName
:
c
.
headers
.
UserId
,
})
}
func
(
c
*
YataiClient
)
ListBentos
(
ctx
context
.
Context
,
req
schemasv1
.
ListQuerySchema
)
(
bentos
*
schemasv1
.
BentoWithRepositoryListSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
"/api/v1/bentos"
,
map
[
string
]
string
{
"start"
:
fmt
.
Sprintf
(
"%d"
,
req
.
Start
),
"count"
:
fmt
.
Sprintf
(
"%d"
,
req
.
Count
),
"q"
:
string
(
req
.
Q
),
})
bentos
=
&
schemasv1
.
BentoWithRepositoryListSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
bentos
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
ListImageBuildStatusUnsyncedBentos
(
ctx
context
.
Context
)
(
bentos
[]
*
schemasv1
.
BentoWithRepositorySchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
"/api/v1/image_build_status_unsynced_bentos"
)
bentos
=
[]
*
schemasv1
.
BentoWithRepositorySchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
&
bentos
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
UpdateBentoImageBuildStatusSyncingAt
(
ctx
context
.
Context
,
bentoRepositoryName
,
bentoVersion
string
)
(
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/bento_repositories/%s/bentos/%s/update_image_build_status_syncing_at"
,
bentoRepositoryName
,
bentoVersion
))
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"PATCH"
)
.
Url
(
url_
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
UpdateBentoImageBuildStatus
(
ctx
context
.
Context
,
bentoRepositoryName
,
bentoVersion
string
,
status
modelschemas
.
ImageBuildStatus
)
(
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/bento_repositories/%s/bentos/%s/update_image_build_status"
,
bentoRepositoryName
,
bentoVersion
))
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"PATCH"
)
.
Payload
(
map
[
string
]
string
{
"image_build_status"
:
string
(
status
),
})
.
Url
(
url_
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetBento
(
ctx
context
.
Context
,
bentoRepositoryName
,
bentoVersion
string
)
(
bento
*
schemasv1
.
BentoFullSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/bento_repositories/%s/bentos/%s"
,
bentoRepositoryName
,
bentoVersion
))
bento
=
&
schemasv1
.
BentoFullSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
bento
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetModel
(
ctx
context
.
Context
,
modelRepositoryName
,
modelVersion
string
)
(
model
*
schemasv1
.
ModelFullSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/model_repositories/%s/models/%s"
,
modelRepositoryName
,
modelVersion
))
model
=
&
schemasv1
.
ModelFullSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
model
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetBentoRepository
(
ctx
context
.
Context
,
bentoRepositoryName
string
)
(
bentoRepository
*
schemasv1
.
BentoRepositorySchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/bento_repositories/%s"
,
bentoRepositoryName
))
bentoRepository
=
&
schemasv1
.
BentoRepositorySchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
bentoRepository
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetDeployment
(
ctx
context
.
Context
,
clusterName
,
namespace
,
deploymentName
string
)
(
deployment
*
schemasv1
.
DeploymentSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/namespaces/%s/deployments/%s"
,
clusterName
,
namespace
,
deploymentName
))
deployment
=
&
schemasv1
.
DeploymentSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
deployment
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
SyncDeploymentStatus
(
ctx
context
.
Context
,
clusterName
,
namespace
,
deploymentName
string
)
(
deployment
*
schemasv1
.
DeploymentSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/namespaces/%s/deployments/%s/sync_status"
,
clusterName
,
namespace
,
deploymentName
))
deployment
=
&
schemasv1
.
DeploymentSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"POST"
)
.
Url
(
url_
)
.
Result
(
deployment
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
CreateDeployment
(
ctx
context
.
Context
,
clusterName
string
,
schema
*
schemasv1
.
CreateDeploymentSchema
)
(
deployment
*
schemasv1
.
DeploymentSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/deployments"
,
clusterName
))
deployment
=
&
schemasv1
.
DeploymentSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"POST"
)
.
Url
(
url_
)
.
Payload
(
schema
)
.
Result
(
deployment
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
UpdateDeployment
(
ctx
context
.
Context
,
clusterName
,
namespace
,
deploymentName
string
,
schema
*
schemasv1
.
UpdateDeploymentSchema
)
(
deployment
*
schemasv1
.
DeploymentSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/namespaces/%s/deployments/%s"
,
clusterName
,
namespace
,
deploymentName
))
deployment
=
&
schemasv1
.
DeploymentSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"PATCH"
)
.
Url
(
url_
)
.
Payload
(
schema
)
.
Result
(
deployment
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetDockerRegistryRef
(
ctx
context
.
Context
,
clusterName
string
)
(
registryRef
*
modelschemas
.
DockerRegistryRefSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/docker_registry_ref"
,
clusterName
))
registryRef
=
&
modelschemas
.
DockerRegistryRefSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
registryRef
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetMajorCluster
(
ctx
context
.
Context
)
(
cluster
*
schemasv1
.
ClusterFullSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
"/api/v1/current_org/major_cluster"
)
cluster
=
&
schemasv1
.
ClusterFullSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
cluster
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetVersion
(
ctx
context
.
Context
)
(
version
*
schemasv1
.
VersionSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
"/api/v1/version"
)
version
=
&
schemasv1
.
VersionSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
version
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetOrganization
(
ctx
context
.
Context
)
(
organization
*
schemasv1
.
OrganizationFullSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
"/api/v1/current_org"
)
organization
=
&
schemasv1
.
OrganizationFullSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
organization
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
GetCluster
(
ctx
context
.
Context
,
clusterName
string
)
(
cluster
*
schemasv1
.
ClusterFullSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s"
,
clusterName
))
cluster
=
&
schemasv1
.
ClusterFullSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"GET"
)
.
Url
(
url_
)
.
Result
(
cluster
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
RegisterYataiComponent
(
ctx
context
.
Context
,
clusterName
string
,
schema
*
schemasv1
.
RegisterYataiComponentSchema
)
(
yataiComponent
*
schemasv1
.
YataiComponentSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/clusters/%s/yatai_components"
,
clusterName
))
yataiComponent
=
&
schemasv1
.
YataiComponentSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"POST"
)
.
Url
(
url_
)
.
Payload
(
schema
)
.
Result
(
yataiComponent
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
PresignBentoDownloadURL
(
ctx
context
.
Context
,
bentoRepositoryName
,
bentoVersion
string
)
(
bento
*
schemasv1
.
BentoSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/bento_repositories/%s/bentos/%s/presign_download_url"
,
bentoRepositoryName
,
bentoVersion
))
bento
=
&
schemasv1
.
BentoSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"PATCH"
)
.
Url
(
url_
)
.
Result
(
bento
)
.
Do
(
ctx
)
return
}
func
(
c
*
YataiClient
)
PresignModelDownloadURL
(
ctx
context
.
Context
,
modelRepositoryName
,
modelVersion
string
)
(
model
*
schemasv1
.
ModelSchema
,
err
error
)
{
url_
:=
utils
.
UrlJoin
(
c
.
endpoint
,
fmt
.
Sprintf
(
"/api/v1/model_repositories/%s/models/%s/presign_download_url"
,
modelRepositoryName
,
modelVersion
))
model
=
&
schemasv1
.
ModelSchema
{}
_
,
err
=
c
.
getJSONReqBuilder
()
.
Method
(
"PATCH"
)
.
Url
(
url_
)
.
Result
(
model
)
.
Do
(
ctx
)
return
}
deploy/compoundai/operator/api/v1alpha1/common.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
autoscalingv2
"k8s.io/api/autoscaling/v2"
corev1
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
)
type
PVC
struct
{
// Create indicates to create a new PVC
Create
*
bool
`json:"create,omitempty"`
// Name is the name of the PVC
Name
*
string
`json:"name,omitempty"`
// StorageClass to be used for PVC creation. Leave it as empty if the PVC is already created.
StorageClass
string
`json:"storageClass,omitempty"`
// Size of the NIM cache in Gi, used during PVC creation
Size
resource
.
Quantity
`json:"size,omitempty"`
// VolumeAccessMode is the volume access mode of the PVC
VolumeAccessMode
corev1
.
PersistentVolumeAccessMode
`json:"volumeAccessMode,omitempty"`
MountPoint
*
string
`json:"mountPoint,omitempty"`
}
type
Autoscaling
struct
{
Enabled
bool
`json:"enabled,omitempty"`
MinReplicas
int
`json:"minReplicas,omitempty"`
MaxReplicas
int
`json:"maxReplicas,omitempty"`
Behavior
*
autoscalingv2
.
HorizontalPodAutoscalerBehavior
`json:"behavior,omitempty"`
Metrics
[]
autoscalingv2
.
MetricSpec
`json:"metrics,omitempty"`
}
deploy/compoundai/operator/api/v1alpha1/compoundaideployment_types.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// CompoundAIDeploymentSpec defines the desired state of CompoundAIDeployment.
type
CompoundAIDeploymentSpec
struct
{
// required
CompoundAINim
string
`json:"compoundAINim"`
// optional
// key is the name of the service defined in CompoundAINim
// value is the CompoundAINimDeployment override for that service
// if not set, the CompoundAINimDeployment will be used as is
// +kubebuilder:validation:Optional
Services
map
[
string
]
*
CompoundAINimDeployment
`json:"services,omitempty"`
}
// CompoundAIDeploymentStatus defines the observed state of CompoundAIDeployment.
type
CompoundAIDeploymentStatus
struct
{
State
string
`json:"state,omitempty"`
Conditions
[]
metav1
.
Condition
`json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// CompoundAIDeployment is the Schema for the compoundaideployments API.
type
CompoundAIDeployment
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ObjectMeta
`json:"metadata,omitempty"`
Spec
CompoundAIDeploymentSpec
`json:"spec,omitempty"`
Status
CompoundAIDeploymentStatus
`json:"status,omitempty"`
}
func
(
s
*
CompoundAIDeployment
)
SetState
(
state
string
)
{
s
.
Status
.
State
=
state
}
// +kubebuilder:object:root=true
// CompoundAIDeploymentList contains a list of CompoundAIDeployment.
type
CompoundAIDeploymentList
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ListMeta
`json:"metadata,omitempty"`
Items
[]
CompoundAIDeployment
`json:"items"`
}
func
init
()
{
SchemeBuilder
.
Register
(
&
CompoundAIDeployment
{},
&
CompoundAIDeploymentList
{})
}
deploy/compoundai/operator/api/v1alpha1/compoundainim_types.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
corev1
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// CompoundAINimSpec defines the desired state of CompoundAINim
type
CompoundAINimSpec
struct
{
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
// +kubebuilder:validation:Required
Tag
string
`json:"tag"`
// +kubebuilder:validation:Required
Image
string
`json:"image"`
ServiceName
string
`json:"serviceName,omitempty"`
Context
*
BentoContext
`json:"context,omitempty"`
Models
[]
BentoModel
`json:"models,omitempty"`
ImagePullSecrets
[]
corev1
.
LocalObjectReference
`json:"imagePullSecrets,omitempty"`
}
type
BentoContext
struct
{
BentomlVersion
string
`json:"bentomlVersion,omitempty"`
}
type
BentoModel
struct
{
// +kubebuilder:validation:Required
Tag
string
`json:"tag"`
DownloadURL
string
`json:"downloadUrl,omitempty"`
Size
*
resource
.
Quantity
`json:"size,omitempty"`
}
// CompoundAINimStatus defines the observed state of CompoundAINim
type
CompoundAINimStatus
struct
{
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Ready
bool
`json:"ready"`
}
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// CompoundAINim is the Schema for the compoundainims API
type
CompoundAINim
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ObjectMeta
`json:"metadata,omitempty"`
Spec
CompoundAINimSpec
`json:"spec,omitempty"`
Status
CompoundAINimStatus
`json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// CompoundAINimList contains a list of CompoundAINim
type
CompoundAINimList
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ListMeta
`json:"metadata,omitempty"`
Items
[]
CompoundAINim
`json:"items"`
}
func
init
()
{
SchemeBuilder
.
Register
(
&
CompoundAINim
{},
&
CompoundAINimList
{})
}
deploy/compoundai/operator/api/v1alpha1/compoundainimdeployment_types.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
compounaiCommon
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/common"
corev1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
CompoundAIDeploymentConditionTypeAvailable
=
"Available"
CompoundAIDeploymentConditionTypeCompoundAINimFound
=
"CompoundAINimFound"
CompoundAIDeploymentConditionTypeCompoundAINimRequestFound
=
"CompoundAINimRequestFound"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// CompoundAINimDeploymentSpec defines the desired state of CompoundAINimDeployment
type
CompoundAINimDeploymentSpec
struct
{
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
Annotations
map
[
string
]
string
`json:"annotations,omitempty"`
Labels
map
[
string
]
string
`json:"labels,omitempty"`
CompoundAINim
string
`json:"compoundAINim"`
// contains the name of the service
ServiceName
string
`json:"serviceName,omitempty"`
Resources
*
compounaiCommon
.
Resources
`json:"resources,omitempty"`
Autoscaling
*
Autoscaling
`json:"autoscaling,omitempty"`
Envs
[]
corev1
.
EnvVar
`json:"envs,omitempty"`
EnvFromSecret
*
string
`json:"envFromSecret,omitempty"`
PVC
*
PVC
`json:"pvc,omitempty"`
RunMode
*
RunMode
`json:"runMode,omitempty"`
ExternalServices
map
[
string
]
ExternalService
`json:"externalServices,omitempty"`
Ingress
IngressSpec
`json:"ingress,omitempty"`
MonitorExporter
*
compounaiCommon
.
MonitorExporterSpec
`json:"monitorExporter,omitempty"`
// +optional
ExtraPodMetadata
*
compounaiCommon
.
ExtraPodMetadata
`json:"extraPodMetadata,omitempty"`
// +optional
ExtraPodSpec
*
compounaiCommon
.
ExtraPodSpec
`json:"extraPodSpec,omitempty"`
LivenessProbe
*
corev1
.
Probe
`json:"livenessProbe,omitempty"`
ReadinessProbe
*
corev1
.
Probe
`json:"readinessProbe,omitempty"`
}
type
RunMode
struct
{
Standalone
*
bool
`json:"standalone,omitempty"`
}
type
ExternalService
struct
{
DeploymentSelectorKey
string
`json:"deploymentSelectorKey,omitempty"`
DeploymentSelectorValue
string
`json:"deploymentSelectorValue,omitempty"`
}
type
IngressTLSSpec
struct
{
SecretName
string
`json:"secretName,omitempty"`
}
type
IngressSpec
struct
{
Enabled
bool
`json:"enabled,omitempty"`
UseVirtualService
*
bool
`json:"useVirtualService,omitempty"`
HostPrefix
*
string
`json:"hostPrefix,omitempty"`
Annotations
map
[
string
]
string
`json:"annotations,omitempty"`
Labels
map
[
string
]
string
`json:"labels,omitempty"`
TLS
*
IngressTLSSpec
`json:"tls,omitempty"`
}
// CompoundAINimDeploymentStatus defines the observed state of CompoundAINimDeployment
type
CompoundAINimDeploymentStatus
struct
{
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Conditions
[]
metav1
.
Condition
`json:"conditions"`
PodSelector
map
[
string
]
string
`json:"podSelector,omitempty"`
}
//+genclient
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:storageversion
//+kubebuilder:printcolumn:name="Bento",type="string",JSONPath=".spec.bento",description="Bento"
//+kubebuilder:printcolumn:name="Available",type="string",JSONPath=".status.conditions[?(@.type=='Available')].status",description="Available"
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// CompoundAINimDeployment is the Schema for the compoundainimdeployments API
type
CompoundAINimDeployment
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ObjectMeta
`json:"metadata,omitempty"`
Spec
CompoundAINimDeploymentSpec
`json:"spec,omitempty"`
Status
CompoundAINimDeploymentStatus
`json:"status,omitempty"`
}
// +kubebuilder:object:root=true
// CompoundAINimDeploymentList contains a list of CompoundAINimDeployment
type
CompoundAINimDeploymentList
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ListMeta
`json:"metadata,omitempty"`
Items
[]
CompoundAINimDeployment
`json:"items"`
}
func
init
()
{
SchemeBuilder
.
Register
(
&
CompoundAINimDeployment
{},
&
CompoundAINimDeploymentList
{})
}
func
(
s
*
CompoundAINimDeploymentStatus
)
IsReady
()
bool
{
for
_
,
condition
:=
range
s
.
Conditions
{
if
condition
.
Type
==
CompoundAIDeploymentConditionTypeAvailable
&&
condition
.
Status
==
metav1
.
ConditionTrue
{
return
true
}
}
return
false
}
deploy/compoundai/operator/api/v1alpha1/compoundainimrequest_types.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
compoundaiCommon
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/common"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
corev1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
CompoundAINimRequestConditionTypeModelsSeeding
=
"ModelsSeeding"
CompoundAINimRequestConditionTypeImageBuilding
=
"ImageBuilding"
CompoundAINimRequestConditionTypeImageExists
=
"ImageExists"
CompoundAINimRequestConditionTypeImageExistsChecked
=
"ImageExistsChecked"
CompoundAINimRequestConditionTypeModelsExists
=
"ModelsExists"
CompoundAINimRequestConditionTypeCompoundAINimAvailable
=
"CompoundAINimAvailable"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized.
// CompoundAINimRequestSpec defines the desired state of CompoundAINimRequest
type
CompoundAINimRequestSpec
struct
{
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
// +kubebuilder:validation:Required
BentoTag
string
`json:"bentoTag"`
DownloadURL
string
`json:"downloadUrl,omitempty"`
ServiceName
string
`json:"serviceName,omitempty"`
Context
*
BentoContext
`json:"context,omitempty"`
Models
[]
BentoModel
`json:"models,omitempty"`
// +kubebuilder:validation:Optional
Image
string
`json:"image,omitempty"`
ImageBuildTimeout
*
modelschemas
.
Duration
`json:"imageBuildTimeout,omitempty"`
// +kubebuilder:validation:Optional
BuildArgs
[]
string
`json:"buildArgs,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodMetadata
*
compoundaiCommon
.
ExtraPodMetadata
`json:"imageBuilderExtraPodMetadata,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodSpec
*
compoundaiCommon
.
ExtraPodSpec
`json:"imageBuilderExtraPodSpec,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraContainerEnv
[]
corev1
.
EnvVar
`json:"imageBuilderExtraContainerEnv,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderContainerResources
*
corev1
.
ResourceRequirements
`json:"imageBuilderContainerResources,omitempty"`
// +kubebuilder:validation:Optional
DockerConfigJSONSecretName
string
`json:"dockerConfigJsonSecretName,omitempty"`
// +kubebuilder:validation:Optional
OCIRegistryInsecure
*
bool
`json:"ociRegistryInsecure,omitempty"`
// +kubebuilder:validation:Optional
DownloaderContainerEnvFrom
[]
corev1
.
EnvFromSource
`json:"downloaderContainerEnvFrom,omitempty"`
}
// CompoundAINimRequestStatus defines the observed state of CompoundAINimRequest
type
CompoundAINimRequestStatus
struct
{
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Conditions
[]
metav1
.
Condition
`json:"conditions"`
}
//+genclient
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:printcolumn:name="Bento-Tag",type="string",JSONPath=".spec.bentoTag",description="Bento Tag"
//+kubebuilder:printcolumn:name="Download-Url",type="string",JSONPath=".spec.downloadUrl",description="Download URL"
//+kubebuilder:printcolumn:name="Image",type="string",JSONPath=".spec.image",description="Image"
//+kubebuilder:printcolumn:name="Image-Exists",type="string",JSONPath=".status.conditions[?(@.type=='ImageExists')].status",description="Image Exists"
//+kubebuilder:printcolumn:name="Bento-Available",type="string",JSONPath=".status.conditions[?(@.type=='BentoAvailable')].status",description="Bento Available"
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// CompoundAINimRequest is the Schema for the compoundainimrequests API
type
CompoundAINimRequest
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ObjectMeta
`json:"metadata,omitempty"`
Spec
CompoundAINimRequestSpec
`json:"spec,omitempty"`
Status
CompoundAINimRequestStatus
`json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// CompoundAINimRequestList contains a list of CompoundAINimRequest
type
CompoundAINimRequestList
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ListMeta
`json:"metadata,omitempty"`
Items
[]
CompoundAINimRequest
`json:"items"`
}
func
init
()
{
SchemeBuilder
.
Register
(
&
CompoundAINimRequest
{},
&
CompoundAINimRequestList
{})
}
deploy/compoundai/operator/api/v1alpha1/groupversion_info.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Package v1alpha1 contains API Schema definitions for the nvidia.com v1alpha1 API group
// +kubebuilder:object:generate=true
// +groupName=nvidia.com
package
v1alpha1
import
(
"k8s.io/apimachinery/pkg/runtime/schema"
"sigs.k8s.io/controller-runtime/pkg/scheme"
)
var
(
// GroupVersion is group version used to register these objects
GroupVersion
=
schema
.
GroupVersion
{
Group
:
"nvidia.com"
,
Version
:
"v1alpha1"
}
// SchemeBuilder is used to add go types to the GroupVersionKind scheme
SchemeBuilder
=
&
scheme
.
Builder
{
GroupVersion
:
GroupVersion
}
// AddToScheme adds the types in this group-version to the given scheme.
AddToScheme
=
SchemeBuilder
.
AddToScheme
)
deploy/compoundai/operator/api/v1alpha1/shared.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
v1alpha1
import
(
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
type
BaseStatus
struct
{
Version
string
`json:"version,omitempty"`
State
string
`json:"state,omitempty"`
Conditions
[]
metav1
.
Condition
`json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}
func
(
b
*
BaseStatus
)
GetConditions
()
[]
metav1
.
Condition
{
return
b
.
Conditions
}
func
(
b
*
BaseStatus
)
SetConditions
(
conditions
[]
metav1
.
Condition
)
{
b
.
Conditions
=
conditions
}
type
BaseCRD
struct
{
Status
*
BaseStatus
`json:"status,omitempty"`
}
func
(
b
*
BaseCRD
)
GetStatusConditions
()
[]
metav1
.
Condition
{
if
b
.
Status
!=
nil
{
return
b
.
Status
.
GetConditions
()
}
return
nil
}
func
(
b
*
BaseCRD
)
SetStatusConditions
(
conditions
[]
metav1
.
Condition
)
{
status
:=
b
.
Status
if
status
==
nil
{
status
=
&
BaseStatus
{}
b
.
Status
=
status
}
status
.
Conditions
=
conditions
}
func
(
b
*
BaseCRD
)
GetVersion
()
string
{
if
b
.
Status
!=
nil
{
return
b
.
Status
.
Version
}
return
""
}
func
(
b
*
BaseCRD
)
SetVersion
(
version
string
)
{
status
:=
b
.
Status
if
status
==
nil
{
status
=
&
BaseStatus
{}
b
.
Status
=
status
}
status
.
Version
=
version
}
func
(
b
*
BaseCRD
)
SetState
(
state
string
)
{
status
:=
b
.
Status
if
status
==
nil
{
status
=
&
BaseStatus
{}
b
.
Status
=
status
}
status
.
State
=
state
}
func
(
n
*
BaseCRD
)
GetHelmVersionMatrix
()
map
[
string
]
string
{
return
nil
}
deploy/compoundai/operator/api/v1alpha1/zz_generated.deepcopy.go
0 → 100644
View file @
5ddc7f7d
//go:build !ignore_autogenerated
/*
Copyright 2024.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
// Code generated by controller-gen. DO NOT EDIT.
package
v1alpha1
import
(
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/common"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
"k8s.io/api/autoscaling/v2"
corev1
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1"
runtime
"k8s.io/apimachinery/pkg/runtime"
)
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
Autoscaling
)
DeepCopyInto
(
out
*
Autoscaling
)
{
*
out
=
*
in
if
in
.
Behavior
!=
nil
{
in
,
out
:=
&
in
.
Behavior
,
&
out
.
Behavior
*
out
=
new
(
v2
.
HorizontalPodAutoscalerBehavior
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
Metrics
!=
nil
{
in
,
out
:=
&
in
.
Metrics
,
&
out
.
Metrics
*
out
=
make
([]
v2
.
MetricSpec
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Autoscaling.
func
(
in
*
Autoscaling
)
DeepCopy
()
*
Autoscaling
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
Autoscaling
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
BaseCRD
)
DeepCopyInto
(
out
*
BaseCRD
)
{
*
out
=
*
in
if
in
.
Status
!=
nil
{
in
,
out
:=
&
in
.
Status
,
&
out
.
Status
*
out
=
new
(
BaseStatus
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BaseCRD.
func
(
in
*
BaseCRD
)
DeepCopy
()
*
BaseCRD
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
BaseCRD
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
BaseStatus
)
DeepCopyInto
(
out
*
BaseStatus
)
{
*
out
=
*
in
if
in
.
Conditions
!=
nil
{
in
,
out
:=
&
in
.
Conditions
,
&
out
.
Conditions
*
out
=
make
([]
v1
.
Condition
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BaseStatus.
func
(
in
*
BaseStatus
)
DeepCopy
()
*
BaseStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
BaseStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
BentoContext
)
DeepCopyInto
(
out
*
BentoContext
)
{
*
out
=
*
in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BentoContext.
func
(
in
*
BentoContext
)
DeepCopy
()
*
BentoContext
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
BentoContext
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
BentoModel
)
DeepCopyInto
(
out
*
BentoModel
)
{
*
out
=
*
in
if
in
.
Size
!=
nil
{
in
,
out
:=
&
in
.
Size
,
&
out
.
Size
x
:=
(
*
in
)
.
DeepCopy
()
*
out
=
&
x
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BentoModel.
func
(
in
*
BentoModel
)
DeepCopy
()
*
BentoModel
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
BentoModel
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAIDeployment
)
DeepCopyInto
(
out
*
CompoundAIDeployment
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ObjectMeta
.
DeepCopyInto
(
&
out
.
ObjectMeta
)
in
.
Spec
.
DeepCopyInto
(
&
out
.
Spec
)
in
.
Status
.
DeepCopyInto
(
&
out
.
Status
)
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAIDeployment.
func
(
in
*
CompoundAIDeployment
)
DeepCopy
()
*
CompoundAIDeployment
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAIDeployment
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAIDeployment
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAIDeploymentList
)
DeepCopyInto
(
out
*
CompoundAIDeploymentList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ListMeta
.
DeepCopyInto
(
&
out
.
ListMeta
)
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
CompoundAIDeployment
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAIDeploymentList.
func
(
in
*
CompoundAIDeploymentList
)
DeepCopy
()
*
CompoundAIDeploymentList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAIDeploymentList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAIDeploymentList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAIDeploymentSpec
)
DeepCopyInto
(
out
*
CompoundAIDeploymentSpec
)
{
*
out
=
*
in
if
in
.
Services
!=
nil
{
in
,
out
:=
&
in
.
Services
,
&
out
.
Services
*
out
=
make
(
map
[
string
]
*
CompoundAINimDeployment
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
var
outVal
*
CompoundAINimDeployment
if
val
==
nil
{
(
*
out
)[
key
]
=
nil
}
else
{
inVal
:=
(
*
in
)[
key
]
in
,
out
:=
&
inVal
,
&
outVal
*
out
=
new
(
CompoundAINimDeployment
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
(
*
out
)[
key
]
=
outVal
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAIDeploymentSpec.
func
(
in
*
CompoundAIDeploymentSpec
)
DeepCopy
()
*
CompoundAIDeploymentSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAIDeploymentSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAIDeploymentStatus
)
DeepCopyInto
(
out
*
CompoundAIDeploymentStatus
)
{
*
out
=
*
in
if
in
.
Conditions
!=
nil
{
in
,
out
:=
&
in
.
Conditions
,
&
out
.
Conditions
*
out
=
make
([]
v1
.
Condition
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAIDeploymentStatus.
func
(
in
*
CompoundAIDeploymentStatus
)
DeepCopy
()
*
CompoundAIDeploymentStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAIDeploymentStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINim
)
DeepCopyInto
(
out
*
CompoundAINim
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ObjectMeta
.
DeepCopyInto
(
&
out
.
ObjectMeta
)
in
.
Spec
.
DeepCopyInto
(
&
out
.
Spec
)
out
.
Status
=
in
.
Status
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINim.
func
(
in
*
CompoundAINim
)
DeepCopy
()
*
CompoundAINim
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINim
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINim
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimDeployment
)
DeepCopyInto
(
out
*
CompoundAINimDeployment
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ObjectMeta
.
DeepCopyInto
(
&
out
.
ObjectMeta
)
in
.
Spec
.
DeepCopyInto
(
&
out
.
Spec
)
in
.
Status
.
DeepCopyInto
(
&
out
.
Status
)
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimDeployment.
func
(
in
*
CompoundAINimDeployment
)
DeepCopy
()
*
CompoundAINimDeployment
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimDeployment
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINimDeployment
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimDeploymentList
)
DeepCopyInto
(
out
*
CompoundAINimDeploymentList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ListMeta
.
DeepCopyInto
(
&
out
.
ListMeta
)
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
CompoundAINimDeployment
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimDeploymentList.
func
(
in
*
CompoundAINimDeploymentList
)
DeepCopy
()
*
CompoundAINimDeploymentList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimDeploymentList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINimDeploymentList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimDeploymentSpec
)
DeepCopyInto
(
out
*
CompoundAINimDeploymentSpec
)
{
*
out
=
*
in
if
in
.
Annotations
!=
nil
{
in
,
out
:=
&
in
.
Annotations
,
&
out
.
Annotations
*
out
=
make
(
map
[
string
]
string
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
if
in
.
Labels
!=
nil
{
in
,
out
:=
&
in
.
Labels
,
&
out
.
Labels
*
out
=
make
(
map
[
string
]
string
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
if
in
.
Resources
!=
nil
{
in
,
out
:=
&
in
.
Resources
,
&
out
.
Resources
*
out
=
new
(
common
.
Resources
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
Autoscaling
!=
nil
{
in
,
out
:=
&
in
.
Autoscaling
,
&
out
.
Autoscaling
*
out
=
new
(
Autoscaling
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
Envs
!=
nil
{
in
,
out
:=
&
in
.
Envs
,
&
out
.
Envs
*
out
=
make
([]
corev1
.
EnvVar
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
if
in
.
EnvFromSecret
!=
nil
{
in
,
out
:=
&
in
.
EnvFromSecret
,
&
out
.
EnvFromSecret
*
out
=
new
(
string
)
**
out
=
**
in
}
if
in
.
PVC
!=
nil
{
in
,
out
:=
&
in
.
PVC
,
&
out
.
PVC
*
out
=
new
(
PVC
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
RunMode
!=
nil
{
in
,
out
:=
&
in
.
RunMode
,
&
out
.
RunMode
*
out
=
new
(
RunMode
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ExternalServices
!=
nil
{
in
,
out
:=
&
in
.
ExternalServices
,
&
out
.
ExternalServices
*
out
=
make
(
map
[
string
]
ExternalService
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
in
.
Ingress
.
DeepCopyInto
(
&
out
.
Ingress
)
if
in
.
MonitorExporter
!=
nil
{
in
,
out
:=
&
in
.
MonitorExporter
,
&
out
.
MonitorExporter
*
out
=
new
(
common
.
MonitorExporterSpec
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ExtraPodMetadata
!=
nil
{
in
,
out
:=
&
in
.
ExtraPodMetadata
,
&
out
.
ExtraPodMetadata
*
out
=
new
(
common
.
ExtraPodMetadata
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ExtraPodSpec
!=
nil
{
in
,
out
:=
&
in
.
ExtraPodSpec
,
&
out
.
ExtraPodSpec
*
out
=
new
(
common
.
ExtraPodSpec
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
LivenessProbe
!=
nil
{
in
,
out
:=
&
in
.
LivenessProbe
,
&
out
.
LivenessProbe
*
out
=
new
(
corev1
.
Probe
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ReadinessProbe
!=
nil
{
in
,
out
:=
&
in
.
ReadinessProbe
,
&
out
.
ReadinessProbe
*
out
=
new
(
corev1
.
Probe
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimDeploymentSpec.
func
(
in
*
CompoundAINimDeploymentSpec
)
DeepCopy
()
*
CompoundAINimDeploymentSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimDeploymentSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimDeploymentStatus
)
DeepCopyInto
(
out
*
CompoundAINimDeploymentStatus
)
{
*
out
=
*
in
if
in
.
Conditions
!=
nil
{
in
,
out
:=
&
in
.
Conditions
,
&
out
.
Conditions
*
out
=
make
([]
v1
.
Condition
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
if
in
.
PodSelector
!=
nil
{
in
,
out
:=
&
in
.
PodSelector
,
&
out
.
PodSelector
*
out
=
make
(
map
[
string
]
string
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimDeploymentStatus.
func
(
in
*
CompoundAINimDeploymentStatus
)
DeepCopy
()
*
CompoundAINimDeploymentStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimDeploymentStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimList
)
DeepCopyInto
(
out
*
CompoundAINimList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ListMeta
.
DeepCopyInto
(
&
out
.
ListMeta
)
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
CompoundAINim
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimList.
func
(
in
*
CompoundAINimList
)
DeepCopy
()
*
CompoundAINimList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINimList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimRequest
)
DeepCopyInto
(
out
*
CompoundAINimRequest
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ObjectMeta
.
DeepCopyInto
(
&
out
.
ObjectMeta
)
in
.
Spec
.
DeepCopyInto
(
&
out
.
Spec
)
in
.
Status
.
DeepCopyInto
(
&
out
.
Status
)
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimRequest.
func
(
in
*
CompoundAINimRequest
)
DeepCopy
()
*
CompoundAINimRequest
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimRequest
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINimRequest
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimRequestList
)
DeepCopyInto
(
out
*
CompoundAINimRequestList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ListMeta
.
DeepCopyInto
(
&
out
.
ListMeta
)
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
CompoundAINimRequest
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimRequestList.
func
(
in
*
CompoundAINimRequestList
)
DeepCopy
()
*
CompoundAINimRequestList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimRequestList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
CompoundAINimRequestList
)
DeepCopyObject
()
runtime
.
Object
{
if
c
:=
in
.
DeepCopy
();
c
!=
nil
{
return
c
}
return
nil
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimRequestSpec
)
DeepCopyInto
(
out
*
CompoundAINimRequestSpec
)
{
*
out
=
*
in
if
in
.
Context
!=
nil
{
in
,
out
:=
&
in
.
Context
,
&
out
.
Context
*
out
=
new
(
BentoContext
)
**
out
=
**
in
}
if
in
.
Models
!=
nil
{
in
,
out
:=
&
in
.
Models
,
&
out
.
Models
*
out
=
make
([]
BentoModel
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
if
in
.
ImageBuildTimeout
!=
nil
{
in
,
out
:=
&
in
.
ImageBuildTimeout
,
&
out
.
ImageBuildTimeout
*
out
=
new
(
modelschemas
.
Duration
)
**
out
=
**
in
}
if
in
.
BuildArgs
!=
nil
{
in
,
out
:=
&
in
.
BuildArgs
,
&
out
.
BuildArgs
*
out
=
make
([]
string
,
len
(
*
in
))
copy
(
*
out
,
*
in
)
}
if
in
.
ImageBuilderExtraPodMetadata
!=
nil
{
in
,
out
:=
&
in
.
ImageBuilderExtraPodMetadata
,
&
out
.
ImageBuilderExtraPodMetadata
*
out
=
new
(
common
.
ExtraPodMetadata
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ImageBuilderExtraPodSpec
!=
nil
{
in
,
out
:=
&
in
.
ImageBuilderExtraPodSpec
,
&
out
.
ImageBuilderExtraPodSpec
*
out
=
new
(
common
.
ExtraPodSpec
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
ImageBuilderExtraContainerEnv
!=
nil
{
in
,
out
:=
&
in
.
ImageBuilderExtraContainerEnv
,
&
out
.
ImageBuilderExtraContainerEnv
*
out
=
make
([]
corev1
.
EnvVar
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
if
in
.
ImageBuilderContainerResources
!=
nil
{
in
,
out
:=
&
in
.
ImageBuilderContainerResources
,
&
out
.
ImageBuilderContainerResources
*
out
=
new
(
corev1
.
ResourceRequirements
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
OCIRegistryInsecure
!=
nil
{
in
,
out
:=
&
in
.
OCIRegistryInsecure
,
&
out
.
OCIRegistryInsecure
*
out
=
new
(
bool
)
**
out
=
**
in
}
if
in
.
DownloaderContainerEnvFrom
!=
nil
{
in
,
out
:=
&
in
.
DownloaderContainerEnvFrom
,
&
out
.
DownloaderContainerEnvFrom
*
out
=
make
([]
corev1
.
EnvFromSource
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimRequestSpec.
func
(
in
*
CompoundAINimRequestSpec
)
DeepCopy
()
*
CompoundAINimRequestSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimRequestSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimRequestStatus
)
DeepCopyInto
(
out
*
CompoundAINimRequestStatus
)
{
*
out
=
*
in
if
in
.
Conditions
!=
nil
{
in
,
out
:=
&
in
.
Conditions
,
&
out
.
Conditions
*
out
=
make
([]
v1
.
Condition
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimRequestStatus.
func
(
in
*
CompoundAINimRequestStatus
)
DeepCopy
()
*
CompoundAINimRequestStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimRequestStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimSpec
)
DeepCopyInto
(
out
*
CompoundAINimSpec
)
{
*
out
=
*
in
if
in
.
Context
!=
nil
{
in
,
out
:=
&
in
.
Context
,
&
out
.
Context
*
out
=
new
(
BentoContext
)
**
out
=
**
in
}
if
in
.
Models
!=
nil
{
in
,
out
:=
&
in
.
Models
,
&
out
.
Models
*
out
=
make
([]
BentoModel
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
if
in
.
ImagePullSecrets
!=
nil
{
in
,
out
:=
&
in
.
ImagePullSecrets
,
&
out
.
ImagePullSecrets
*
out
=
make
([]
corev1
.
LocalObjectReference
,
len
(
*
in
))
copy
(
*
out
,
*
in
)
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimSpec.
func
(
in
*
CompoundAINimSpec
)
DeepCopy
()
*
CompoundAINimSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
CompoundAINimStatus
)
DeepCopyInto
(
out
*
CompoundAINimStatus
)
{
*
out
=
*
in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CompoundAINimStatus.
func
(
in
*
CompoundAINimStatus
)
DeepCopy
()
*
CompoundAINimStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
CompoundAINimStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
ExternalService
)
DeepCopyInto
(
out
*
ExternalService
)
{
*
out
=
*
in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ExternalService.
func
(
in
*
ExternalService
)
DeepCopy
()
*
ExternalService
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
ExternalService
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
IngressSpec
)
DeepCopyInto
(
out
*
IngressSpec
)
{
*
out
=
*
in
if
in
.
UseVirtualService
!=
nil
{
in
,
out
:=
&
in
.
UseVirtualService
,
&
out
.
UseVirtualService
*
out
=
new
(
bool
)
**
out
=
**
in
}
if
in
.
HostPrefix
!=
nil
{
in
,
out
:=
&
in
.
HostPrefix
,
&
out
.
HostPrefix
*
out
=
new
(
string
)
**
out
=
**
in
}
if
in
.
Annotations
!=
nil
{
in
,
out
:=
&
in
.
Annotations
,
&
out
.
Annotations
*
out
=
make
(
map
[
string
]
string
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
if
in
.
Labels
!=
nil
{
in
,
out
:=
&
in
.
Labels
,
&
out
.
Labels
*
out
=
make
(
map
[
string
]
string
,
len
(
*
in
))
for
key
,
val
:=
range
*
in
{
(
*
out
)[
key
]
=
val
}
}
if
in
.
TLS
!=
nil
{
in
,
out
:=
&
in
.
TLS
,
&
out
.
TLS
*
out
=
new
(
IngressTLSSpec
)
**
out
=
**
in
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressSpec.
func
(
in
*
IngressSpec
)
DeepCopy
()
*
IngressSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
IngressSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
IngressTLSSpec
)
DeepCopyInto
(
out
*
IngressTLSSpec
)
{
*
out
=
*
in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IngressTLSSpec.
func
(
in
*
IngressTLSSpec
)
DeepCopy
()
*
IngressTLSSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
IngressTLSSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
PVC
)
DeepCopyInto
(
out
*
PVC
)
{
*
out
=
*
in
if
in
.
Create
!=
nil
{
in
,
out
:=
&
in
.
Create
,
&
out
.
Create
*
out
=
new
(
bool
)
**
out
=
**
in
}
if
in
.
Name
!=
nil
{
in
,
out
:=
&
in
.
Name
,
&
out
.
Name
*
out
=
new
(
string
)
**
out
=
**
in
}
out
.
Size
=
in
.
Size
.
DeepCopy
()
if
in
.
MountPoint
!=
nil
{
in
,
out
:=
&
in
.
MountPoint
,
&
out
.
MountPoint
*
out
=
new
(
string
)
**
out
=
**
in
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PVC.
func
(
in
*
PVC
)
DeepCopy
()
*
PVC
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
PVC
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
RunMode
)
DeepCopyInto
(
out
*
RunMode
)
{
*
out
=
*
in
if
in
.
Standalone
!=
nil
{
in
,
out
:=
&
in
.
Standalone
,
&
out
.
Standalone
*
out
=
new
(
bool
)
**
out
=
**
in
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new RunMode.
func
(
in
*
RunMode
)
DeepCopy
()
*
RunMode
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
RunMode
)
in
.
DeepCopyInto
(
out
)
return
out
}
deploy/compoundai/operator/cmd/main.go
0 → 100644
View file @
5ddc7f7d
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
main
import
(
"crypto/tls"
"flag"
"os"
// Import all Kubernetes client auth plugins (e.g. Azure, GCP, OIDC, etc.)
// to ensure that exec-entrypoint and run can make use of them.
_
"k8s.io/client-go/plugin/pkg/client/auth"
"sigs.k8s.io/controller-runtime/pkg/cache"
"k8s.io/apimachinery/pkg/runtime"
utilruntime
"k8s.io/apimachinery/pkg/util/runtime"
clientgoscheme
"k8s.io/client-go/kubernetes/scheme"
ctrl
"sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/healthz"
"sigs.k8s.io/controller-runtime/pkg/log/zap"
metricsserver
"sigs.k8s.io/controller-runtime/pkg/metrics/server"
"sigs.k8s.io/controller-runtime/pkg/webhook"
nvidiacomv1alpha1
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/v1alpha1"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/internal/controller"
commonController
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/internal/controller_common"
istioclientsetscheme
"istio.io/client-go/pkg/clientset/versioned/scheme"
//+kubebuilder:scaffold:imports
)
var
(
scheme
=
runtime
.
NewScheme
()
setupLog
=
ctrl
.
Log
.
WithName
(
"setup"
)
)
func
init
()
{
utilruntime
.
Must
(
clientgoscheme
.
AddToScheme
(
scheme
))
utilruntime
.
Must
(
nvidiacomv1alpha1
.
AddToScheme
(
scheme
))
//+kubebuilder:scaffold:scheme
}
func
main
()
{
var
metricsAddr
string
var
enableLeaderElection
bool
var
probeAddr
string
var
secureMetrics
bool
var
enableHTTP2
bool
var
restrictedNamespace
string
var
leaderElectionID
string
var
natsAddr
string
var
etcdAddr
string
flag
.
StringVar
(
&
metricsAddr
,
"metrics-bind-address"
,
":8080"
,
"The address the metric endpoint binds to."
)
flag
.
StringVar
(
&
probeAddr
,
"health-probe-bind-address"
,
":8081"
,
"The address the probe endpoint binds to."
)
flag
.
BoolVar
(
&
enableLeaderElection
,
"leader-elect"
,
false
,
"Enable leader election for controller manager. "
+
"Enabling this will ensure there is only one active controller manager."
)
flag
.
BoolVar
(
&
secureMetrics
,
"metrics-secure"
,
false
,
"If set the metrics endpoint is served securely"
)
flag
.
BoolVar
(
&
enableHTTP2
,
"enable-http2"
,
false
,
"If set, HTTP/2 will be enabled for the metrics and webhook servers"
)
flag
.
StringVar
(
&
restrictedNamespace
,
"restrictedNamespace"
,
""
,
"Enable resources filtering, only the resources belonging to the given namespace will be handled."
)
flag
.
StringVar
(
&
leaderElectionID
,
"leader-election-id"
,
""
,
"Leader election id"
+
"Id to use for the leader election."
)
flag
.
StringVar
(
&
natsAddr
,
"natsAddr"
,
""
,
"address of the NATS server"
)
flag
.
StringVar
(
&
etcdAddr
,
"etcdAddr"
,
""
,
"address of the etcd server"
)
opts
:=
zap
.
Options
{
Development
:
true
,
}
opts
.
BindFlags
(
flag
.
CommandLine
)
flag
.
Parse
()
utilruntime
.
Must
(
istioclientsetscheme
.
AddToScheme
(
scheme
))
ctrlConfig
:=
commonController
.
Config
{
RestrictedNamespace
:
restrictedNamespace
,
}
ctrl
.
SetLogger
(
zap
.
New
(
zap
.
UseFlagOptions
(
&
opts
)))
// if the enable-http2 flag is false (the default), http/2 should be disabled
// due to its vulnerabilities. More specifically, disabling http/2 will
// prevent from being vulnerable to the HTTP/2 Stream Cancellation and
// Rapid Reset CVEs. For more information see:
// - https://github.com/advisories/GHSA-qppj-fm5r-hxr3
// - https://github.com/advisories/GHSA-4374-p667-p6c8
disableHTTP2
:=
func
(
c
*
tls
.
Config
)
{
setupLog
.
Info
(
"disabling http/2"
)
c
.
NextProtos
=
[]
string
{
"http/1.1"
}
}
tlsOpts
:=
[]
func
(
*
tls
.
Config
){}
if
!
enableHTTP2
{
tlsOpts
=
append
(
tlsOpts
,
disableHTTP2
)
}
webhookServer
:=
webhook
.
NewServer
(
webhook
.
Options
{
TLSOpts
:
tlsOpts
,
})
mgrOpts
:=
ctrl
.
Options
{
Scheme
:
scheme
,
Metrics
:
metricsserver
.
Options
{
BindAddress
:
metricsAddr
,
SecureServing
:
secureMetrics
,
TLSOpts
:
tlsOpts
,
},
WebhookServer
:
webhookServer
,
HealthProbeBindAddress
:
probeAddr
,
LeaderElection
:
enableLeaderElection
,
LeaderElectionID
:
leaderElectionID
,
// LeaderElectionReleaseOnCancel defines if the leader should step down voluntarily
// when the Manager ends. This requires the binary to immediately end when the
// Manager is stopped, otherwise, this setting is unsafe. Setting this significantly
// speeds up voluntary leader transitions as the new leader don't have to wait
// LeaseDuration time first.
//
// In the default scaffold provided, the program ends immediately after
// the manager stops, so would be fine to enable this option. However,
// if you are doing or is intended to do any operation such as perform cleanups
// after the manager stops then its usage might be unsafe.
// LeaderElectionReleaseOnCancel: true,
}
if
restrictedNamespace
!=
""
{
mgrOpts
.
Cache
.
DefaultNamespaces
=
map
[
string
]
cache
.
Config
{
restrictedNamespace
:
{},
}
}
mgr
,
err
:=
ctrl
.
NewManager
(
ctrl
.
GetConfigOrDie
(),
mgrOpts
)
if
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to start manager"
)
os
.
Exit
(
1
)
}
if
err
=
(
&
controller
.
CompoundAINimDeploymentReconciler
{
Client
:
mgr
.
GetClient
(),
Scheme
:
mgr
.
GetScheme
(),
Recorder
:
mgr
.
GetEventRecorderFor
(
"yatai-deployment"
),
Config
:
ctrlConfig
,
NatsAddr
:
natsAddr
,
EtcdAddr
:
etcdAddr
,
})
.
SetupWithManager
(
mgr
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"CompoundAINimDeployment"
)
os
.
Exit
(
1
)
}
if
err
=
(
&
controller
.
CompoundAINimRequestReconciler
{
Client
:
mgr
.
GetClient
(),
Scheme
:
mgr
.
GetScheme
(),
Recorder
:
mgr
.
GetEventRecorderFor
(
"yatai-image-builder"
),
Config
:
ctrlConfig
,
})
.
SetupWithManager
(
mgr
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"CompoundAINimRequest"
)
os
.
Exit
(
1
)
}
if
err
=
(
&
controller
.
CompoundAIDeploymentReconciler
{
Client
:
mgr
.
GetClient
(),
Scheme
:
mgr
.
GetScheme
(),
Recorder
:
mgr
.
GetEventRecorderFor
(
"compoundaideployment"
),
Config
:
ctrlConfig
,
})
.
SetupWithManager
(
mgr
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"CompoundAIDeployment"
)
os
.
Exit
(
1
)
}
//+kubebuilder:scaffold:builder
if
err
:=
mgr
.
AddHealthzCheck
(
"healthz"
,
healthz
.
Ping
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to set up health check"
)
os
.
Exit
(
1
)
}
if
err
:=
mgr
.
AddReadyzCheck
(
"readyz"
,
healthz
.
Ping
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to set up ready check"
)
os
.
Exit
(
1
)
}
setupLog
.
Info
(
"starting manager"
)
if
err
:=
mgr
.
Start
(
ctrl
.
SetupSignalHandler
());
err
!=
nil
{
setupLog
.
Error
(
err
,
"problem running manager"
)
os
.
Exit
(
1
)
}
}
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundaideployments.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion
:
apiextensions.k8s.io/v1
kind
:
CustomResourceDefinition
metadata
:
annotations
:
controller-gen.kubebuilder.io/version
:
v0.16.4
name
:
compoundaideployments.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
CompoundAIDeployment
listKind
:
CompoundAIDeploymentList
plural
:
compoundaideployments
singular
:
compoundaideployment
scope
:
Namespaced
versions
:
-
name
:
v1alpha1
schema
:
openAPIV3Schema
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
metadata
:
type
:
object
spec
:
properties
:
compoundAINim
:
type
:
string
services
:
additionalProperties
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
metadata
:
type
:
object
spec
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
autoscaling
:
properties
:
behavior
:
properties
:
scaleDown
:
properties
:
policies
:
items
:
properties
:
periodSeconds
:
format
:
int32
type
:
integer
type
:
type
:
string
value
:
format
:
int32
type
:
integer
required
:
-
periodSeconds
-
type
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
selectPolicy
:
type
:
string
stabilizationWindowSeconds
:
format
:
int32
type
:
integer
type
:
object
scaleUp
:
properties
:
policies
:
items
:
properties
:
periodSeconds
:
format
:
int32
type
:
integer
type
:
type
:
string
value
:
format
:
int32
type
:
integer
required
:
-
periodSeconds
-
type
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
selectPolicy
:
type
:
string
stabilizationWindowSeconds
:
format
:
int32
type
:
integer
type
:
object
type
:
object
enabled
:
type
:
boolean
maxReplicas
:
type
:
integer
metrics
:
items
:
properties
:
containerResource
:
properties
:
container
:
type
:
string
name
:
type
:
string
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
container
-
name
-
target
type
:
object
external
:
properties
:
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
metric
-
target
type
:
object
object
:
properties
:
describedObject
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
required
:
-
kind
-
name
type
:
object
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
describedObject
-
metric
-
target
type
:
object
pods
:
properties
:
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
metric
-
target
type
:
object
resource
:
properties
:
name
:
type
:
string
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
name
-
target
type
:
object
type
:
type
:
string
required
:
-
type
type
:
object
type
:
array
minReplicas
:
type
:
integer
type
:
object
compoundAINim
:
type
:
string
envFromSecret
:
type
:
string
envs
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
externalServices
:
additionalProperties
:
properties
:
deploymentSelectorKey
:
type
:
string
deploymentSelectorValue
:
type
:
string
type
:
object
type
:
object
extraPodMetadata
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
labels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
extraPodSpec
:
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
weight
:
format
:
int32
type
:
integer
required
:
-
preference
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
properties
:
nodeSelectorTerms
:
items
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
nodeSelectorTerms
type
:
object
x-kubernetes-map-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
type
:
object
containers
:
items
:
properties
:
args
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
env
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
envFrom
:
items
:
properties
:
configMapRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
prefix
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
image
:
type
:
string
imagePullPolicy
:
type
:
string
lifecycle
:
properties
:
postStart
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
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
:
default
:
TCP
type
:
string
required
:
-
containerPort
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
resizePolicy
:
items
:
properties
:
resourceName
:
type
:
string
restartPolicy
:
type
:
string
required
:
-
resourceName
-
restartPolicy
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
resources
:
properties
:
claims
:
items
:
properties
:
name
:
type
:
string
request
:
type
:
string
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
restartPolicy
:
type
:
string
securityContext
:
properties
:
allowPrivilegeEscalation
:
type
:
boolean
appArmorProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
capabilities
:
properties
:
add
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
drop
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
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
seccompProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
windowsOptions
:
properties
:
gmsaCredentialSpec
:
type
:
string
gmsaCredentialSpecName
:
type
:
string
hostProcess
:
type
:
boolean
runAsUserName
:
type
:
string
type
:
object
type
:
object
startupProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
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
x-kubernetes-list-map-keys
:
-
devicePath
x-kubernetes-list-type
:
map
volumeMounts
:
items
:
properties
:
mountPath
:
type
:
string
mountPropagation
:
type
:
string
name
:
type
:
string
readOnly
:
type
:
boolean
recursiveReadOnly
:
type
:
string
subPath
:
type
:
string
subPathExpr
:
type
:
string
required
:
-
mountPath
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
mountPath
x-kubernetes-list-type
:
map
workingDir
:
type
:
string
required
:
-
name
type
:
object
type
:
array
nodeSelector
:
additionalProperties
:
type
:
string
type
:
object
priorityClassName
:
type
:
string
schedulerName
:
type
:
string
serviceAccountName
:
type
:
string
tolerations
:
items
:
properties
:
effect
:
type
:
string
key
:
type
:
string
operator
:
type
:
string
tolerationSeconds
:
format
:
int64
type
:
integer
value
:
type
:
string
type
:
object
type
:
array
topologySpreadConstraints
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
maxSkew
:
format
:
int32
type
:
integer
minDomains
:
format
:
int32
type
:
integer
nodeAffinityPolicy
:
type
:
string
nodeTaintsPolicy
:
type
:
string
topologyKey
:
type
:
string
whenUnsatisfiable
:
type
:
string
required
:
-
maxSkew
-
topologyKey
-
whenUnsatisfiable
type
:
object
type
:
array
type
:
object
ingress
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
enabled
:
type
:
boolean
hostPrefix
:
type
:
string
labels
:
additionalProperties
:
type
:
string
type
:
object
tls
:
properties
:
secretName
:
type
:
string
type
:
object
useVirtualService
:
type
:
boolean
type
:
object
labels
:
additionalProperties
:
type
:
string
type
:
object
livenessProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
monitorExporter
:
properties
:
enabled
:
type
:
boolean
mounts
:
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
:
default
:
ext4
type
:
string
kind
:
type
:
string
readOnly
:
default
:
false
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
x-kubernetes-list-type
:
atomic
path
:
type
:
string
readOnly
:
type
:
boolean
secretFile
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
user
:
type
:
string
required
:
-
monitors
type
:
object
cinder
:
properties
:
fsType
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
csi
:
properties
:
driver
:
type
:
string
fsType
:
type
:
string
nodePublishSecretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
readOnly
:
type
:
boolean
volumeAttributes
:
additionalProperties
:
type
:
string
type
:
object
required
:
-
driver
type
:
object
downwardAPI
:
properties
:
defaultMode
:
format
:
int32
type
:
integer
items
:
items
:
properties
:
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
emptyDir
:
properties
:
medium
:
type
:
string
sizeLimit
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
ephemeral
:
properties
:
volumeClaimTemplate
:
properties
:
metadata
:
type
:
object
spec
:
properties
:
accessModes
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
dataSource
:
properties
:
apiGroup
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
required
:
-
kind
-
name
type
:
object
x-kubernetes-map-type
:
atomic
dataSourceRef
:
properties
:
apiGroup
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
namespace
:
type
:
string
required
:
-
kind
-
name
type
:
object
resources
:
properties
:
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
storageClassName
:
type
:
string
volumeAttributesClassName
:
type
:
string
volumeMode
:
type
:
string
volumeName
:
type
:
string
type
:
object
required
:
-
spec
type
:
object
type
:
object
fc
:
properties
:
fsType
:
type
:
string
lun
:
format
:
int32
type
:
integer
readOnly
:
type
:
boolean
targetWWNs
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
wwids
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
flexVolume
:
properties
:
driver
:
type
:
string
fsType
:
type
:
string
options
:
additionalProperties
:
type
:
string
type
:
object
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
image
:
properties
:
pullPolicy
:
type
:
string
reference
:
type
:
string
type
:
object
iscsi
:
properties
:
chapAuthDiscovery
:
type
:
boolean
chapAuthSession
:
type
:
boolean
fsType
:
type
:
string
initiatorName
:
type
:
string
iqn
:
type
:
string
iscsiInterface
:
default
:
default
type
:
string
lun
:
format
:
int32
type
:
integer
portals
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
targetPortal
:
type
:
string
required
:
-
iqn
-
lun
-
targetPortal
type
:
object
nfs
:
properties
:
path
:
type
:
string
readOnly
:
type
:
boolean
server
:
type
:
string
required
:
-
path
-
server
type
:
object
path
:
type
:
string
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
:
clusterTrustBundle
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
name
:
type
:
string
optional
:
type
:
boolean
path
:
type
:
string
signerName
:
type
:
string
required
:
-
path
type
:
object
configMap
:
properties
:
items
:
items
:
properties
:
key
:
type
:
string
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
required
:
-
key
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
downwardAPI
:
properties
:
items
:
items
:
properties
:
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
serviceAccountToken
:
properties
:
audience
:
type
:
string
expirationSeconds
:
format
:
int64
type
:
integer
path
:
type
:
string
required
:
-
path
type
:
object
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
quobyte
:
properties
:
group
:
type
:
string
readOnly
:
type
:
boolean
registry
:
type
:
string
tenant
:
type
:
string
user
:
type
:
string
volume
:
type
:
string
required
:
-
registry
-
volume
type
:
object
rbd
:
properties
:
fsType
:
type
:
string
image
:
type
:
string
keyring
:
default
:
/etc/ceph/keyring
type
:
string
monitors
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
pool
:
default
:
rbd
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
user
:
default
:
admin
type
:
string
required
:
-
image
-
monitors
type
:
object
readOnly
:
type
:
boolean
scaleIO
:
properties
:
fsType
:
default
:
xfs
type
:
string
gateway
:
type
:
string
protectionDomain
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
sslEnabled
:
type
:
boolean
storageMode
:
default
:
ThinProvisioned
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
x-kubernetes-list-type
:
atomic
optional
:
type
:
boolean
secretName
:
type
:
string
type
:
object
storageos
:
properties
:
fsType
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
type
:
object
type
:
array
options
:
additionalProperties
:
type
:
string
type
:
object
output
:
type
:
string
structureOptions
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
type
:
object
pvc
:
properties
:
create
:
type
:
boolean
mountPoint
:
type
:
string
name
:
type
:
string
size
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
storageClass
:
type
:
string
volumeAccessMode
:
type
:
string
type
:
object
readinessProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
resources
:
properties
:
limits
:
properties
:
cpu
:
type
:
string
custom
:
additionalProperties
:
type
:
string
type
:
object
gpu
:
type
:
string
memory
:
type
:
string
type
:
object
requests
:
properties
:
cpu
:
type
:
string
custom
:
additionalProperties
:
type
:
string
type
:
object
gpu
:
type
:
string
memory
:
type
:
string
type
:
object
type
:
object
runMode
:
properties
:
standalone
:
type
:
boolean
type
:
object
serviceName
:
type
:
string
required
:
-
compoundAINim
type
:
object
status
:
properties
:
conditions
:
items
:
properties
:
lastTransitionTime
:
format
:
date-time
type
:
string
message
:
maxLength
:
32768
type
:
string
observedGeneration
:
format
:
int64
minimum
:
0
type
:
integer
reason
:
maxLength
:
1024
minLength
:
1
pattern
:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type
:
string
status
:
enum
:
-
"
True"
-
"
False"
-
Unknown
type
:
string
type
:
maxLength
:
316
pattern
:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type
:
string
required
:
-
lastTransitionTime
-
message
-
reason
-
status
-
type
type
:
object
type
:
array
podSelector
:
additionalProperties
:
type
:
string
type
:
object
required
:
-
conditions
type
:
object
type
:
object
type
:
object
required
:
-
compoundAINim
type
:
object
status
:
properties
:
conditions
:
items
:
properties
:
lastTransitionTime
:
format
:
date-time
type
:
string
message
:
maxLength
:
32768
type
:
string
observedGeneration
:
format
:
int64
minimum
:
0
type
:
integer
reason
:
maxLength
:
1024
minLength
:
1
pattern
:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type
:
string
status
:
enum
:
-
"
True"
-
"
False"
-
Unknown
type
:
string
type
:
maxLength
:
316
pattern
:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type
:
string
required
:
-
lastTransitionTime
-
message
-
reason
-
status
-
type
type
:
object
type
:
array
state
:
type
:
string
type
:
object
type
:
object
served
:
true
storage
:
true
subresources
:
status
:
{}
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainimdeployments.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion
:
apiextensions.k8s.io/v1
kind
:
CustomResourceDefinition
metadata
:
annotations
:
controller-gen.kubebuilder.io/version
:
v0.16.4
name
:
compoundainimdeployments.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
CompoundAINimDeployment
listKind
:
CompoundAINimDeploymentList
plural
:
compoundainimdeployments
singular
:
compoundainimdeployment
scope
:
Namespaced
versions
:
-
additionalPrinterColumns
:
-
description
:
Bento
jsonPath
:
.spec.bento
name
:
Bento
type
:
string
-
description
:
Available
jsonPath
:
.status.conditions[?(@.type=='Available')].status
name
:
Available
type
:
string
-
jsonPath
:
.metadata.creationTimestamp
name
:
Age
type
:
date
name
:
v1alpha1
schema
:
openAPIV3Schema
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
metadata
:
type
:
object
spec
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
autoscaling
:
properties
:
behavior
:
properties
:
scaleDown
:
properties
:
policies
:
items
:
properties
:
periodSeconds
:
format
:
int32
type
:
integer
type
:
type
:
string
value
:
format
:
int32
type
:
integer
required
:
-
periodSeconds
-
type
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
selectPolicy
:
type
:
string
stabilizationWindowSeconds
:
format
:
int32
type
:
integer
type
:
object
scaleUp
:
properties
:
policies
:
items
:
properties
:
periodSeconds
:
format
:
int32
type
:
integer
type
:
type
:
string
value
:
format
:
int32
type
:
integer
required
:
-
periodSeconds
-
type
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
selectPolicy
:
type
:
string
stabilizationWindowSeconds
:
format
:
int32
type
:
integer
type
:
object
type
:
object
enabled
:
type
:
boolean
maxReplicas
:
type
:
integer
metrics
:
items
:
properties
:
containerResource
:
properties
:
container
:
type
:
string
name
:
type
:
string
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
container
-
name
-
target
type
:
object
external
:
properties
:
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
metric
-
target
type
:
object
object
:
properties
:
describedObject
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
required
:
-
kind
-
name
type
:
object
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
describedObject
-
metric
-
target
type
:
object
pods
:
properties
:
metric
:
properties
:
name
:
type
:
string
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
name
type
:
object
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
metric
-
target
type
:
object
resource
:
properties
:
name
:
type
:
string
target
:
properties
:
averageUtilization
:
format
:
int32
type
:
integer
averageValue
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
type
:
string
value
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
required
:
-
type
type
:
object
required
:
-
name
-
target
type
:
object
type
:
type
:
string
required
:
-
type
type
:
object
type
:
array
minReplicas
:
type
:
integer
type
:
object
compoundAINim
:
type
:
string
envFromSecret
:
type
:
string
envs
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
externalServices
:
additionalProperties
:
properties
:
deploymentSelectorKey
:
type
:
string
deploymentSelectorValue
:
type
:
string
type
:
object
type
:
object
extraPodMetadata
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
labels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
extraPodSpec
:
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
weight
:
format
:
int32
type
:
integer
required
:
-
preference
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
properties
:
nodeSelectorTerms
:
items
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
nodeSelectorTerms
type
:
object
x-kubernetes-map-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
type
:
object
containers
:
items
:
properties
:
args
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
env
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
envFrom
:
items
:
properties
:
configMapRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
prefix
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
image
:
type
:
string
imagePullPolicy
:
type
:
string
lifecycle
:
properties
:
postStart
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
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
:
default
:
TCP
type
:
string
required
:
-
containerPort
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
resizePolicy
:
items
:
properties
:
resourceName
:
type
:
string
restartPolicy
:
type
:
string
required
:
-
resourceName
-
restartPolicy
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
resources
:
properties
:
claims
:
items
:
properties
:
name
:
type
:
string
request
:
type
:
string
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
restartPolicy
:
type
:
string
securityContext
:
properties
:
allowPrivilegeEscalation
:
type
:
boolean
appArmorProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
capabilities
:
properties
:
add
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
drop
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
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
seccompProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
windowsOptions
:
properties
:
gmsaCredentialSpec
:
type
:
string
gmsaCredentialSpecName
:
type
:
string
hostProcess
:
type
:
boolean
runAsUserName
:
type
:
string
type
:
object
type
:
object
startupProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
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
x-kubernetes-list-map-keys
:
-
devicePath
x-kubernetes-list-type
:
map
volumeMounts
:
items
:
properties
:
mountPath
:
type
:
string
mountPropagation
:
type
:
string
name
:
type
:
string
readOnly
:
type
:
boolean
recursiveReadOnly
:
type
:
string
subPath
:
type
:
string
subPathExpr
:
type
:
string
required
:
-
mountPath
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
mountPath
x-kubernetes-list-type
:
map
workingDir
:
type
:
string
required
:
-
name
type
:
object
type
:
array
nodeSelector
:
additionalProperties
:
type
:
string
type
:
object
priorityClassName
:
type
:
string
schedulerName
:
type
:
string
serviceAccountName
:
type
:
string
tolerations
:
items
:
properties
:
effect
:
type
:
string
key
:
type
:
string
operator
:
type
:
string
tolerationSeconds
:
format
:
int64
type
:
integer
value
:
type
:
string
type
:
object
type
:
array
topologySpreadConstraints
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
maxSkew
:
format
:
int32
type
:
integer
minDomains
:
format
:
int32
type
:
integer
nodeAffinityPolicy
:
type
:
string
nodeTaintsPolicy
:
type
:
string
topologyKey
:
type
:
string
whenUnsatisfiable
:
type
:
string
required
:
-
maxSkew
-
topologyKey
-
whenUnsatisfiable
type
:
object
type
:
array
type
:
object
ingress
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
enabled
:
type
:
boolean
hostPrefix
:
type
:
string
labels
:
additionalProperties
:
type
:
string
type
:
object
tls
:
properties
:
secretName
:
type
:
string
type
:
object
useVirtualService
:
type
:
boolean
type
:
object
labels
:
additionalProperties
:
type
:
string
type
:
object
livenessProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
monitorExporter
:
properties
:
enabled
:
type
:
boolean
mounts
:
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
:
default
:
ext4
type
:
string
kind
:
type
:
string
readOnly
:
default
:
false
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
x-kubernetes-list-type
:
atomic
path
:
type
:
string
readOnly
:
type
:
boolean
secretFile
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
user
:
type
:
string
required
:
-
monitors
type
:
object
cinder
:
properties
:
fsType
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
csi
:
properties
:
driver
:
type
:
string
fsType
:
type
:
string
nodePublishSecretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
readOnly
:
type
:
boolean
volumeAttributes
:
additionalProperties
:
type
:
string
type
:
object
required
:
-
driver
type
:
object
downwardAPI
:
properties
:
defaultMode
:
format
:
int32
type
:
integer
items
:
items
:
properties
:
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
emptyDir
:
properties
:
medium
:
type
:
string
sizeLimit
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
ephemeral
:
properties
:
volumeClaimTemplate
:
properties
:
metadata
:
type
:
object
spec
:
properties
:
accessModes
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
dataSource
:
properties
:
apiGroup
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
required
:
-
kind
-
name
type
:
object
x-kubernetes-map-type
:
atomic
dataSourceRef
:
properties
:
apiGroup
:
type
:
string
kind
:
type
:
string
name
:
type
:
string
namespace
:
type
:
string
required
:
-
kind
-
name
type
:
object
resources
:
properties
:
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
selector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
storageClassName
:
type
:
string
volumeAttributesClassName
:
type
:
string
volumeMode
:
type
:
string
volumeName
:
type
:
string
type
:
object
required
:
-
spec
type
:
object
type
:
object
fc
:
properties
:
fsType
:
type
:
string
lun
:
format
:
int32
type
:
integer
readOnly
:
type
:
boolean
targetWWNs
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
wwids
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
flexVolume
:
properties
:
driver
:
type
:
string
fsType
:
type
:
string
options
:
additionalProperties
:
type
:
string
type
:
object
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
image
:
properties
:
pullPolicy
:
type
:
string
reference
:
type
:
string
type
:
object
iscsi
:
properties
:
chapAuthDiscovery
:
type
:
boolean
chapAuthSession
:
type
:
boolean
fsType
:
type
:
string
initiatorName
:
type
:
string
iqn
:
type
:
string
iscsiInterface
:
default
:
default
type
:
string
lun
:
format
:
int32
type
:
integer
portals
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
targetPortal
:
type
:
string
required
:
-
iqn
-
lun
-
targetPortal
type
:
object
nfs
:
properties
:
path
:
type
:
string
readOnly
:
type
:
boolean
server
:
type
:
string
required
:
-
path
-
server
type
:
object
path
:
type
:
string
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
:
clusterTrustBundle
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
name
:
type
:
string
optional
:
type
:
boolean
path
:
type
:
string
signerName
:
type
:
string
required
:
-
path
type
:
object
configMap
:
properties
:
items
:
items
:
properties
:
key
:
type
:
string
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
required
:
-
key
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
downwardAPI
:
properties
:
items
:
items
:
properties
:
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
mode
:
format
:
int32
type
:
integer
path
:
type
:
string
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
required
:
-
path
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
x-kubernetes-list-type
:
atomic
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
serviceAccountToken
:
properties
:
audience
:
type
:
string
expirationSeconds
:
format
:
int64
type
:
integer
path
:
type
:
string
required
:
-
path
type
:
object
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
quobyte
:
properties
:
group
:
type
:
string
readOnly
:
type
:
boolean
registry
:
type
:
string
tenant
:
type
:
string
user
:
type
:
string
volume
:
type
:
string
required
:
-
registry
-
volume
type
:
object
rbd
:
properties
:
fsType
:
type
:
string
image
:
type
:
string
keyring
:
default
:
/etc/ceph/keyring
type
:
string
monitors
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
pool
:
default
:
rbd
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
user
:
default
:
admin
type
:
string
required
:
-
image
-
monitors
type
:
object
readOnly
:
type
:
boolean
scaleIO
:
properties
:
fsType
:
default
:
xfs
type
:
string
gateway
:
type
:
string
protectionDomain
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
sslEnabled
:
type
:
boolean
storageMode
:
default
:
ThinProvisioned
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
x-kubernetes-list-type
:
atomic
optional
:
type
:
boolean
secretName
:
type
:
string
type
:
object
storageos
:
properties
:
fsType
:
type
:
string
readOnly
:
type
:
boolean
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
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
type
:
object
type
:
array
options
:
additionalProperties
:
type
:
string
type
:
object
output
:
type
:
string
structureOptions
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
type
:
object
pvc
:
properties
:
create
:
type
:
boolean
mountPoint
:
type
:
string
name
:
type
:
string
size
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
storageClass
:
type
:
string
volumeAccessMode
:
type
:
string
type
:
object
readinessProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
resources
:
properties
:
limits
:
properties
:
cpu
:
type
:
string
custom
:
additionalProperties
:
type
:
string
type
:
object
gpu
:
type
:
string
memory
:
type
:
string
type
:
object
requests
:
properties
:
cpu
:
type
:
string
custom
:
additionalProperties
:
type
:
string
type
:
object
gpu
:
type
:
string
memory
:
type
:
string
type
:
object
type
:
object
runMode
:
properties
:
standalone
:
type
:
boolean
type
:
object
serviceName
:
type
:
string
required
:
-
compoundAINim
type
:
object
status
:
properties
:
conditions
:
items
:
properties
:
lastTransitionTime
:
format
:
date-time
type
:
string
message
:
maxLength
:
32768
type
:
string
observedGeneration
:
format
:
int64
minimum
:
0
type
:
integer
reason
:
maxLength
:
1024
minLength
:
1
pattern
:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type
:
string
status
:
enum
:
-
"
True"
-
"
False"
-
Unknown
type
:
string
type
:
maxLength
:
316
pattern
:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type
:
string
required
:
-
lastTransitionTime
-
message
-
reason
-
status
-
type
type
:
object
type
:
array
podSelector
:
additionalProperties
:
type
:
string
type
:
object
required
:
-
conditions
type
:
object
type
:
object
served
:
true
storage
:
true
subresources
:
status
:
{}
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainimrequests.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion
:
apiextensions.k8s.io/v1
kind
:
CustomResourceDefinition
metadata
:
annotations
:
controller-gen.kubebuilder.io/version
:
v0.16.4
name
:
compoundainimrequests.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
CompoundAINimRequest
listKind
:
CompoundAINimRequestList
plural
:
compoundainimrequests
singular
:
compoundainimrequest
scope
:
Namespaced
versions
:
-
additionalPrinterColumns
:
-
description
:
Bento Tag
jsonPath
:
.spec.bentoTag
name
:
Bento-Tag
type
:
string
-
description
:
Download URL
jsonPath
:
.spec.downloadUrl
name
:
Download-Url
type
:
string
-
description
:
Image
jsonPath
:
.spec.image
name
:
Image
type
:
string
-
description
:
Image Exists
jsonPath
:
.status.conditions[?(@.type=='ImageExists')].status
name
:
Image-Exists
type
:
string
-
description
:
Bento Available
jsonPath
:
.status.conditions[?(@.type=='BentoAvailable')].status
name
:
Bento-Available
type
:
string
-
jsonPath
:
.metadata.creationTimestamp
name
:
Age
type
:
date
name
:
v1alpha1
schema
:
openAPIV3Schema
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
metadata
:
type
:
object
spec
:
properties
:
bentoTag
:
type
:
string
buildArgs
:
items
:
type
:
string
type
:
array
context
:
properties
:
bentomlVersion
:
type
:
string
type
:
object
dockerConfigJsonSecretName
:
type
:
string
downloadUrl
:
type
:
string
downloaderContainerEnvFrom
:
items
:
properties
:
configMapRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
prefix
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
type
:
array
image
:
type
:
string
imageBuildTimeout
:
format
:
int64
type
:
integer
imageBuilderContainerResources
:
properties
:
claims
:
items
:
properties
:
name
:
type
:
string
request
:
type
:
string
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
imageBuilderExtraContainerEnv
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
imageBuilderExtraPodMetadata
:
properties
:
annotations
:
additionalProperties
:
type
:
string
type
:
object
labels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
imageBuilderExtraPodSpec
:
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
weight
:
format
:
int32
type
:
integer
required
:
-
preference
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
properties
:
nodeSelectorTerms
:
items
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchFields
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
x-kubernetes-map-type
:
atomic
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
nodeSelectorTerms
type
:
object
x-kubernetes-map-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
weight
:
format
:
int32
type
:
integer
required
:
-
podAffinityTerm
-
weight
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
requiredDuringSchedulingIgnoredDuringExecution
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
mismatchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
namespaceSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
namespaces
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
topologyKey
:
type
:
string
required
:
-
topologyKey
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
type
:
object
containers
:
items
:
properties
:
args
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
env
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
valueFrom
:
properties
:
configMapKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
fieldRef
:
properties
:
apiVersion
:
type
:
string
fieldPath
:
type
:
string
required
:
-
fieldPath
type
:
object
x-kubernetes-map-type
:
atomic
resourceFieldRef
:
properties
:
containerName
:
type
:
string
divisor
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
resource
:
type
:
string
required
:
-
resource
type
:
object
x-kubernetes-map-type
:
atomic
secretKeyRef
:
properties
:
key
:
type
:
string
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
required
:
-
key
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
envFrom
:
items
:
properties
:
configMapRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
prefix
:
type
:
string
secretRef
:
properties
:
name
:
default
:
"
"
type
:
string
optional
:
type
:
boolean
type
:
object
x-kubernetes-map-type
:
atomic
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
image
:
type
:
string
imagePullPolicy
:
type
:
string
lifecycle
:
properties
:
postStart
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
path
:
type
:
string
port
:
anyOf
:
-
type
:
integer
-
type
:
string
x-kubernetes-int-or-string
:
true
scheme
:
type
:
string
required
:
-
port
type
:
object
sleep
:
properties
:
seconds
:
format
:
int64
type
:
integer
required
:
-
seconds
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
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
:
default
:
TCP
type
:
string
required
:
-
containerPort
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
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
type
:
object
resizePolicy
:
items
:
properties
:
resourceName
:
type
:
string
restartPolicy
:
type
:
string
required
:
-
resourceName
-
restartPolicy
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
resources
:
properties
:
claims
:
items
:
properties
:
name
:
type
:
string
request
:
type
:
string
required
:
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
name
x-kubernetes-list-type
:
map
limits
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
requests
:
additionalProperties
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
type
:
object
type
:
object
restartPolicy
:
type
:
string
securityContext
:
properties
:
allowPrivilegeEscalation
:
type
:
boolean
appArmorProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
capabilities
:
properties
:
add
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
drop
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
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
seccompProfile
:
properties
:
localhostProfile
:
type
:
string
type
:
type
:
string
required
:
-
type
type
:
object
windowsOptions
:
properties
:
gmsaCredentialSpec
:
type
:
string
gmsaCredentialSpecName
:
type
:
string
hostProcess
:
type
:
boolean
runAsUserName
:
type
:
string
type
:
object
type
:
object
startupProbe
:
properties
:
exec
:
properties
:
command
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
type
:
object
failureThreshold
:
format
:
int32
type
:
integer
grpc
:
properties
:
port
:
format
:
int32
type
:
integer
service
:
default
:
"
"
type
:
string
required
:
-
port
type
:
object
httpGet
:
properties
:
host
:
type
:
string
httpHeaders
:
items
:
properties
:
name
:
type
:
string
value
:
type
:
string
required
:
-
name
-
value
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
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
terminationGracePeriodSeconds
:
format
:
int64
type
:
integer
timeoutSeconds
:
format
:
int32
type
:
integer
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
x-kubernetes-list-map-keys
:
-
devicePath
x-kubernetes-list-type
:
map
volumeMounts
:
items
:
properties
:
mountPath
:
type
:
string
mountPropagation
:
type
:
string
name
:
type
:
string
readOnly
:
type
:
boolean
recursiveReadOnly
:
type
:
string
subPath
:
type
:
string
subPathExpr
:
type
:
string
required
:
-
mountPath
-
name
type
:
object
type
:
array
x-kubernetes-list-map-keys
:
-
mountPath
x-kubernetes-list-type
:
map
workingDir
:
type
:
string
required
:
-
name
type
:
object
type
:
array
nodeSelector
:
additionalProperties
:
type
:
string
type
:
object
priorityClassName
:
type
:
string
schedulerName
:
type
:
string
serviceAccountName
:
type
:
string
tolerations
:
items
:
properties
:
effect
:
type
:
string
key
:
type
:
string
operator
:
type
:
string
tolerationSeconds
:
format
:
int64
type
:
integer
value
:
type
:
string
type
:
object
type
:
array
topologySpreadConstraints
:
items
:
properties
:
labelSelector
:
properties
:
matchExpressions
:
items
:
properties
:
key
:
type
:
string
operator
:
type
:
string
values
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
required
:
-
key
-
operator
type
:
object
type
:
array
x-kubernetes-list-type
:
atomic
matchLabels
:
additionalProperties
:
type
:
string
type
:
object
type
:
object
x-kubernetes-map-type
:
atomic
matchLabelKeys
:
items
:
type
:
string
type
:
array
x-kubernetes-list-type
:
atomic
maxSkew
:
format
:
int32
type
:
integer
minDomains
:
format
:
int32
type
:
integer
nodeAffinityPolicy
:
type
:
string
nodeTaintsPolicy
:
type
:
string
topologyKey
:
type
:
string
whenUnsatisfiable
:
type
:
string
required
:
-
maxSkew
-
topologyKey
-
whenUnsatisfiable
type
:
object
type
:
array
type
:
object
models
:
items
:
properties
:
downloadUrl
:
type
:
string
size
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
tag
:
type
:
string
required
:
-
tag
type
:
object
type
:
array
ociRegistryInsecure
:
type
:
boolean
serviceName
:
type
:
string
required
:
-
bentoTag
type
:
object
status
:
properties
:
conditions
:
items
:
properties
:
lastTransitionTime
:
format
:
date-time
type
:
string
message
:
maxLength
:
32768
type
:
string
observedGeneration
:
format
:
int64
minimum
:
0
type
:
integer
reason
:
maxLength
:
1024
minLength
:
1
pattern
:
^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type
:
string
status
:
enum
:
-
"
True"
-
"
False"
-
Unknown
type
:
string
type
:
maxLength
:
316
pattern
:
^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type
:
string
required
:
-
lastTransitionTime
-
message
-
reason
-
status
-
type
type
:
object
type
:
array
required
:
-
conditions
type
:
object
type
:
object
served
:
true
storage
:
true
subresources
:
status
:
{}
deploy/compoundai/operator/config/crd/bases/nvidia.com_compoundainims.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
apiVersion
:
apiextensions.k8s.io/v1
kind
:
CustomResourceDefinition
metadata
:
annotations
:
controller-gen.kubebuilder.io/version
:
v0.16.4
name
:
compoundainims.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
CompoundAINim
listKind
:
CompoundAINimList
plural
:
compoundainims
singular
:
compoundainim
scope
:
Namespaced
versions
:
-
name
:
v1alpha1
schema
:
openAPIV3Schema
:
properties
:
apiVersion
:
type
:
string
kind
:
type
:
string
metadata
:
type
:
object
spec
:
properties
:
context
:
properties
:
bentomlVersion
:
type
:
string
type
:
object
image
:
type
:
string
imagePullSecrets
:
items
:
properties
:
name
:
default
:
"
"
type
:
string
type
:
object
x-kubernetes-map-type
:
atomic
type
:
array
models
:
items
:
properties
:
downloadUrl
:
type
:
string
size
:
anyOf
:
-
type
:
integer
-
type
:
string
pattern
:
^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$
x-kubernetes-int-or-string
:
true
tag
:
type
:
string
required
:
-
tag
type
:
object
type
:
array
serviceName
:
type
:
string
tag
:
type
:
string
required
:
-
image
-
tag
type
:
object
status
:
properties
:
ready
:
type
:
boolean
required
:
-
ready
type
:
object
type
:
object
served
:
true
storage
:
true
subresources
:
status
:
{}
deploy/compoundai/operator/config/crd/kustomization.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This kustomization.yaml is not intended to be run by itself,
# since it depends on service name and namespace that are out of this kustomize package.
# It should be run by config/default
resources
:
-
bases/nvidia.com_compoundainimdeployments.yaml
-
bases/nvidia.com_compoundainimrequests.yaml
-
bases/nvidia.com_compoundainims.yaml
-
bases/nvidia.com_compoundaideployments.yaml
#+kubebuilder:scaffold:crdkustomizeresource
patches
:
[]
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix.
# patches here are for enabling the conversion webhook for each CRD
#+kubebuilder:scaffold:crdkustomizewebhookpatch
# [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix.
# patches here are for enabling the CA injection for each CRD
#- path: patches/cainjection_in_compoundainimdeployments.yaml
#- path: patches/cainjection_in_compoundainimrequests.yaml
#- path: patches/cainjection_in_compoundainims.yaml
#+kubebuilder:scaffold:crdkustomizecainjectionpatch
# [WEBHOOK] To enable webhook, uncomment the following section
# the following config is for teaching kustomize how to do kustomization for CRDs.
#configurations:
#- kustomizeconfig.yaml
deploy/compoundai/operator/config/crd/kustomizeconfig.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This file is for teaching kustomize how to substitute name and namespace reference in CRD
nameReference
:
-
kind
:
Service
version
:
v1
fieldSpecs
:
-
kind
:
CustomResourceDefinition
version
:
v1
group
:
apiextensions.k8s.io
path
:
spec/conversion/webhook/clientConfig/service/name
namespace
:
-
kind
:
CustomResourceDefinition
version
:
v1
group
:
apiextensions.k8s.io
path
:
spec/conversion/webhook/clientConfig/service/namespace
create
:
false
varReference
:
-
path
:
metadata/annotations
deploy/compoundai/operator/config/default/kustomization.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Adds namespace to all resources.
namespace
:
compoundai-kubernetes-operator-system
# Value of this field is prepended to the
# names of all resources, e.g. a deployment named
# "wordpress" becomes "alices-wordpress".
# Note that it should also match with the prefix (text before '-') of the namespace
# field above.
namePrefix
:
compoundai-kubernetes-operator-
# Labels to add to all resources and selectors.
#labels:
#- includeSelectors: true
# pairs:
# someName: someValue
resources
:
-
../crd
-
../rbac
-
../manager
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
# crd/kustomization.yaml
#- ../webhook
# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'. 'WEBHOOK' components are required.
#- ../certmanager
# [PROMETHEUS] To enable prometheus monitor, uncomment all sections with 'PROMETHEUS'.
#- ../prometheus
patches
:
# Protect the /metrics endpoint by putting it behind auth.
# If you want your controller-manager to expose the /metrics
# endpoint w/o any authn/z, please comment the following line.
-
path
:
manager_auth_proxy_patch.yaml
# [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
# crd/kustomization.yaml
#- path: manager_webhook_patch.yaml
# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER'.
# Uncomment 'CERTMANAGER' sections in crd/kustomization.yaml to enable the CA injection in the admission webhooks.
# 'CERTMANAGER' needs to be enabled to use ca injection
#- path: webhookcainjection_patch.yaml
# [CERTMANAGER] To enable cert-manager, uncomment all sections with 'CERTMANAGER' prefix.
# Uncomment the following replacements to add the cert-manager CA injection annotations
#replacements:
# - source: # Add cert-manager annotation to ValidatingWebhookConfiguration, MutatingWebhookConfiguration and CRDs
# kind: Certificate
# group: cert-manager.io
# version: v1
# name: serving-cert # this name should match the one in certificate.yaml
# fieldPath: .metadata.namespace # namespace of the certificate CR
# targets:
# - select:
# kind: ValidatingWebhookConfiguration
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 0
# create: true
# - select:
# kind: MutatingWebhookConfiguration
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 0
# create: true
# - select:
# kind: CustomResourceDefinition
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 0
# create: true
# - source:
# kind: Certificate
# group: cert-manager.io
# version: v1
# name: serving-cert # this name should match the one in certificate.yaml
# fieldPath: .metadata.name
# targets:
# - select:
# kind: ValidatingWebhookConfiguration
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 1
# create: true
# - select:
# kind: MutatingWebhookConfiguration
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 1
# create: true
# - select:
# kind: CustomResourceDefinition
# fieldPaths:
# - .metadata.annotations.[cert-manager.io/inject-ca-from]
# options:
# delimiter: '/'
# index: 1
# create: true
# - source: # Add cert-manager annotation to the webhook Service
# kind: Service
# version: v1
# name: webhook-service
# fieldPath: .metadata.name # namespace of the service
# targets:
# - select:
# kind: Certificate
# group: cert-manager.io
# version: v1
# fieldPaths:
# - .spec.dnsNames.0
# - .spec.dnsNames.1
# options:
# delimiter: '.'
# index: 0
# create: true
# - source:
# kind: Service
# version: v1
# name: webhook-service
# fieldPath: .metadata.namespace # namespace of the service
# targets:
# - select:
# kind: Certificate
# group: cert-manager.io
# version: v1
# fieldPaths:
# - .spec.dnsNames.0
# - .spec.dnsNames.1
# options:
# delimiter: '.'
# index: 1
# create: true
deploy/compoundai/operator/config/default/manager_auth_proxy_patch.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This patch inject a sidecar container which is a HTTP proxy for the
# controller manager, it performs RBAC authorization against the Kubernetes API using SubjectAccessReviews.
apiVersion
:
apps/v1
kind
:
Deployment
metadata
:
name
:
compoundai-controller-manager
namespace
:
system
spec
:
template
:
spec
:
containers
:
-
name
:
kube-rbac-proxy
securityContext
:
allowPrivilegeEscalation
:
false
capabilities
:
drop
:
-
"
ALL"
image
:
gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
args
:
-
"
--secure-listen-address=0.0.0.0:8443"
-
"
--upstream=http://127.0.0.1:8080/"
-
"
--logtostderr=true"
-
"
--v=0"
ports
:
-
containerPort
:
8443
protocol
:
TCP
name
:
https
resources
:
limits
:
cpu
:
500m
memory
:
128Mi
requests
:
cpu
:
5m
memory
:
64Mi
-
name
:
manager
args
:
-
"
--health-probe-bind-address=:8081"
-
"
--metrics-bind-address=127.0.0.1:8080"
-
"
--leader-elect"
-
"
--profile=COMPOUND_AI"
-
"
--leader-election-id=compoundai.nko.nvidia.com"
deploy/compoundai/operator/config/manager/kustomization.yaml
0 → 100644
View file @
5ddc7f7d
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
resources
:
-
manager.yaml
\ No newline at end of file
Prev
1
…
5
6
7
8
9
10
11
12
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment