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
a82f350a
Unverified
Commit
a82f350a
authored
Apr 29, 2025
by
julienmancuso
Committed by
GitHub
Apr 29, 2025
Browse files
feat: remove dynamoComponentRequest CRD (#856)
parent
c544e8ec
Changes
33
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
with
1512 additions
and
3248 deletions
+1512
-3248
deploy/dynamo/helm/platform/Chart.yaml
deploy/dynamo/helm/platform/Chart.yaml
+1
-1
deploy/dynamo/helm/platform/components/operator/Chart.yaml
deploy/dynamo/helm/platform/components/operator/Chart.yaml
+2
-2
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/Chart.yaml
...latform/components/operator/charts/dynamo-crds/Chart.yaml
+1
-1
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponentdeployments.yaml
...namo-crds/crds/nvidia.com_dynamocomponentdeployments.yaml
+2
-0
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponentrequests.yaml
.../dynamo-crds/crds/nvidia.com_dynamocomponentrequests.yaml
+0
-1468
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponents.yaml
.../charts/dynamo-crds/crds/nvidia.com_dynamocomponents.yaml
+1400
-5
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamographdeployments.yaml
...s/dynamo-crds/crds/nvidia.com_dynamographdeployments.yaml
+2
-0
deploy/dynamo/helm/platform/components/operator/templates/_helpers.tpl
.../helm/platform/components/operator/templates/_helpers.tpl
+1
-34
deploy/dynamo/helm/platform/components/operator/templates/manager-rbac.yaml
.../platform/components/operator/templates/manager-rbac.yaml
+1
-3
deploy/dynamo/helm/platform/components/operator/templates/secret-env.yaml
...lm/platform/components/operator/templates/secret-env.yaml
+1
-5
deploy/dynamo/operator/PROJECT
deploy/dynamo/operator/PROJECT
+0
-8
deploy/dynamo/operator/api/dynamo/schemas/schemas.go
deploy/dynamo/operator/api/dynamo/schemas/schemas.go
+6
-6
deploy/dynamo/operator/api/v1alpha1/dynamocomponent_types.go
deploy/dynamo/operator/api/v1alpha1/dynamocomponent_types.go
+69
-6
deploy/dynamo/operator/api/v1alpha1/dynamocomponentdeployment_types.go
.../operator/api/v1alpha1/dynamocomponentdeployment_types.go
+10
-11
deploy/dynamo/operator/api/v1alpha1/dynamocomponentrequest_types.go
...amo/operator/api/v1alpha1/dynamocomponentrequest_types.go
+0
-122
deploy/dynamo/operator/api/v1alpha1/dynamographdeployment_types.go
...namo/operator/api/v1alpha1/dynamographdeployment_types.go
+1
-1
deploy/dynamo/operator/api/v1alpha1/zz_generated.deepcopy.go
deploy/dynamo/operator/api/v1alpha1/zz_generated.deepcopy.go
+10
-104
deploy/dynamo/operator/cmd/main.go
deploy/dynamo/operator/cmd/main.go
+3
-3
deploy/dynamo/operator/config/crd/bases/nvidia.com_dynamocomponentdeployments.yaml
...nfig/crd/bases/nvidia.com_dynamocomponentdeployments.yaml
+2
-0
deploy/dynamo/operator/config/crd/bases/nvidia.com_dynamocomponentrequests.yaml
.../config/crd/bases/nvidia.com_dynamocomponentrequests.yaml
+0
-1468
No files found.
deploy/dynamo/helm/platform/Chart.yaml
View file @
a82f350a
...
...
@@ -23,7 +23,7 @@ version: 25.2.0-rc3
home
:
https://nvidia.com
dependencies
:
-
name
:
dynamo-operator
version
:
0.1.
6
version
:
0.1.
7
repository
:
file://components/operator
condition
:
dynamo-operator.enabled
-
name
:
dynamo-api-store
...
...
deploy/dynamo/helm/platform/components/operator/Chart.yaml
View file @
a82f350a
...
...
@@ -27,7 +27,7 @@ type: application
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version
:
0.1.
6
version
:
0.1.
7
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application. Versions are not expected to
# follow Semantic Versioning. They should reflect the version the application is using.
...
...
@@ -35,5 +35,5 @@ version: 0.1.6
appVersion
:
"
0.1.0"
dependencies
:
-
name
:
dynamo-crds
version
:
0.1.
5
version
:
0.1.
6
repository
:
file://charts/dynamo-crds
\ No newline at end of file
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/Chart.yaml
View file @
a82f350a
...
...
@@ -16,5 +16,5 @@ apiVersion: v2
name
:
dynamo-crds
description
:
A Helm chart for CRDs of dynamo operator
type
:
application
version
:
0.1.
5
version
:
0.1.
6
dependencies
:
[]
\ No newline at end of file
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponentdeployments.yaml
View file @
a82f350a
...
...
@@ -26,6 +26,8 @@ spec:
kind
:
DynamoComponentDeployment
listKind
:
DynamoComponentDeploymentList
plural
:
dynamocomponentdeployments
shortNames
:
-
dcd
singular
:
dynamocomponentdeployment
scope
:
Namespaced
versions
:
...
...
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponentrequests.yaml
deleted
100644 → 0
View file @
c544e8ec
# 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
:
dynamocomponentrequests.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
DynamoComponentRequest
listKind
:
DynamoComponentRequestList
plural
:
dynamocomponentrequests
singular
:
dynamocomponentrequest
scope
:
Namespaced
versions
:
-
additionalPrinterColumns
:
-
description
:
Dynamo component
jsonPath
:
.spec.dynamoComponent
name
:
DynamoComponent
type
:
string
-
description
:
Download URL
jsonPath
:
.spec.downloadUrl
name
:
Download-Url
type
:
string
-
description
:
Image Exists
jsonPath
:
.status.conditions[?(@.type=='ImageExists')].status
name
:
Image-Exists
type
:
string
-
description
:
Dynamo Component Available
jsonPath
:
.status.conditions[?(@.type=='DynamoComponentAvailable')].status
name
:
DynamoComponent-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
:
buildArgs
:
items
:
type
:
string
type
:
array
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
dynamoComponent
:
type
:
string
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
ociRegistryInsecure
:
type
:
boolean
serviceName
:
type
:
string
required
:
-
dynamoComponent
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/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamocomponents.yaml
View file @
a82f350a
...
...
@@ -26,10 +26,24 @@ spec:
kind
:
DynamoComponent
listKind
:
DynamoComponentList
plural
:
dynamocomponents
shortNames
:
-
dc
singular
:
dynamocomponent
scope
:
Namespaced
versions
:
-
name
:
v1alpha1
-
additionalPrinterColumns
:
-
description
:
Dynamo component
jsonPath
:
.spec.dynamoComponent
name
:
DynamoComponent
type
:
string
-
description
:
Image Exists
jsonPath
:
.status.conditions[?(@.type=='ImageExists')].status
name
:
Image-Exists
type
:
string
-
jsonPath
:
.metadata.creationTimestamp
name
:
Age
type
:
date
name
:
v1alpha1
schema
:
openAPIV3Schema
:
properties
:
...
...
@@ -41,10 +55,1358 @@ spec:
type
:
object
spec
:
properties
:
buildArgs
:
items
:
type
:
string
type
:
array
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
dynamoComponent
:
type
:
string
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
imagePullSecrets
:
items
:
properties
:
...
...
@@ -58,14 +1420,47 @@ spec:
type
:
string
required
:
-
dynamoComponent
-
image
type
:
object
status
:
properties
:
ready
:
type
:
boolean
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
:
-
ready
-
conditions
type
:
object
type
:
object
served
:
true
...
...
deploy/dynamo/helm/platform/components/operator/charts/dynamo-crds/crds/nvidia.com_dynamographdeployments.yaml
View file @
a82f350a
...
...
@@ -26,6 +26,8 @@ spec:
kind
:
DynamoGraphDeployment
listKind
:
DynamoGraphDeploymentList
plural
:
dynamographdeployments
shortNames
:
-
dgd
singular
:
dynamographdeployment
scope
:
Namespaced
versions
:
...
...
deploy/dynamo/helm/platform/components/operator/templates/_helpers.tpl
View file @
a82f350a
...
...
@@ -134,37 +134,4 @@ Generate docker config json for registry credentials
}
}
{{- end -}}
{{- end -}}
{
{
/*
Extract
username
and
password
from
docker
registry
configuration
*/
}
}
{{- define "dynamo-operator.extractDockerCredentials" -}}
{{- $server := .Values.dynamo.dockerRegistry.server -}}
{{- $username := .Values.dynamo.dockerRegistry.username -}}
{{- $password := .Values.dynamo.dockerRegistry.password -}}
{{- $result := dict "username" $username "password" $password }}
{{- if .Values.dynamo.dockerRegistry.passwordExistingSecretName }}
{{- $secretName := .Values.dynamo.dockerRegistry.passwordExistingSecretName }}
{{- $secretKey := .Values.dynamo.dockerRegistry.passwordExistingSecretKey }}
{{- $dockerconfigjson := lookup "v1" "Secret" .Release.Namespace $secretName }}
{{- if $dockerconfigjson }}
{{- if eq $dockerconfigjson.type "kubernetes.io/dockerconfigjson" }}
{{- $decodedConfig := index $dockerconfigjson.data ".dockerconfigjson" | b64dec | fromJson }}
{{- range $registry, $authConfig := $decodedConfig.auths }}
{{- $_ := set $result "username" $authConfig.username }}
{{- $_ := set $result "password" $authConfig.password }}
{{- break }}
{{- end }}
{{- else if hasKey $dockerconfigjson.data $secretKey }}
{{- $_ := set $result "password" (index $dockerconfigjson.data $secretKey | b64dec) }}
{{- end }}
{{- end }}
{{- end }}
{{- toYaml $result }}
{{- end }}
\ No newline at end of file
{{- end -}}
\ No newline at end of file
deploy/dynamo/helm/platform/components/operator/templates/manager-rbac.yaml
View file @
a82f350a
...
...
@@ -331,7 +331,6 @@ rules:
-
nvidia.com
resources
:
-
dynamocomponentdeployments
-
dynamocomponentrequests
-
dynamocomponents
-
dynamographdeployments
verbs
:
...
...
@@ -346,7 +345,7 @@ rules:
-
nvidia.com
resources
:
-
dynamocomponentdeployments/finalizers
-
dynamocomponent
request
s/finalizers
-
dynamocomponents/finalizers
-
dynamographdeployments/finalizers
verbs
:
-
update
...
...
@@ -354,7 +353,6 @@ rules:
-
nvidia.com
resources
:
-
dynamocomponentdeployments/status
-
dynamocomponentrequests/status
-
dynamocomponents/status
-
dynamographdeployments/status
verbs
:
...
...
deploy/dynamo/helm/platform/components/operator/templates/secret-env.yaml
View file @
a82f350a
...
...
@@ -38,11 +38,7 @@ stringData:
{{
- end
}}
DOCKER_REGISTRY_SERVER
:
{{
.Values.dynamo.dockerRegistry.server | quote
}}
DOCKER_REGISTRY_IN_CLUSTER_SERVER
:
{{
.Values.dynamo.dockerRegistry.inClusterServer | quote
}}
{{
- with include "dynamo-operator.extractDockerCredentials" . | fromYaml
}}
DOCKER_REGISTRY_USERNAME
:
{{
.username | quote
}}
DOCKER_REGISTRY_PASSWORD
:
{{
.password | quote
}}
{{
- end
}}
DOCKER_REGISTRY_SECRET_NAME
:
"
dynamo-regcred"
DOCKER_REGISTRY_SECURE
:
{{
.Values.dynamo.dockerRegistry.secure | quote
}}
DOCKER_REGISTRY_DYNAMO_COMPONENTS_REPOSITORY_NAME
:
{{
.Values.dynamo.dockerRegistry.dynamoComponentsRepositoryName | quote
}}
...
...
deploy/dynamo/operator/PROJECT
View file @
a82f350a
...
...
@@ -16,14 +16,6 @@ resources:
kind: DynamoComponentDeployment
path: github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
controller: true
domain: nvidia.com
kind: DynamoComponentRequest
path: github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/v1alpha1
version: v1alpha1
- api:
crdVersion: v1
namespaced: true
...
...
deploy/dynamo/operator/api/dynamo/schemas/schemas.go
View file @
a82f350a
...
...
@@ -71,10 +71,10 @@ const (
)
type
DockerRegistrySchema
struct
{
DynamoRepositoryURI
string
`json:"dynamoRepositoryURI"`
DynamoRepositoryURIInCluster
string
`json:"dynamoRepositoryURIInClust
er"`
Server
string
`json:"ser
ver
"`
Username
string
`json:"
username
"`
Password
string
`json:"
password
"`
Secure
bool
`json:"secure"`
DynamoRepositoryURI
string
`json:"dynamoRepositoryURI"`
Server
string
`json:"serv
er"`
Username
string
`json:"
u
ser
name
"`
Password
string
`json:"
password
"`
SecretName
string
`json:"
secretName
"`
Secure
bool
`json:"secure"`
}
deploy/dynamo/operator/api/v1alpha1/dynamocomponent_types.go
View file @
a82f350a
...
...
@@ -20,10 +20,21 @@
package
v1alpha1
import
(
dynamoCommon
"github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/common"
"github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/schemas"
corev1
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
DynamoComponentConditionTypeImageBuilding
=
"ImageBuilding"
DynamoComponentConditionTypeImageExists
=
"ImageExists"
DynamoComponentConditionTypeImageExistsChecked
=
"ImageExistsChecked"
DynamoComponentConditionTypeModelsExists
=
"ModelsExists"
DynamoComponentConditionTypeDynamoComponentAvailable
=
"DynamoComponentAvailable"
)
// 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.
...
...
@@ -34,23 +45,50 @@ type DynamoComponentSpec struct {
// +kubebuilder:validation:Required
DynamoComponent
string
`json:"dynamoComponent"`
// +kubebuilder:validation:Required
Image
string
`json:"image"`
ServiceName
string
`json:"serviceName,omitempty"`
DownloadURL
string
`json:"downloadUrl,omitempty"`
ServiceName
string
`json:"serviceName,omitempty"`
// +kubebuilder:validation:Optional
Image
string
`json:"image,omitempty"`
ImageBuildTimeout
*
schemas
.
Duration
`json:"imageBuildTimeout,omitempty"`
// +kubebuilder:validation:Optional
BuildArgs
[]
string
`json:"buildArgs,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodMetadata
*
dynamoCommon
.
ExtraPodMetadata
`json:"imageBuilderExtraPodMetadata,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodSpec
*
dynamoCommon
.
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
ImagePullSecrets
[]
corev1
.
LocalObjectReference
`json:"imagePullSecrets,omitempty"`
// +kubebuilder:validation:Optional
DockerConfigJSONSecretName
string
`json:"dockerConfigJsonSecretName,omitempty"`
// +kubebuilder:validation:Optional
DownloaderContainerEnvFrom
[]
corev1
.
EnvFromSource
`json:"downloaderContainerEnvFrom,omitempty"`
}
// DynamoComponentStatus defines the observed state of DynamoComponent
type
DynamoComponentStatus
struct
{
// INSERT ADDITIONAL STATUS FIELD - define observed state of cluster
// Important: Run "make" to regenerate code after modifying this file
Ready
bool
`json:"ready
"`
Conditions
[]
metav1
.
Condition
`json:"conditions
"`
}
// +genclient
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:printcolumn:name="DynamoComponent",type="string",JSONPath=".spec.dynamoComponent",description="Dynamo component"
// +kubebuilder:printcolumn:name="Image-Exists",type="string",JSONPath=".status.conditions[?(@.type=='ImageExists')].status",description="Image Exists"
// +kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:resource:shortName=dc
// DynamoComponent is the Schema for the dynamocomponents API
type
DynamoComponent
struct
{
metav1
.
TypeMeta
`json:",inline"`
...
...
@@ -60,7 +98,7 @@ type DynamoComponent struct {
Status
DynamoComponentStatus
`json:"status,omitempty"`
}
//
+kubebuilder:object:root=true
//+kubebuilder:object:root=true
// DynamoComponentList contains a list of DynamoComponent
type
DynamoComponentList
struct
{
...
...
@@ -72,3 +110,28 @@ type DynamoComponentList struct {
func
init
()
{
SchemeBuilder
.
Register
(
&
DynamoComponent
{},
&
DynamoComponentList
{})
}
func
(
s
*
DynamoComponent
)
GetSpec
()
any
{
return
s
.
Spec
}
func
(
s
*
DynamoComponent
)
SetSpec
(
spec
any
)
{
s
.
Spec
=
spec
.
(
DynamoComponentSpec
)
}
func
(
s
*
DynamoComponent
)
IsReady
()
bool
{
return
meta
.
IsStatusConditionTrue
(
s
.
Status
.
Conditions
,
DynamoComponentConditionTypeDynamoComponentAvailable
)
}
// GetImage returns the docker image of the DynamoComponent
func
(
s
*
DynamoComponent
)
GetImage
()
string
{
if
s
.
Spec
.
Image
!=
""
{
// if the image is specified in the spec, return it
return
s
.
Spec
.
Image
}
// if the image is not specified in the spec, the image is stored in the status condition ImageExists
if
meta
.
FindStatusCondition
(
s
.
Status
.
Conditions
,
DynamoComponentConditionTypeImageExists
)
!=
nil
{
return
meta
.
FindStatusCondition
(
s
.
Status
.
Conditions
,
DynamoComponentConditionTypeImageExists
)
.
Message
}
return
""
}
deploy/dynamo/operator/api/v1alpha1/dynamocomponentdeployment_types.go
View file @
a82f350a
...
...
@@ -26,9 +26,8 @@ import (
)
const
(
DynamoGraphDeploymentConditionTypeAvailable
=
"Available"
DynamoGraphDeploymentConditionTypeDynamoComponentFound
=
"DynamoComponentFound"
DynamoGraphDeploymentConditionTypeDynamoComponentRequestFound
=
"DynamoComponentRequestFound"
DynamoGraphDeploymentConditionTypeAvailable
=
"Available"
DynamoGraphDeploymentConditionTypeDynamoComponentReady
=
"DynamoComponentReady"
)
// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN!
...
...
@@ -115,14 +114,14 @@ type DynamoComponentDeploymentStatus struct {
PodSelector
map
[
string
]
string
`json:"podSelector,omitempty"`
}
//+genclient
//+kubebuilder:object:root=true
//+kubebuilder:subresource:status
//+kubebuilder:storageversion
//+kubebuilder:printcolumn:name="DynamoComponent",type="string",JSONPath=".spec.dynamoComponent",description="Dynamo component"
//+kubebuilder:printcolumn:name="Available",type="string",JSONPath=".status.conditions[?(@.type=='Available')].status",description="Available"
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
//
+genclient
//
+kubebuilder:object:root=true
//
+kubebuilder:subresource:status
//
+kubebuilder:storageversion
//
+kubebuilder:printcolumn:name="DynamoComponent",type="string",JSONPath=".spec.dynamoComponent",description="Dynamo component"
//
+kubebuilder:printcolumn:name="Available",type="string",JSONPath=".status.conditions[?(@.type=='Available')].status",description="Available"
//
+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// +kubebuilder:resource:shortName=dcd
// DynamoComponentDeployment is the Schema for the dynamocomponentdeployments API
type
DynamoComponentDeployment
struct
{
metav1
.
TypeMeta
`json:",inline"`
...
...
deploy/dynamo/operator/api/v1alpha1/dynamocomponentrequest_types.go
deleted
100644 → 0
View file @
c544e8ec
/*
* SPDX-FileCopyrightText: Copyright (c) 2022 Atalaya Tech. Inc
* 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.
* Modifications Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES
*/
package
v1alpha1
import
(
dynamoCommon
"github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/common"
"github.com/ai-dynamo/dynamo/deploy/dynamo/operator/api/dynamo/schemas"
corev1
"k8s.io/api/core/v1"
metav1
"k8s.io/apimachinery/pkg/apis/meta/v1"
)
const
(
DynamoComponentRequestConditionTypeModelsSeeding
=
"ModelsSeeding"
DynamoComponentRequestConditionTypeImageBuilding
=
"ImageBuilding"
DynamoComponentRequestConditionTypeImageExists
=
"ImageExists"
DynamoComponentRequestConditionTypeImageExistsChecked
=
"ImageExistsChecked"
DynamoComponentRequestConditionTypeModelsExists
=
"ModelsExists"
DynamoComponentRequestConditionTypeDynamoComponentAvailable
=
"DynamoComponentAvailable"
)
// 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.
// DynamoComponentRequestSpec defines the desired state of DynamoComponentRequest
type
DynamoComponentRequestSpec
struct
{
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
// +kubebuilder:validation:Required
DynamoComponent
string
`json:"dynamoComponent"`
DownloadURL
string
`json:"downloadUrl,omitempty"`
ServiceName
string
`json:"serviceName,omitempty"`
// +kubebuilder:validation:Optional
Image
string
`json:"image,omitempty"`
ImageBuildTimeout
*
schemas
.
Duration
`json:"imageBuildTimeout,omitempty"`
// +kubebuilder:validation:Optional
BuildArgs
[]
string
`json:"buildArgs,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodMetadata
*
dynamoCommon
.
ExtraPodMetadata
`json:"imageBuilderExtraPodMetadata,omitempty"`
// +kubebuilder:validation:Optional
ImageBuilderExtraPodSpec
*
dynamoCommon
.
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"`
}
// DynamoComponentRequestStatus defines the observed state of DynamoComponentRequest
type
DynamoComponentRequestStatus
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="DynamoComponent",type="string",JSONPath=".spec.dynamoComponent",description="Dynamo component"
//+kubebuilder:printcolumn:name="Download-Url",type="string",JSONPath=".spec.downloadUrl",description="Download URL"
//+kubebuilder:printcolumn:name="Image-Exists",type="string",JSONPath=".status.conditions[?(@.type=='ImageExists')].status",description="Image Exists"
//+kubebuilder:printcolumn:name="DynamoComponent-Available",type="string",JSONPath=".status.conditions[?(@.type=='DynamoComponentAvailable')].status",description="Dynamo Component Available"
//+kubebuilder:printcolumn:name="Age",type="date",JSONPath=".metadata.creationTimestamp"
// DynamoComponentRequest is the Schema for the dynamocomponentrequests API
type
DynamoComponentRequest
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ObjectMeta
`json:"metadata,omitempty"`
Spec
DynamoComponentRequestSpec
`json:"spec,omitempty"`
Status
DynamoComponentRequestStatus
`json:"status,omitempty"`
}
//+kubebuilder:object:root=true
// DynamoComponentRequestList contains a list of DynamoComponentRequest
type
DynamoComponentRequestList
struct
{
metav1
.
TypeMeta
`json:",inline"`
metav1
.
ListMeta
`json:"metadata,omitempty"`
Items
[]
DynamoComponentRequest
`json:"items"`
}
func
init
()
{
SchemeBuilder
.
Register
(
&
DynamoComponentRequest
{},
&
DynamoComponentRequestList
{})
}
func
(
s
*
DynamoComponentRequest
)
GetSpec
()
any
{
return
s
.
Spec
}
func
(
s
*
DynamoComponentRequest
)
SetSpec
(
spec
any
)
{
s
.
Spec
=
spec
.
(
DynamoComponentRequestSpec
)
}
deploy/dynamo/operator/api/v1alpha1/dynamographdeployment_types.go
View file @
a82f350a
...
...
@@ -52,7 +52,7 @@ type DynamoGraphDeploymentStatus struct {
// +kubebuilder:object:root=true
// +kubebuilder:subresource:status
// +kubebuilder:resource:shortName=dgd
// DynamoGraphDeployment is the Schema for the dynamographdeployments API.
type
DynamoGraphDeployment
struct
{
metav1
.
TypeMeta
`json:",inline"`
...
...
deploy/dynamo/operator/api/v1alpha1/zz_generated.deepcopy.go
View file @
a82f350a
...
...
@@ -121,7 +121,7 @@ func (in *DynamoComponent) DeepCopyInto(out *DynamoComponent) {
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ObjectMeta
.
DeepCopyInto
(
&
out
.
ObjectMeta
)
in
.
Spec
.
DeepCopyInto
(
&
out
.
Spec
)
out
.
Status
=
in
.
Status
in
.
Status
.
DeepCopyInto
(
&
out
.
Status
)
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponent.
...
...
@@ -394,66 +394,7 @@ func (in *DynamoComponentList) DeepCopyObject() runtime.Object {
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
DynamoComponentRequest
)
DeepCopyInto
(
out
*
DynamoComponentRequest
)
{
*
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 DynamoComponentRequest.
func
(
in
*
DynamoComponentRequest
)
DeepCopy
()
*
DynamoComponentRequest
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DynamoComponentRequest
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
DynamoComponentRequest
)
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
*
DynamoComponentRequestList
)
DeepCopyInto
(
out
*
DynamoComponentRequestList
)
{
*
out
=
*
in
out
.
TypeMeta
=
in
.
TypeMeta
in
.
ListMeta
.
DeepCopyInto
(
&
out
.
ListMeta
)
if
in
.
Items
!=
nil
{
in
,
out
:=
&
in
.
Items
,
&
out
.
Items
*
out
=
make
([]
DynamoComponentRequest
,
len
(
*
in
))
for
i
:=
range
*
in
{
(
*
in
)[
i
]
.
DeepCopyInto
(
&
(
*
out
)[
i
])
}
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponentRequestList.
func
(
in
*
DynamoComponentRequestList
)
DeepCopy
()
*
DynamoComponentRequestList
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DynamoComponentRequestList
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func
(
in
*
DynamoComponentRequestList
)
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
*
DynamoComponentRequestSpec
)
DeepCopyInto
(
out
*
DynamoComponentRequestSpec
)
{
func
(
in
*
DynamoComponentSpec
)
DeepCopyInto
(
out
*
DynamoComponentSpec
)
{
*
out
=
*
in
if
in
.
ImageBuildTimeout
!=
nil
{
in
,
out
:=
&
in
.
ImageBuildTimeout
,
&
out
.
ImageBuildTimeout
...
...
@@ -487,10 +428,10 @@ func (in *DynamoComponentRequestSpec) DeepCopyInto(out *DynamoComponentRequestSp
*
out
=
new
(
v1
.
ResourceRequirements
)
(
*
in
)
.
DeepCopyInto
(
*
out
)
}
if
in
.
OCIRegistryIns
ec
u
re
!=
nil
{
in
,
out
:=
&
in
.
OCIRegistryIns
ec
u
re
,
&
out
.
OCIRegistryIns
ec
u
re
*
out
=
new
(
bool
)
*
*
out
=
*
*
in
if
in
.
ImagePullS
ecre
ts
!=
nil
{
in
,
out
:=
&
in
.
ImagePullS
ecre
ts
,
&
out
.
ImagePullS
ecre
ts
*
out
=
make
([]
v1
.
LocalObjectReference
,
len
(
*
in
)
)
copy
(
*
out
,
*
in
)
}
if
in
.
DownloaderContainerEnvFrom
!=
nil
{
in
,
out
:=
&
in
.
DownloaderContainerEnvFrom
,
&
out
.
DownloaderContainerEnvFrom
...
...
@@ -501,18 +442,18 @@ func (in *DynamoComponentRequestSpec) DeepCopyInto(out *DynamoComponentRequestSp
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponent
Request
Spec.
func
(
in
*
DynamoComponent
Request
Spec
)
DeepCopy
()
*
DynamoComponent
Request
Spec
{
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponentSpec.
func
(
in
*
DynamoComponentSpec
)
DeepCopy
()
*
DynamoComponentSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DynamoComponent
Request
Spec
)
out
:=
new
(
DynamoComponentSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
DynamoComponent
Request
Status
)
DeepCopyInto
(
out
*
DynamoComponent
Request
Status
)
{
func
(
in
*
DynamoComponentStatus
)
DeepCopyInto
(
out
*
DynamoComponentStatus
)
{
*
out
=
*
in
if
in
.
Conditions
!=
nil
{
in
,
out
:=
&
in
.
Conditions
,
&
out
.
Conditions
...
...
@@ -523,41 +464,6 @@ func (in *DynamoComponentRequestStatus) DeepCopyInto(out *DynamoComponentRequest
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponentRequestStatus.
func
(
in
*
DynamoComponentRequestStatus
)
DeepCopy
()
*
DynamoComponentRequestStatus
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DynamoComponentRequestStatus
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
DynamoComponentSpec
)
DeepCopyInto
(
out
*
DynamoComponentSpec
)
{
*
out
=
*
in
if
in
.
ImagePullSecrets
!=
nil
{
in
,
out
:=
&
in
.
ImagePullSecrets
,
&
out
.
ImagePullSecrets
*
out
=
make
([]
v1
.
LocalObjectReference
,
len
(
*
in
))
copy
(
*
out
,
*
in
)
}
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponentSpec.
func
(
in
*
DynamoComponentSpec
)
DeepCopy
()
*
DynamoComponentSpec
{
if
in
==
nil
{
return
nil
}
out
:=
new
(
DynamoComponentSpec
)
in
.
DeepCopyInto
(
out
)
return
out
}
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func
(
in
*
DynamoComponentStatus
)
DeepCopyInto
(
out
*
DynamoComponentStatus
)
{
*
out
=
*
in
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DynamoComponentStatus.
func
(
in
*
DynamoComponentStatus
)
DeepCopy
()
*
DynamoComponentStatus
{
if
in
==
nil
{
...
...
deploy/dynamo/operator/cmd/main.go
View file @
a82f350a
...
...
@@ -189,13 +189,13 @@ func main() {
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"DynamoComponentDeployment"
)
os
.
Exit
(
1
)
}
if
err
=
(
&
controller
.
DynamoComponentRe
questRe
conciler
{
if
err
=
(
&
controller
.
DynamoComponentReconciler
{
Client
:
mgr
.
GetClient
(),
Scheme
:
mgr
.
GetScheme
(),
Recorder
:
mgr
.
GetEventRecorderFor
(
"dynamo
-image-builder
"
),
Recorder
:
mgr
.
GetEventRecorderFor
(
"dynamo
component
"
),
Config
:
ctrlConfig
,
})
.
SetupWithManager
(
mgr
);
err
!=
nil
{
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"DynamoComponent
Request
"
)
setupLog
.
Error
(
err
,
"unable to create controller"
,
"controller"
,
"DynamoComponent"
)
os
.
Exit
(
1
)
}
if
err
=
(
&
controller
.
DynamoGraphDeploymentReconciler
{
...
...
deploy/dynamo/operator/config/crd/bases/nvidia.com_dynamocomponentdeployments.yaml
View file @
a82f350a
...
...
@@ -26,6 +26,8 @@ spec:
kind
:
DynamoComponentDeployment
listKind
:
DynamoComponentDeploymentList
plural
:
dynamocomponentdeployments
shortNames
:
-
dcd
singular
:
dynamocomponentdeployment
scope
:
Namespaced
versions
:
...
...
deploy/dynamo/operator/config/crd/bases/nvidia.com_dynamocomponentrequests.yaml
deleted
100644 → 0
View file @
c544e8ec
# 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
:
dynamocomponentrequests.nvidia.com
spec
:
group
:
nvidia.com
names
:
kind
:
DynamoComponentRequest
listKind
:
DynamoComponentRequestList
plural
:
dynamocomponentrequests
singular
:
dynamocomponentrequest
scope
:
Namespaced
versions
:
-
additionalPrinterColumns
:
-
description
:
Dynamo component
jsonPath
:
.spec.dynamoComponent
name
:
DynamoComponent
type
:
string
-
description
:
Download URL
jsonPath
:
.spec.downloadUrl
name
:
Download-Url
type
:
string
-
description
:
Image Exists
jsonPath
:
.status.conditions[?(@.type=='ImageExists')].status
name
:
Image-Exists
type
:
string
-
description
:
Dynamo Component Available
jsonPath
:
.status.conditions[?(@.type=='DynamoComponentAvailable')].status
name
:
DynamoComponent-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
:
buildArgs
:
items
:
type
:
string
type
:
array
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
dynamoComponent
:
type
:
string
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
ociRegistryInsecure
:
type
:
boolean
serviceName
:
type
:
string
required
:
-
dynamoComponent
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
:
{}
Prev
1
2
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