Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
OpenDAS
dynamo
Commits
7ca0faa8
Unverified
Commit
7ca0faa8
authored
Jun 04, 2025
by
julienmancuso
Committed by
GitHub
Jun 04, 2025
Browse files
feat: refactor docker registry secret management in operator (#1337)
parent
c675fd1b
Changes
16
Show whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
343 additions
and
203 deletions
+343
-203
deploy/cloud/helm/dynamo-platform-values.yaml
deploy/cloud/helm/dynamo-platform-values.yaml
+1
-0
deploy/cloud/helm/platform/components/operator/templates/component-serviceaccount.yaml
...mponents/operator/templates/component-serviceaccount.yaml
+30
-0
deploy/cloud/helm/platform/components/operator/templates/deployment.yaml
...lm/platform/components/operator/templates/deployment.yaml
+17
-1
deploy/cloud/helm/platform/components/operator/templates/image-builder-serviceaccount.yaml
...ents/operator/templates/image-builder-serviceaccount.yaml
+26
-0
deploy/cloud/helm/platform/components/operator/templates/planner.yaml
.../helm/platform/components/operator/templates/planner.yaml
+4
-0
deploy/cloud/helm/platform/components/operator/templates/regcred-secret.yaml
...latform/components/operator/templates/regcred-secret.yaml
+2
-0
deploy/cloud/helm/platform/components/operator/templates/secret-env.yaml
...lm/platform/components/operator/templates/secret-env.yaml
+2
-0
deploy/cloud/helm/platform/components/operator/values.yaml
deploy/cloud/helm/platform/components/operator/values.yaml
+10
-1
deploy/cloud/helm/platform/values.yaml
deploy/cloud/helm/platform/values.yaml
+1
-1
deploy/cloud/operator/api/dynamo/schemas/schemas.go
deploy/cloud/operator/api/dynamo/schemas/schemas.go
+0
-2
deploy/cloud/operator/go.mod
deploy/cloud/operator/go.mod
+54
-17
deploy/cloud/operator/go.sum
deploy/cloud/operator/go.sum
+135
-38
deploy/cloud/operator/internal/consts/consts.go
deploy/cloud/operator/internal/consts/consts.go
+1
-1
deploy/cloud/operator/internal/controller/dynamocomponent_controller.go
...perator/internal/controller/dynamocomponent_controller.go
+45
-127
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller.go
...ternal/controller/dynamocomponentdeployment_controller.go
+9
-9
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller_test.go
...l/controller/dynamocomponentdeployment_controller_test.go
+6
-6
No files found.
deploy/cloud/helm/dynamo-platform-values.yaml
View file @
7ca0faa8
...
@@ -37,6 +37,7 @@ dynamo-operator:
...
@@ -37,6 +37,7 @@ dynamo-operator:
gateway
:
${ISTIO_GATEWAY}
gateway
:
${ISTIO_GATEWAY}
ingressHostSuffix
:
${DYNAMO_INGRESS_SUFFIX}
ingressHostSuffix
:
${DYNAMO_INGRESS_SUFFIX}
dockerRegistry
:
dockerRegistry
:
useKubernetesSecret
:
true
server
:
${PIPELINES_DOCKER_SERVER}
server
:
${PIPELINES_DOCKER_SERVER}
username
:
${PIPELINES_DOCKER_USERNAME}
username
:
${PIPELINES_DOCKER_USERNAME}
password
:
${PIPELINES_DOCKER_PASSWORD}
password
:
${PIPELINES_DOCKER_PASSWORD}
...
...
deploy/cloud/helm/platform/components/operator/templates/component-serviceaccount.yaml
0 → 100644
View file @
7ca0faa8
# 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.
apiVersion
:
v1
kind
:
ServiceAccount
metadata
:
name
:
{{
include "dynamo-operator.fullname" .
}}
-component
labels
:
app.kubernetes.io/component
:
rbac
app.kubernetes.io/created-by
:
dynamo-operator
app.kubernetes.io/part-of
:
dynamo-operator
nvidia.com/dynamo-component-pod
:
"
true"
{{
- include "dynamo-operator.labels" . | nindent 4
}}
annotations
:
{{
- toYaml .Values.dynamo.components.serviceAccount.annotations | nindent 4
}}
{{
- if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
imagePullSecrets
:
-
name
:
dynamo-regcred
{{
- end
}}
deploy/cloud/helm/platform/components/operator/templates/deployment.yaml
View file @
7ca0faa8
...
@@ -96,12 +96,15 @@ spec:
...
@@ -96,12 +96,15 @@ spec:
{{
- if .Values.dynamo.enableLWS
}}
{{
- if .Values.dynamo.enableLWS
}}
-
--enable-lws
-
--enable-lws
{{
- end
}}
{{
- end
}}
command
:
command
:
-
/manager
-
/manager
env
:
env
:
-
name
:
KUBERNETES_CLUSTER_DOMAIN
-
name
:
KUBERNETES_CLUSTER_DOMAIN
value
:
{{
quote .Values.kubernetesClusterDomain
}}
value
:
{{
quote .Values.kubernetesClusterDomain
}}
{{
if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
-
name
:
DOCKER_CONFIG
value
:
/docker/.docker
{{
end
}}
envFrom
:
envFrom
:
-
secretRef
:
-
secretRef
:
name
:
dynamo-deployment-env
name
:
dynamo-deployment-env
...
@@ -124,6 +127,19 @@ spec:
...
@@ -124,6 +127,19 @@ spec:
10 }}
10 }}
securityContext: {{- toYaml .Values.controllerManager.manager.containerSecurityContext
securityContext: {{- toYaml .Values.controllerManager.manager.containerSecurityContext
| nindent 10 }}
| nindent 10 }}
{{
if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
volumeMounts
:
-
name
:
docker-config
mountPath
:
/docker/.docker
readOnly
:
true
volumes
:
-
name
:
docker-config
secret
:
secretName
:
dynamo-regcred
items
:
-
key
:
.dockerconfigjson
path
:
config.json
{{
end
}}
securityContext
:
securityContext
:
runAsNonRoot
:
true
runAsNonRoot
:
true
serviceAccountName
:
{{
include "dynamo-operator.fullname" .
}}
-controller-manager
serviceAccountName
:
{{
include "dynamo-operator.fullname" .
}}
-controller-manager
...
...
deploy/cloud/helm/platform/components/operator/templates/image-builder-serviceaccount.yaml
0 → 100644
View file @
7ca0faa8
# 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.
apiVersion
:
v1
kind
:
ServiceAccount
metadata
:
name
:
{{
include "dynamo-operator.fullname" .
}}
-image-builder
labels
:
app.kubernetes.io/component
:
rbac
app.kubernetes.io/created-by
:
dynamo-operator
app.kubernetes.io/part-of
:
dynamo-operator
nvidia.com/dynamo-image-builder-pod
:
"
true"
{{
- include "dynamo-operator.labels" . | nindent 4
}}
annotations
:
{{
- toYaml .Values.dynamo.imageBuilder.serviceAccount.annotations | nindent 4
}}
\ No newline at end of file
deploy/cloud/helm/platform/components/operator/templates/planner.yaml
View file @
7ca0faa8
...
@@ -18,6 +18,10 @@ kind: ServiceAccount
...
@@ -18,6 +18,10 @@ kind: ServiceAccount
metadata
:
metadata
:
name
:
planner-serviceaccount
name
:
planner-serviceaccount
namespace
:
{{
.Values.namespace
}}
namespace
:
{{
.Values.namespace
}}
{{
- if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
imagePullSecrets
:
-
name
:
dynamo-regcred
{{
- end
}}
---
---
apiVersion
:
rbac.authorization.k8s.io/v1
apiVersion
:
rbac.authorization.k8s.io/v1
kind
:
Role
kind
:
Role
...
...
deploy/cloud/helm/platform/components/operator/templates/regcred-secret.yaml
View file @
7ca0faa8
...
@@ -12,6 +12,7 @@
...
@@ -12,6 +12,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License.
{{
- if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
apiVersion
:
v1
apiVersion
:
v1
kind
:
Secret
kind
:
Secret
metadata
:
metadata
:
...
@@ -21,3 +22,4 @@ metadata:
...
@@ -21,3 +22,4 @@ metadata:
type
:
kubernetes.io/dockerconfigjson
type
:
kubernetes.io/dockerconfigjson
data
:
data
:
.dockerconfigjson
:
{{
include "dynamo-operator.dockerconfig" . | b64enc
}}
.dockerconfigjson
:
{{
include "dynamo-operator.dockerconfig" . | b64enc
}}
{{
- end
}}
\ No newline at end of file
deploy/cloud/helm/platform/components/operator/templates/secret-env.yaml
View file @
7ca0faa8
...
@@ -38,7 +38,9 @@ stringData:
...
@@ -38,7 +38,9 @@ stringData:
{{
- end
}}
{{
- end
}}
DOCKER_REGISTRY_SERVER
:
{{
.Values.dynamo.dockerRegistry.server | quote
}}
DOCKER_REGISTRY_SERVER
:
{{
.Values.dynamo.dockerRegistry.server | quote
}}
{{
- if .Values.dynamo.dockerRegistry.useKubernetesSecret
}}
DOCKER_REGISTRY_SECRET_NAME
:
"
dynamo-regcred"
DOCKER_REGISTRY_SECRET_NAME
:
"
dynamo-regcred"
{{
- end
}}
DOCKER_REGISTRY_SECURE
:
{{
.Values.dynamo.dockerRegistry.secure | quote
}}
DOCKER_REGISTRY_SECURE
:
{{
.Values.dynamo.dockerRegistry.secure | quote
}}
DOCKER_REGISTRY_DYNAMO_COMPONENTS_REPOSITORY_NAME
:
{{
.Values.dynamo.dockerRegistry.dynamoComponentsRepositoryName | quote
}}
DOCKER_REGISTRY_DYNAMO_COMPONENTS_REPOSITORY_NAME
:
{{
.Values.dynamo.dockerRegistry.dynamoComponentsRepositoryName | quote
}}
...
...
deploy/cloud/helm/platform/components/operator/values.yaml
View file @
7ca0faa8
...
@@ -73,6 +73,13 @@ controllerManager:
...
@@ -73,6 +73,13 @@ controllerManager:
annotations
:
{}
annotations
:
{}
dynamo
:
dynamo
:
imageBuilder
:
serviceAccount
:
annotations
:
{}
components
:
serviceAccount
:
annotations
:
{}
enableLWS
:
false
enableLWS
:
false
apiStore
:
apiStore
:
endpoint
:
http://dynamo-server.dynamo-system.svc.cluster.local
endpoint
:
http://dynamo-server.dynamo-system.svc.cluster.local
...
@@ -89,7 +96,9 @@ dynamo:
...
@@ -89,7 +96,9 @@ dynamo:
dockerRegistry
:
dockerRegistry
:
server
:
'
nvcr.io/nvidian/nim-llm-dev'
server
:
'
nvcr.io/nvidian/nim-llm-dev'
inClusterServer
:
'
'
# set to true if you want to use the kubernetes secret for the registry credentials
# if false, no secret will be created and used. Allows to use cloud provider mechanisms for authentication (e.g. Workload Identity for GKE, ...)
useKubernetesSecret
:
false
username
:
'
$oauthtoken'
username
:
'
$oauthtoken'
password
:
"
"
password
:
"
"
passwordExistingSecretName
:
'
'
passwordExistingSecretName
:
'
'
...
...
deploy/cloud/helm/platform/values.yaml
View file @
7ca0faa8
...
@@ -43,8 +43,8 @@ dynamo-operator:
...
@@ -43,8 +43,8 @@ dynamo-operator:
debugger
:
python:3.12-slim
debugger
:
python:3.12-slim
enableRestrictedSecurityContext
:
false
enableRestrictedSecurityContext
:
false
dockerRegistry
:
dockerRegistry
:
useKubernetesSecret
:
false
server
:
"
"
server
:
"
"
inClusterServer
:
"
"
username
:
"
"
username
:
"
"
password
:
"
"
password
:
"
"
secure
:
true
secure
:
true
...
...
deploy/cloud/operator/api/dynamo/schemas/schemas.go
View file @
7ca0faa8
...
@@ -73,8 +73,6 @@ const (
...
@@ -73,8 +73,6 @@ const (
type
DockerRegistrySchema
struct
{
type
DockerRegistrySchema
struct
{
DynamoRepositoryURI
string
`json:"dynamoRepositoryURI"`
DynamoRepositoryURI
string
`json:"dynamoRepositoryURI"`
Server
string
`json:"server"`
Server
string
`json:"server"`
Username
string
`json:"username"`
Password
string
`json:"password"`
SecretName
string
`json:"secretName"`
SecretName
string
`json:"secretName"`
Secure
bool
`json:"secure"`
Secure
bool
`json:"secure"`
}
}
deploy/cloud/operator/go.mod
View file @
7ca0faa8
...
@@ -8,14 +8,16 @@ require (
...
@@ -8,14 +8,16 @@ require (
dario.cat/mergo v1.0.1
dario.cat/mergo v1.0.1
emperror.dev/errors v0.8.1
emperror.dev/errors v0.8.1
github.com/apparentlymart/go-shquot v0.0.1
github.com/apparentlymart/go-shquot v0.0.1
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1
github.com/bsm/gomega v1.27.10
github.com/bsm/gomega v1.27.10
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589
github.com/google/go-cmp v0.7.0
github.com/google/go-cmp v0.7.0
github.com/google/go-containerregistry v0.20.5
github.com/huandu/xstrings v1.4.0
github.com/huandu/xstrings v1.4.0
github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/mitchellh/hashstructure/v2 v2.0.2
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/ginkgo/v2 v2.23.4
github.com/onsi/gomega v1.37.0
github.com/onsi/gomega v1.37.0
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.2
github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.71.2
github.com/prune998/docker-registry-client v0.0.0-20200114164314-f8cd511a014c
github.com/rs/xid v1.4.0
github.com/rs/xid v1.4.0
github.com/sergeymakinen/go-quote v1.1.0
github.com/sergeymakinen/go-quote v1.1.0
github.com/sirupsen/logrus v1.9.3
github.com/sirupsen/logrus v1.9.3
...
@@ -35,14 +37,41 @@ require (
...
@@ -35,14 +37,41 @@ require (
)
)
require (
require (
cloud.google.com/go/compute/metadata v0.6.0 // indirect
github.com/Azure/azure-sdk-for-go v46.4.0+incompatible // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.28 // indirect
github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
github.com/Azure/go-autorest/logger v0.2.1 // indirect
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
github.com/aws/aws-sdk-go-v2 v1.36.1 // indirect
github.com/aws/aws-sdk-go-v2/config v1.29.6 // indirect
github.com/aws/aws-sdk-go-v2/credentials v1.17.59 // indirect
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 // indirect
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 // indirect
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 // indirect
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect
github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3 // indirect
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 // indirect
github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 // indirect
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 // indirect
github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 // indirect
github.com/aws/smithy-go v1.22.2 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/cespare/xxhash/v2 v2.3.0 // indirect
github.com/containerd/stargz-snapshotter/estargz v0.16.3 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-semver v0.3.1 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
github.com/distribution/reference v0.6.0 // indirect
github.com/dimchansky/utfbom v1.1.1 // indirect
github.com/docker/cli v28.1.1+incompatible // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/distribution v2.8.3+incompatible // indirect
github.com/docker/
libtrust v0.0.0-20150114040149-fa567046d9b1
// indirect
github.com/docker/
docker-credential-helpers v0.9.3
// indirect
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
github.com/evanphx/json-patch/v5 v5.9.11 // indirect
...
@@ -55,50 +84,58 @@ require (
...
@@ -55,50 +84,58 @@ require (
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-openapi/swag v0.23.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/btree v1.1.3 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/gnostic-models v0.6.8 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/google/uuid v1.6.0 // indirect
github.com/gorilla/mux v1.8.1 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.1
7.9
// indirect
github.com/klauspost/compress v1.1
8.0
// indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.
0
// indirect
github.com/opencontainers/image-spec v1.1.
1
// indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_golang v1.20.2 // indirect
github.com/prometheus/client_golang v1.20.2 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/client_model v0.6.1 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/common v0.55.0 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/prometheus/procfs v0.15.1 // indirect
github.com/spf13/pflag v1.0.5 // indirect
github.com/rogpeppe/go-internal v1.13.1 // indirect
github.com/spf13/pflag v1.0.6 // indirect
github.com/vbatts/tar-split v0.12.1 // indirect
github.com/x448/float16 v0.8.4 // indirect
github.com/x448/float16 v0.8.4 // indirect
go.etcd.io/etcd/api/v3 v3.5.16 // indirect
go.etcd.io/etcd/api/v3 v3.5.16 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.16 // indirect
go.etcd.io/etcd/client/pkg/v3 v3.5.16 // indirect
go.opentelemetry.io/otel v1.36.0 // indirect
go.opentelemetry.io/otel/sdk v1.36.0 // indirect
go.opentelemetry.io/otel/sdk/metric v1.35.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/automaxprocs v1.6.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/zap v1.27.0 // indirect
go.uber.org/zap v1.27.0 // indirect
golang.org/x/net v0.37.0 // indirect
golang.org/x/crypto v0.38.0 // indirect
golang.org/x/oauth2 v0.23.0 // indirect
golang.org/x/net v0.40.0 // indirect
golang.org/x/sync v0.12.0 // indirect
golang.org/x/oauth2 v0.30.0 // indirect
golang.org/x/sys v0.32.0 // indirect
golang.org/x/sync v0.14.0 // indirect
golang.org/x/term v0.30.0 // indirect
golang.org/x/sys v0.33.0 // indirect
golang.org/x/text v0.23.0 // indirect
golang.org/x/term v0.32.0 // indirect
golang.org/x/text v0.25.0 // indirect
golang.org/x/time v0.7.0 // indirect
golang.org/x/time v0.7.0 // indirect
golang.org/x/tools v0.3
1
.0 // indirect
golang.org/x/tools v0.3
3
.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-202
40826202546-f6391c0de4c
7 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-202
50519155744-55703ea1f23
7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-202
40826202546-f6391c0de4c
7 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-202
50519155744-55703ea1f23
7 // indirect
google.golang.org/grpc v1.
65.0
// indirect
google.golang.org/grpc v1.
72.1
// indirect
google.golang.org/protobuf v1.36.6 // indirect
google.golang.org/protobuf v1.36.6 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
gotest.tools/v3 v3.5.2 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/klog/v2 v2.130.1 // indirect
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
k8s.io/kube-openapi v0.0.0-20241105132330-32ad38e42d3f // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
...
...
deploy/cloud/operator/go.sum
View file @
7ca0faa8
cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I=
cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg=
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk=
emperror.dev/errors v0.8.1 h1:UavXZ5cSX/4u9iyvH6aDcuGkVjeexUGJ7Ij7G4VfQT0=
emperror.dev/errors v0.8.1 h1:UavXZ5cSX/4u9iyvH6aDcuGkVjeexUGJ7Ij7G4VfQT0=
emperror.dev/errors v0.8.1/go.mod h1:YcRvLPh626Ubn2xqtoprejnA5nFha+TJ+2vew48kWuE=
emperror.dev/errors v0.8.1/go.mod h1:YcRvLPh626Ubn2xqtoprejnA5nFha+TJ+2vew48kWuE=
github.com/Azure/azure-sdk-for-go v46.4.0+incompatible h1:fCN6Pi+tEiEwFa8RSmtVlFHRXEZ+DJm9gfx/MKqYWw4=
github.com/Azure/azure-sdk-for-go v46.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc=
github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA=
github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4=
github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg=
github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/apparentlymart/go-shquot v0.0.1 h1:MGV8lwxF4zw75lN7e0MGs7o6AFYn7L6AZaExUpLh0Mo=
github.com/apparentlymart/go-shquot v0.0.1 h1:MGV8lwxF4zw75lN7e0MGs7o6AFYn7L6AZaExUpLh0Mo=
github.com/apparentlymart/go-shquot v0.0.1/go.mod h1:lw58XsE5IgUXZ9h0cxnypdx31p9mPFIVEQ9P3c7MlrU=
github.com/apparentlymart/go-shquot v0.0.1/go.mod h1:lw58XsE5IgUXZ9h0cxnypdx31p9mPFIVEQ9P3c7MlrU=
github.com/aws/aws-sdk-go-v2 v1.36.1 h1:iTDl5U6oAhkNPba0e1t1hrwAo02ZMqbrGq4k5JBWM5E=
github.com/aws/aws-sdk-go-v2 v1.36.1/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM=
github.com/aws/aws-sdk-go-v2/config v1.29.6 h1:fqgqEKK5HaZVWLQoLiC9Q+xDlSp+1LYidp6ybGE2OGg=
github.com/aws/aws-sdk-go-v2/config v1.29.6/go.mod h1:Ft+WLODzDQmCTHDvqAH1JfC2xxbZ0MxpZAcJqmE1LTQ=
github.com/aws/aws-sdk-go-v2/credentials v1.17.59 h1:9btwmrt//Q6JcSdgJOLI98sdr5p7tssS9yAsGe8aKP4=
github.com/aws/aws-sdk-go-v2/credentials v1.17.59/go.mod h1:NM8fM6ovI3zak23UISdWidyZuI1ghNe2xjzUZAyT+08=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28 h1:KwsodFKVQTlI5EyhRSugALzsV6mG/SGrdjlMXSZSdso=
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.28/go.mod h1:EY3APf9MzygVhKuPXAc5H+MkGb8k/DOSQjWS0LgkKqI=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32 h1:BjUcr3X3K0wZPGFg2bxOWW3VPN8rkE3/61zhP+IHviA=
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.32/go.mod h1:80+OGC/bgzzFFTUmcuwD0lb4YutwQeKLFpmt6hoWapU=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32 h1:m1GeXHVMJsRsUAqG6HjZWx9dj7F5TR+cF1bjyfYyBd4=
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.32/go.mod h1:IitoQxGfaKdVLNg0hD8/DXmAqNy0H4K2H2Sf91ti8sI=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk=
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3 h1:a+210FCU/pR5hhKRaskRfX/ogcyyzFBrehcTk5DTAyU=
github.com/aws/aws-sdk-go-v2/service/ecr v1.40.3/go.mod h1:dtD3a4sjUjVL86e0NUvaqdGvds5ED6itUiZPDaT+Gh8=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2 h1:E6/Myrj9HgLF22medmDrKmbpm4ULsa+cIBNx3phirBk=
github.com/aws/aws-sdk-go-v2/service/ecrpublic v1.31.2/go.mod h1:OQ8NALFcchBJ/qruak6zKUQodovnTKKaReTuCkc5/9Y=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA=
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13 h1:SYVGSFQHlchIcy6e7x12bsrxClCXSP5et8cqVhL8cuw=
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.13/go.mod h1:kizuDaLX37bG5WZaoxGPQR/LNFXpxp0vsUnqfkWXfNE=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.15 h1:/eE3DogBjYlvlbhd2ssWyeuovWunHLxfgw3s/OJa4GQ=
github.com/aws/aws-sdk-go-v2/service/sso v1.24.15/go.mod h1:2PCJYpi7EKeA5SkStAmZlF6fi0uUABuhtF8ILHjGc3Y=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14 h1:M/zwXiL2iXUrHputuXgmO94TVNmcenPHxgLXLutodKE=
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.14/go.mod h1:RVwIw3y/IqxC2YEXSIkAzRDdEU1iRabDPaYjpGCbCGQ=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.14 h1:TzeR06UCMUq+KA3bDkujxK1GVGy+G8qQN/QVYzGLkQE=
github.com/aws/aws-sdk-go-v2/service/sts v1.33.14/go.mod h1:dspXf/oYWGWo6DEvj98wpaTeqt5+DMidZD0A9BYTizc=
github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ=
github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1 h1:50sS0RWhGpW/yZx2KcDNEb1u1MANv5BMEkJgcieEDTA=
github.com/awslabs/amazon-ecr-credential-helper/ecr-login v0.9.1/go.mod h1:ErZOtbzuHabipRTDTor0inoRlYwbsV1ovwSxjGs/uJo=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589 h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
github.com/chrismellard/docker-credential-acr-env v0.0.0-20230304212654-82a0ddb27589/go.mod h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
github.com/coreos/go-systemd/v22 v22.5.0 h1:RrqgGjYQKalulkV8NGVIfkXQf6YYmOyiJKk8iXXhfZs=
...
@@ -18,12 +79,14 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
...
@@ -18,12 +79,14 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
github.com/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U=
github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE=
github.com/docker/cli v28.1.1+incompatible h1:eyUemzeI45DY7eDPuwUcmDyDj1pM98oD5MdSpiItp8k=
github.com/docker/cli v28.1.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/
libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4
=
github.com/docker/
docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8
=
github.com/docker/
libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE
=
github.com/docker/
docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo
=
github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk=
github.com/emicklei/go-restful/v3 v3.12.0 h1:y2DdzBAURM29NFF94q6RaY4vjIH1rtwDapwQtU84iWk=
github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/emicklei/go-restful/v3 v3.12.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=
github.com/evanphx/json-patch v5.7.0+incompatible h1:vgGkfT/9f8zE6tvSCe74nfpAVDQ2tG6yudJd8LBksgI=
...
@@ -36,6 +99,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv
...
@@ -36,6 +99,8 @@ github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0 h1:XGdV8XW8zdwFiwOA2Dryh1gj2KRQyOOoNmBy4EplIcQ=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-logr/zapr v1.3.0/go.mod h1:YKepepNBd1u/oyhd/yQmtjVXmm9uML4IXUgMOwR8/Gg=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
...
@@ -49,6 +114,10 @@ github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZ
...
@@ -49,6 +114,10 @@ github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZ
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
...
@@ -58,6 +127,8 @@ github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYu
...
@@ -58,6 +127,8 @@ github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYu
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
github.com/google/go-containerregistry v0.20.5 h1:4RnlYcDs5hoA++CeFjlbZ/U9Yp1EuWr+UhhTyYQjOP0=
github.com/google/go-containerregistry v0.20.5/go.mod h1:Q14vdOOzug02bwnhMkZKD4e30pDaD9W65qzXpyzF49E=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
...
@@ -65,8 +136,6 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J
...
@@ -65,8 +136,6 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
github.com/huandu/xstrings v1.4.0 h1:D17IlohoQq4UcpqD7fDk80P7l+lwAmlFaBHgOipl2FU=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/huandu/xstrings v1.4.0/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
...
@@ -75,8 +144,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
...
@@ -75,8 +144,8 @@ github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnr
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.1
7.9
h1:
6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA
=
github.com/klauspost/compress v1.1
8.0
h1:
c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo
=
github.com/klauspost/compress v1.1
7.9
/go.mod h1:
Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw
=
github.com/klauspost/compress v1.1
8.0
/go.mod h1:
2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ
=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
...
@@ -85,6 +154,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
...
@@ -85,6 +154,8 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
github.com/mitchellh/hashstructure/v2 v2.0.2 h1:vGKWl0YJqUNxE8d+h8f6NJLcCJrgbhC4NcD46KavDd4=
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/mitchellh/hashstructure/v2 v2.0.2/go.mod h1:MG3aRVU/N29oo/V/IhBX8GR/zz4kQkprJgF2EVszyDE=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
...
@@ -100,8 +171,8 @@ github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
...
@@ -100,8 +171,8 @@ github.com/onsi/gomega v1.37.0 h1:CdEG8g0S133B4OswTDC/5XPSzE1OeP29QOioj2PID2Y=
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
github.com/onsi/gomega v1.37.0/go.mod h1:8D9+Txp43QWKhM24yyOBEdpkzN8FvJyAwecBgsU4KU0=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.
0
h1:
8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug
=
github.com/opencontainers/image-spec v1.1.
1
h1:
y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040
=
github.com/opencontainers/image-spec v1.1.
0
/go.mod h1:
W4s4sFTMaBeK1BQLXbG4AdM2szdn85PY75RI83NrTr
M=
github.com/opencontainers/image-spec v1.1.
1
/go.mod h1:
qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0
M=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
...
@@ -119,23 +190,23 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
...
@@ -119,23 +190,23 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/prune998/docker-registry-client v0.0.0-20200114164314-f8cd511a014c h1:YppmMj184YDFwHUCLq6n9m3MC6J+82OTi4hRGYVAZc4=
github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
github.com/prune998/docker-registry-client v0.0.0-20200114164314-f8cd511a014c/go.mod h1:0mv86yBh00jRSWDYBNe2Ev+RYZT/iVDWGeFS+B3gpMI=
github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
github.com/rs/xid v1.4.0 h1:qd7wPTDkN6KQx2VmMBLrpHkiyQwgFXRnkOLacUiaSNY=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/rs/xid v1.4.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
github.com/sergeymakinen/go-quote v1.1.0 h1:mwCRejFVH26bf6TFaBNdXixeB5LtNU1yVHrfsNAmnjc=
github.com/sergeymakinen/go-quote v1.1.0 h1:mwCRejFVH26bf6TFaBNdXixeB5LtNU1yVHrfsNAmnjc=
github.com/sergeymakinen/go-quote v1.1.0/go.mod h1:AuXYBfIQbIXlzf9KawRyfSxc/YGAyVLtMUUtmc5oGHA=
github.com/sergeymakinen/go-quote v1.1.0/go.mod h1:AuXYBfIQbIXlzf9KawRyfSxc/YGAyVLtMUUtmc5oGHA=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
github.com/spf13/pflag v1.0.
5
h1:
iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA
=
github.com/spf13/pflag v1.0.
6
h1:
jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o
=
github.com/spf13/pflag v1.0.
5
/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/spf13/pflag v1.0.
6
/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
...
@@ -146,6 +217,18 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.16 h1:ZgY48uH6UvB+/7R9Yf4x574uCO3jIx0TRDyetSf
...
@@ -146,6 +217,18 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.16 h1:ZgY48uH6UvB+/7R9Yf4x574uCO3jIx0TRDyetSf
go.etcd.io/etcd/client/pkg/v3 v3.5.16/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E=
go.etcd.io/etcd/client/pkg/v3 v3.5.16/go.mod h1:V8acl8pcEK0Y2g19YlOV9m9ssUe6MgiDSobSoaBAM0E=
go.etcd.io/etcd/client/v3 v3.5.16 h1:sSmVYOAHeC9doqi0gv7v86oY/BTld0SEFGaxsU9eRhE=
go.etcd.io/etcd/client/v3 v3.5.16 h1:sSmVYOAHeC9doqi0gv7v86oY/BTld0SEFGaxsU9eRhE=
go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50=
go.etcd.io/etcd/client/v3 v3.5.16/go.mod h1:X+rExSGkyqxvu276cr2OwPLBaeqFu1cIl4vmRjAD/50=
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
...
@@ -159,53 +242,65 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
...
@@ -159,53 +242,65 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.0.0-20220722155217-630584e8d5aa/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI=
golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1
2
.0 h1:
MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw
=
golang.org/x/sync v0.1
4
.0 h1:
woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ
=
golang.org/x/sync v0.1
2
.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.1
4
.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.32.0 h1:s77OFDvIQeibCmezSnk/q6iAfkdiQaJi4VzroCFrN20=
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
golang.org/x/sys v0.32.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0 h1:ntUhktv3OPE6TgYxXWv9vKvUSJyIFJlyohwbkEwPrKQ=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/time v0.7.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/tools v0.3
1
.0 h1:
0EedkvKDbh+qistFTd0Bcwe/YLh4vHwWEkiI0toFIBU
=
golang.org/x/tools v0.3
3
.0 h1:
4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc
=
golang.org/x/tools v0.3
1
.0/go.mod h1:
naFTU+Cev749tSJRXJlna0T3WxKvb1kWEx15xA4SdmQ
=
golang.org/x/tools v0.3
3
.0/go.mod h1:
CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI
=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0 h1:Ci3iUJyx9UeRx7CeFN8ARgGbkESwJK+KB9lLcWxY/Zw=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
gomodules.xyz/jsonpatch/v2 v2.4.0/go.mod h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
google.golang.org/genproto/googleapis/api v0.0.0-202
40826202546-f6391c0de4c7 h1:YcyjlL1PRr2Q17/I0dPk2JmYS5CDXfcdb2Z3YRioEbw
=
google.golang.org/genproto/googleapis/api v0.0.0-202
50519155744-55703ea1f237 h1:Kog3KlB4xevJlAcbbbzPfRG0+X9fdoGM+UBRKVz6Wr0
=
google.golang.org/genproto/googleapis/api v0.0.0-202
40826202546-f6391c0de4c7/go.mod h1:OCdP9MfskevB/rbYvHTsXTtKC+3bHWajPdoKgjcYkf
o=
google.golang.org/genproto/googleapis/api v0.0.0-202
50519155744-55703ea1f237/go.mod h1:ezi0AVyMKDWy5xAncvjLWH7UcLBB5n7y2fQ8MzjJct
o=
google.golang.org/genproto/googleapis/rpc v0.0.0-202
40826202546-f6391c0de4c7 h1:2035KHhUv+EpyB+hWgJnaWKJOdX1E95w2S8Rr4uWKTs
=
google.golang.org/genproto/googleapis/rpc v0.0.0-202
50519155744-55703ea1f237 h1:cJfm9zPbe1e873mHJzmQ1nwVEeRDU/T1wXDK2kUSU34
=
google.golang.org/genproto/googleapis/rpc v0.0.0-202
40826202546-f6391c0de4c7/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU
=
google.golang.org/genproto/googleapis/rpc v0.0.0-202
50519155744-55703ea1f237/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A
=
google.golang.org/grpc v1.
65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc
=
google.golang.org/grpc v1.
72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA
=
google.golang.org/grpc v1.
65.0
/go.mod h1:
WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ
=
google.golang.org/grpc v1.
72.1
/go.mod h1:
wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM
=
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
...
@@ -220,6 +315,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
...
@@ -220,6 +315,8 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
istio.io/api v1.23.1 h1:bm2XF0j058FfzWVHUfpmMj4sFDkcD1X609qs5AU97Pc=
istio.io/api v1.23.1 h1:bm2XF0j058FfzWVHUfpmMj4sFDkcD1X609qs5AU97Pc=
istio.io/api v1.23.1/go.mod h1:QPSTGXuIQdnZFEm3myf9NZ5uBMwCdJWUvfj9ZZ+2oBM=
istio.io/api v1.23.1/go.mod h1:QPSTGXuIQdnZFEm3myf9NZ5uBMwCdJWUvfj9ZZ+2oBM=
istio.io/client-go v1.23.1 h1:IX2cgUUXnVYo+9H6bFGSp/vuKVLPUkmiN8qk1/mvsYs=
istio.io/client-go v1.23.1 h1:IX2cgUUXnVYo+9H6bFGSp/vuKVLPUkmiN8qk1/mvsYs=
...
...
deploy/cloud/operator/internal/consts/consts.go
View file @
7ca0faa8
...
@@ -56,7 +56,7 @@ const (
...
@@ -56,7 +56,7 @@ const (
KubeLabelValueTrue
=
"true"
KubeLabelValueTrue
=
"true"
KubeLabelDynamoImageBuilderPod
=
"nvidia.com/dynamo-image-builder-pod"
KubeLabelDynamoImageBuilderPod
=
"nvidia.com/dynamo-image-builder-pod"
KubeLabelDynamo
Deploym
entPod
=
"nvidia.com/dynamo-
deploym
ent-pod"
KubeLabelDynamo
Compon
entPod
=
"nvidia.com/dynamo-
compon
ent-pod"
KubeAnnotationDynamoRepository
=
"nvidia.com/dynamo-repository"
KubeAnnotationDynamoRepository
=
"nvidia.com/dynamo-repository"
KubeAnnotationDynamoVersion
=
"nvidia.com/dynamo-version"
KubeAnnotationDynamoVersion
=
"nvidia.com/dynamo-version"
...
...
deploy/cloud/operator/internal/controller/dynamocomponent_controller.go
View file @
7ca0faa8
...
@@ -23,9 +23,7 @@ import (
...
@@ -23,9 +23,7 @@ import (
"bytes"
"bytes"
"context"
"context"
"crypto/md5"
"crypto/md5"
"encoding/base64"
"encoding/hex"
"encoding/hex"
"encoding/json"
"fmt"
"fmt"
"os"
"os"
"path/filepath"
"path/filepath"
...
@@ -40,9 +38,14 @@ import (
...
@@ -40,9 +38,14 @@ import (
commonconsts
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/consts"
commonconsts
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/consts"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
"github.com/apparentlymart/go-shquot/shquot"
"github.com/apparentlymart/go-shquot/shquot"
"github.com/awslabs/amazon-ecr-credential-helper/ecr-login"
"github.com/chrismellard/docker-credential-acr-env/pkg/credhelper"
"github.com/google/go-containerregistry/pkg/authn"
"github.com/google/go-containerregistry/pkg/name"
"github.com/google/go-containerregistry/pkg/v1/google"
"github.com/google/go-containerregistry/pkg/v1/remote"
"github.com/huandu/xstrings"
"github.com/huandu/xstrings"
"github.com/mitchellh/hashstructure/v2"
"github.com/mitchellh/hashstructure/v2"
"github.com/prune998/docker-registry-client/registry"
"github.com/rs/xid"
"github.com/rs/xid"
"github.com/sergeymakinen/go-quote/unix"
"github.com/sergeymakinen/go-quote/unix"
"github.com/sirupsen/logrus"
"github.com/sirupsen/logrus"
...
@@ -69,10 +72,6 @@ import (
...
@@ -69,10 +72,6 @@ import (
nvidiacomv1alpha1
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/v1alpha1"
nvidiacomv1alpha1
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/v1alpha1"
)
)
const
(
dockerConfigSecretKey
=
".dockerconfigjson"
)
// DynamoComponentReconciler reconciles a DynamoComponent object
// DynamoComponentReconciler reconciles a DynamoComponent object
type
DynamoComponentReconciler
struct
{
type
DynamoComponentReconciler
struct
{
client
.
Client
client
.
Client
...
@@ -236,13 +235,9 @@ func (r *DynamoComponentReconciler) ensureImageExists(ctx context.Context, opt e
...
@@ -236,13 +235,9 @@ func (r *DynamoComponentReconciler) ensureImageExists(ctx context.Context, opt e
DynamoComponent
=
opt
.
DynamoComponent
DynamoComponent
=
opt
.
DynamoComponent
req
:=
opt
.
req
req
:=
opt
.
req
imageInfo
,
err
=
r
.
getImageInfo
(
ctx
,
GetImageInfoOption
{
imageInfo
=
r
.
getImageInfo
(
GetImageInfoOption
{
DynamoComponent
:
DynamoComponent
,
DynamoComponent
:
DynamoComponent
,
})
})
if
err
!=
nil
{
err
=
errors
.
Wrap
(
err
,
"get image info"
)
return
}
imageExistsCheckedCondition
:=
meta
.
FindStatusCondition
(
DynamoComponent
.
Status
.
Conditions
,
nvidiacomv1alpha1
.
DynamoComponentConditionTypeImageExistsChecked
)
imageExistsCheckedCondition
:=
meta
.
FindStatusCondition
(
DynamoComponent
.
Status
.
Conditions
,
nvidiacomv1alpha1
.
DynamoComponentConditionTypeImageExistsChecked
)
imageExistsCondition
:=
meta
.
FindStatusCondition
(
DynamoComponent
.
Status
.
Conditions
,
nvidiacomv1alpha1
.
DynamoComponentConditionTypeImageExists
)
imageExistsCondition
:=
meta
.
FindStatusCondition
(
DynamoComponent
.
Status
.
Conditions
,
nvidiacomv1alpha1
.
DynamoComponentConditionTypeImageExists
)
...
@@ -264,7 +259,7 @@ func (r *DynamoComponentReconciler) ensureImageExists(ctx context.Context, opt e
...
@@ -264,7 +259,7 @@ func (r *DynamoComponentReconciler) ensureImageExists(ctx context.Context, opt e
return
return
}
}
r
.
Recorder
.
Eventf
(
DynamoComponent
,
corev1
.
EventTypeNormal
,
"CheckingImage"
,
"Checking image exists: %s"
,
imageInfo
.
ImageName
)
r
.
Recorder
.
Eventf
(
DynamoComponent
,
corev1
.
EventTypeNormal
,
"CheckingImage"
,
"Checking image exists: %s"
,
imageInfo
.
ImageName
)
imageExists
,
err
=
checkImageExists
(
DynamoComponent
,
imageInfo
.
DockerRegistry
,
imageInfo
.
ImageName
)
imageExists
,
err
=
checkImageExists
(
DynamoComponent
,
imageInfo
.
ImageName
)
if
err
!=
nil
{
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"check image %s exists"
,
imageInfo
.
ImageName
)
err
=
errors
.
Wrapf
(
err
,
"check image %s exists"
,
imageInfo
.
ImageName
)
return
return
...
@@ -594,67 +589,8 @@ func (r *DynamoComponentReconciler) getApiStoreClient(ctx context.Context) (*api
...
@@ -594,67 +589,8 @@ func (r *DynamoComponentReconciler) getApiStoreClient(ctx context.Context) (*api
return
apiStoreClient
,
apiStoreConf
,
nil
return
apiStoreClient
,
apiStoreConf
,
nil
}
}
func
(
r
*
DynamoComponentReconciler
)
RetrieveDockerRegistrySecret
(
ctx
context
.
Context
,
secretName
string
,
namespace
string
,
dockerRegistry
*
schemas
.
DockerRegistrySchema
)
error
{
secret
:=
&
corev1
.
Secret
{}
err
:=
r
.
Get
(
ctx
,
types
.
NamespacedName
{
Namespace
:
namespace
,
Name
:
secretName
,
},
secret
)
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"get docker config json secret %s"
,
secretName
)
return
err
}
configJSON
,
ok
:=
secret
.
Data
[
dockerConfigSecretKey
]
if
!
ok
{
err
=
errors
.
Errorf
(
"docker config json secret %s does not have %s key"
,
secretName
,
dockerConfigSecretKey
)
return
err
}
var
configObj
struct
{
Auths
map
[
string
]
struct
{
Auth
string
`json:"auth"`
}
`json:"auths"`
}
err
=
json
.
Unmarshal
(
configJSON
,
&
configObj
)
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"unmarshal docker config json secret %s"
,
secretName
)
return
err
}
var
server
string
var
auth
string
if
dockerRegistry
.
Server
!=
""
{
for
k
,
v
:=
range
configObj
.
Auths
{
if
k
==
dockerRegistry
.
Server
{
server
=
k
auth
=
v
.
Auth
break
}
}
if
server
==
""
{
for
k
,
v
:=
range
configObj
.
Auths
{
if
strings
.
Contains
(
k
,
dockerRegistry
.
Server
)
{
server
=
k
auth
=
v
.
Auth
break
}
}
}
}
if
server
==
""
{
err
=
errors
.
Errorf
(
"no auth in docker config json secret %s for server %s"
,
secretName
,
dockerRegistry
.
Server
)
return
err
}
var
credentials
[]
byte
credentials
,
err
=
base64
.
StdEncoding
.
DecodeString
(
auth
)
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"cannot base64 decode auth in docker config json secret %s"
,
secretName
)
return
err
}
dockerRegistry
.
Username
,
_
,
dockerRegistry
.
Password
=
xstrings
.
Partition
(
string
(
credentials
),
":"
)
return
nil
}
//nolint:nakedret
//nolint:nakedret
func
(
r
*
DynamoComponentReconciler
)
getDockerRegistry
(
ctx
context
.
Context
,
DynamoComponent
*
nvidiacomv1alpha1
.
DynamoComponent
)
(
dockerRegistry
*
schemas
.
DockerRegistrySchema
,
err
error
)
{
func
(
r
*
DynamoComponentReconciler
)
getDockerRegistry
(
DynamoComponent
*
nvidiacomv1alpha1
.
DynamoComponent
)
*
schemas
.
DockerRegistrySchema
{
dockerRegistryConfig
:=
commonconfig
.
GetDockerRegistryConfig
()
dockerRegistryConfig
:=
commonconfig
.
GetDockerRegistryConfig
()
...
@@ -668,20 +604,12 @@ func (r *DynamoComponentReconciler) getDockerRegistry(ctx context.Context, Dynam
...
@@ -668,20 +604,12 @@ func (r *DynamoComponentReconciler) getDockerRegistry(ctx context.Context, Dynam
dockerRegistryConfig
.
SecretName
=
DynamoComponent
.
Spec
.
DockerConfigJSONSecretName
dockerRegistryConfig
.
SecretName
=
DynamoComponent
.
Spec
.
DockerConfigJSONSecretName
}
}
dockerRegistry
=
&
schemas
.
DockerRegistrySchema
{
return
&
schemas
.
DockerRegistrySchema
{
Server
:
dockerRegistryConfig
.
Server
,
Server
:
dockerRegistryConfig
.
Server
,
Secure
:
dockerRegistryConfig
.
Secure
,
Secure
:
dockerRegistryConfig
.
Secure
,
DynamoRepositoryURI
:
dynamoRepositoryURI
,
DynamoRepositoryURI
:
dynamoRepositoryURI
,
SecretName
:
dockerRegistryConfig
.
SecretName
,
SecretName
:
dockerRegistryConfig
.
SecretName
,
}
}
err
=
r
.
RetrieveDockerRegistrySecret
(
ctx
,
dockerRegistryConfig
.
SecretName
,
DynamoComponent
.
Namespace
,
dockerRegistry
)
if
err
!=
nil
{
err
=
errors
.
Wrap
(
err
,
"retrieve docker registry secret"
)
return
}
return
}
}
func
isAddNamespacePrefix
()
bool
{
func
isAddNamespacePrefix
()
bool
{
...
@@ -725,41 +653,32 @@ func getDynamoComponentImageName(DynamoComponent *nvidiacomv1alpha1.DynamoCompon
...
@@ -725,41 +653,32 @@ func getDynamoComponentImageName(DynamoComponent *nvidiacomv1alpha1.DynamoCompon
return
fmt
.
Sprintf
(
"%s:%s"
,
uri
,
tag
)
return
fmt
.
Sprintf
(
"%s:%s"
,
uri
,
tag
)
}
}
func
checkImageExists
(
DynamoComponent
*
nvidiacomv1alpha1
.
DynamoComponent
,
dockerRegistry
schemas
.
DockerRegistrySchema
,
imageName
string
)
(
bool
,
error
)
{
func
checkImageExists
(
DynamoComponent
*
nvidiacomv1alpha1
.
DynamoComponent
,
imageName
string
)
(
bool
,
error
)
{
if
DynamoComponent
.
Annotations
[
"nvidia.com/force-build-image"
]
==
commonconsts
.
KubeLabelValueTrue
{
if
DynamoComponent
.
Annotations
[
"nvidia.com/force-build-image"
]
==
commonconsts
.
KubeLabelValueTrue
{
return
false
,
nil
return
false
,
nil
}
}
ref
,
err
:=
name
.
ParseReference
(
imageName
)
server
,
_
,
imageName
:=
xstrings
.
Partition
(
imageName
,
"/"
)
if
strings
.
Contains
(
server
,
"docker.io"
)
{
server
=
"index.docker.io"
}
if
dockerRegistry
.
Secure
{
server
=
fmt
.
Sprintf
(
"https://%s"
,
server
)
}
else
{
server
=
fmt
.
Sprintf
(
"http://%s"
,
server
)
}
hub
,
err
:=
registry
.
New
(
server
,
dockerRegistry
.
Username
,
dockerRegistry
.
Password
,
logrus
.
Debugf
)
if
err
!=
nil
{
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"create docker registry client for %s"
,
server
)
return
false
,
fmt
.
Errorf
(
"parsing image reference: %w"
,
err
)
return
false
,
err
}
}
keychain
:=
authn
.
NewMultiKeychain
(
imageName
,
_
,
tag
:=
xstrings
.
LastPartition
(
imageName
,
":"
)
// This picks up auth from DOCKER_CONFIG env var
tags
,
err
:=
hub
.
Tags
(
imageName
)
authn
.
DefaultKeychain
,
isNotFound
:=
err
!=
nil
&&
strings
.
Contains
(
err
.
Error
(),
"404"
)
// This picks up auth from GCR
if
isNotFound
{
google
.
Keychain
,
// This picks up auth from ECR
authn
.
NewKeychainFromHelper
(
ecr
.
NewECRHelper
()),
// This picks up auth from ACR
authn
.
NewKeychainFromHelper
(
credhelper
.
NewACRCredentialsHelper
()),
)
_
,
err
=
remote
.
Head
(
ref
,
remote
.
WithAuthFromKeychain
(
keychain
))
if
err
!=
nil
{
if
strings
.
Contains
(
err
.
Error
(),
"404"
)
{
return
false
,
nil
return
false
,
nil
}
}
if
err
!=
nil
{
return
false
,
fmt
.
Errorf
(
"checking image: %w"
,
err
)
err
=
errors
.
Wrapf
(
err
,
"get tags for docker image %s"
,
imageName
)
return
false
,
err
}
}
for
_
,
tag_
:=
range
tags
{
if
tag_
==
tag
{
return
true
,
nil
return
true
,
nil
}
}
return
false
,
nil
}
}
type
ImageInfo
struct
{
type
ImageInfo
struct
{
...
@@ -774,20 +693,16 @@ type GetImageInfoOption struct {
...
@@ -774,20 +693,16 @@ type GetImageInfoOption struct {
}
}
//nolint:nakedret
//nolint:nakedret
func
(
r
*
DynamoComponentReconciler
)
getImageInfo
(
ctx
context
.
Context
,
opt
GetImageInfoOption
)
(
imageInfo
ImageInfo
,
err
error
)
{
func
(
r
*
DynamoComponentReconciler
)
getImageInfo
(
opt
GetImageInfoOption
)
ImageInfo
{
dynamoComponentRepositoryName
,
_
,
dynamoComponentVersion
:=
xstrings
.
Partition
(
opt
.
DynamoComponent
.
Spec
.
DynamoComponent
,
":"
)
dynamoComponentRepositoryName
,
_
,
dynamoComponentVersion
:=
xstrings
.
Partition
(
opt
.
DynamoComponent
.
Spec
.
DynamoComponent
,
":"
)
dockerRegistry
,
err
:=
r
.
getDockerRegistry
(
ctx
,
opt
.
DynamoComponent
)
dockerRegistry
:=
r
.
getDockerRegistry
(
opt
.
DynamoComponent
)
if
err
!=
nil
{
imageInfo
:=
ImageInfo
{
err
=
errors
.
Wrap
(
err
,
"get docker registry"
)
DockerRegistry
:
*
dockerRegistry
,
return
ImageName
:
getDynamoComponentImageName
(
opt
.
DynamoComponent
,
*
dockerRegistry
,
dynamoComponentRepositoryName
,
dynamoComponentVersion
),
}
DockerConfigJSONSecretName
:
dockerRegistry
.
SecretName
,
imageInfo
.
DockerRegistry
=
*
dockerRegistry
DockerRegistryInsecure
:
opt
.
DynamoComponent
.
Annotations
[
commonconsts
.
KubeAnnotationDynamoDockerRegistryInsecure
]
==
"true"
,
imageInfo
.
ImageName
=
getDynamoComponentImageName
(
opt
.
DynamoComponent
,
*
dockerRegistry
,
dynamoComponentRepositoryName
,
dynamoComponentVersion
)
}
return
imageInfo
imageInfo
.
DockerConfigJSONSecretName
=
dockerRegistry
.
SecretName
imageInfo
.
DockerRegistryInsecure
=
opt
.
DynamoComponent
.
Annotations
[
commonconsts
.
KubeAnnotationDynamoDockerRegistryInsecure
]
==
"true"
return
}
}
func
(
r
*
DynamoComponentReconciler
)
getImageBuilderJobName
()
string
{
func
(
r
*
DynamoComponentReconciler
)
getImageBuilderJobName
()
string
{
...
@@ -1192,16 +1107,19 @@ echo "Done"
...
@@ -1192,16 +1107,19 @@ echo "Done"
builderContainerEnvFrom
:=
make
([]
corev1
.
EnvFromSource
,
0
)
builderContainerEnvFrom
:=
make
([]
corev1
.
EnvFromSource
,
0
)
builderContainerEnvs
:=
[]
corev1
.
EnvVar
{
builderContainerEnvs
:=
[]
corev1
.
EnvVar
{
{
Name
:
"DOCKER_CONFIG"
,
Value
:
"/kaniko/.docker/"
,
},
{
{
Name
:
"IFS"
,
Name
:
"IFS"
,
Value
:
"''"
,
Value
:
"''"
,
},
},
}
}
if
dockerConfigJSONSecretName
!=
""
{
builderContainerEnvs
=
append
(
builderContainerEnvs
,
corev1
.
EnvVar
{
Name
:
"DOCKER_CONFIG"
,
Value
:
"/kaniko/.docker/"
,
})
}
kanikoCacheRepo
:=
os
.
Getenv
(
"KANIKO_CACHE_REPO"
)
kanikoCacheRepo
:=
os
.
Getenv
(
"KANIKO_CACHE_REPO"
)
if
kanikoCacheRepo
==
""
{
if
kanikoCacheRepo
==
""
{
kanikoCacheRepo
=
opt
.
ImageInfo
.
DockerRegistry
.
DynamoRepositoryURI
kanikoCacheRepo
=
opt
.
ImageInfo
.
DockerRegistry
.
DynamoRepositoryURI
...
...
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller.go
View file @
7ca0faa8
...
@@ -38,7 +38,6 @@ import (
...
@@ -38,7 +38,6 @@ import (
dynamoCommon
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/dynamo/common"
dynamoCommon
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/dynamo/common"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/dynamo/schemas"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/dynamo/schemas"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/v1alpha1"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/api/v1alpha1"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/config"
commonconsts
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/consts"
commonconsts
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/consts"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
commonController
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
commonController
"github.com/ai-dynamo/dynamo/deploy/cloud/operator/internal/controller_common"
...
@@ -1697,17 +1696,18 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
...
@@ -1697,17 +1696,18 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
Volumes
:
volumes
,
Volumes
:
volumes
,
}
}
podSpec
.
ImagePullSecrets
=
[]
corev1
.
LocalObjectReference
{
imagePullSecrets
:=
[]
corev1
.
LocalObjectReference
{}
{
Name
:
config
.
GetDockerRegistryConfig
()
.
SecretName
,
},
}
if
opt
.
dynamoComponent
.
Spec
.
DockerConfigJSONSecretName
!=
""
{
if
opt
.
dynamoComponent
.
Spec
.
DockerConfigJSONSecretName
!=
""
{
podSpec
.
I
magePullSecrets
=
append
(
podSpec
.
I
magePullSecrets
,
corev1
.
LocalObjectReference
{
i
magePullSecrets
=
append
(
i
magePullSecrets
,
corev1
.
LocalObjectReference
{
Name
:
opt
.
dynamoComponent
.
Spec
.
DockerConfigJSONSecretName
,
Name
:
opt
.
dynamoComponent
.
Spec
.
DockerConfigJSONSecretName
,
})
})
}
}
podSpec
.
ImagePullSecrets
=
append
(
podSpec
.
ImagePullSecrets
,
opt
.
dynamoComponent
.
Spec
.
ImagePullSecrets
...
)
imagePullSecrets
=
append
(
imagePullSecrets
,
opt
.
dynamoComponent
.
Spec
.
ImagePullSecrets
...
)
if
len
(
imagePullSecrets
)
>
0
{
podSpec
.
ImagePullSecrets
=
imagePullSecrets
}
extraPodMetadata
:=
opt
.
dynamoComponentDeployment
.
Spec
.
ExtraPodMetadata
extraPodMetadata
:=
opt
.
dynamoComponentDeployment
.
Spec
.
ExtraPodMetadata
...
@@ -1736,7 +1736,7 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
...
@@ -1736,7 +1736,7 @@ func (r *DynamoComponentDeploymentReconciler) generatePodTemplateSpec(ctx contex
if
podSpec
.
ServiceAccountName
==
""
{
if
podSpec
.
ServiceAccountName
==
""
{
serviceAccounts
:=
&
corev1
.
ServiceAccountList
{}
serviceAccounts
:=
&
corev1
.
ServiceAccountList
{}
err
=
r
.
List
(
ctx
,
serviceAccounts
,
client
.
InNamespace
(
opt
.
dynamoComponentDeployment
.
Namespace
),
client
.
MatchingLabels
{
err
=
r
.
List
(
ctx
,
serviceAccounts
,
client
.
InNamespace
(
opt
.
dynamoComponentDeployment
.
Namespace
),
client
.
MatchingLabels
{
commonconsts
.
KubeLabelDynamo
Deploym
entPod
:
commonconsts
.
KubeLabelValueTrue
,
commonconsts
.
KubeLabelDynamo
Compon
entPod
:
commonconsts
.
KubeLabelValueTrue
,
})
})
if
err
!=
nil
{
if
err
!=
nil
{
err
=
errors
.
Wrapf
(
err
,
"failed to list service accounts in namespace %s"
,
opt
.
dynamoComponentDeployment
.
Namespace
)
err
=
errors
.
Wrapf
(
err
,
"failed to list service accounts in namespace %s"
,
opt
.
dynamoComponentDeployment
.
Namespace
)
...
...
deploy/cloud/operator/internal/controller/dynamocomponentdeployment_controller_test.go
View file @
7ca0faa8
...
@@ -893,7 +893,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -893,7 +893,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
Name
:
"default-test-sa"
,
// Name it will be resolved to
Name
:
"default-test-sa"
,
// Name it will be resolved to
Namespace
:
"default"
,
// Must match dynamoComponentDeployment.Namespace
Namespace
:
"default"
,
// Must match dynamoComponentDeployment.Namespace
Labels
:
map
[
string
]
string
{
Labels
:
map
[
string
]
string
{
commonconsts
.
KubeLabelDynamo
Deploym
entPod
:
commonconsts
.
KubeLabelValueTrue
,
commonconsts
.
KubeLabelDynamo
Compon
entPod
:
commonconsts
.
KubeLabelValueTrue
,
},
},
},
},
},
},
...
@@ -964,7 +964,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -964,7 +964,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
},
},
},
},
Volumes
:
[]
corev1
.
Volume
{{
Name
:
"shared-memory"
,
VolumeSource
:
corev1
.
VolumeSource
{
EmptyDir
:
&
corev1
.
EmptyDirVolumeSource
{
Medium
:
corev1
.
StorageMediumMemory
,
SizeLimit
:
limit
}}}},
Volumes
:
[]
corev1
.
Volume
{{
Name
:
"shared-memory"
,
VolumeSource
:
corev1
.
VolumeSource
{
EmptyDir
:
&
corev1
.
EmptyDirVolumeSource
{
Medium
:
corev1
.
StorageMediumMemory
,
SizeLimit
:
limit
}}}},
ImagePullSecrets
:
[]
corev1
.
LocalObjectReference
{{
Name
:
""
}},
// Assuming default config gives empty secret name
ImagePullSecrets
:
nil
,
// Assuming default config gives empty secret name
ServiceAccountName
:
"default-test-sa"
,
// Updated to reflect mocked SA
ServiceAccountName
:
"default-test-sa"
,
// Updated to reflect mocked SA
},
},
},
},
...
@@ -1002,7 +1002,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -1002,7 +1002,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
},
},
},
},
Volumes
:
[]
corev1
.
Volume
{{
Name
:
"shared-memory"
,
VolumeSource
:
corev1
.
VolumeSource
{
EmptyDir
:
&
corev1
.
EmptyDirVolumeSource
{
Medium
:
corev1
.
StorageMediumMemory
,
SizeLimit
:
limit
}}}},
Volumes
:
[]
corev1
.
Volume
{{
Name
:
"shared-memory"
,
VolumeSource
:
corev1
.
VolumeSource
{
EmptyDir
:
&
corev1
.
EmptyDirVolumeSource
{
Medium
:
corev1
.
StorageMediumMemory
,
SizeLimit
:
limit
}}}},
ImagePullSecrets
:
[]
corev1
.
LocalObjectReference
{{
Name
:
""
}}
,
ImagePullSecrets
:
nil
,
ServiceAccountName
:
"default-test-sa"
,
// Updated to reflect mocked SA
ServiceAccountName
:
"default-test-sa"
,
// Updated to reflect mocked SA
},
},
},
},
...
@@ -1043,7 +1043,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -1043,7 +1043,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
&
corev1
.
ServiceAccount
{
&
corev1
.
ServiceAccount
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"default-test-sa"
,
Namespace
:
"default"
,
// Match namespace
Name
:
"default-test-sa"
,
Namespace
:
"default"
,
// Match namespace
Labels
:
map
[
string
]
string
{
commonconsts
.
KubeLabelDynamo
Deploym
entPod
:
commonconsts
.
KubeLabelValueTrue
},
Labels
:
map
[
string
]
string
{
commonconsts
.
KubeLabelDynamo
Compon
entPod
:
commonconsts
.
KubeLabelValueTrue
},
},
},
},
},
},
},
...
@@ -1084,7 +1084,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
...
@@ -1084,7 +1084,7 @@ func TestDynamoComponentDeploymentReconciler_generateLeaderWorkerSet(t *testing.
&
corev1
.
ServiceAccount
{
&
corev1
.
ServiceAccount
{
ObjectMeta
:
metav1
.
ObjectMeta
{
ObjectMeta
:
metav1
.
ObjectMeta
{
Name
:
"default-test-sa"
,
Namespace
:
"default"
,
// Match namespace
Name
:
"default-test-sa"
,
Namespace
:
"default"
,
// Match namespace
Labels
:
map
[
string
]
string
{
commonconsts
.
KubeLabelDynamo
Deploym
entPod
:
commonconsts
.
KubeLabelValueTrue
},
Labels
:
map
[
string
]
string
{
commonconsts
.
KubeLabelDynamo
Compon
entPod
:
commonconsts
.
KubeLabelValueTrue
},
},
},
},
},
},
},
...
...
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