Skip to content

Commit 82ac111

Browse files
committed
feat: implement new registry configuration
Move to using multi-doc registry configuration. Fixes #12120 Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
1 parent 106f457 commit 82ac111

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+3031
-1738
lines changed

api/lock.binpb

480 Bytes
Binary file not shown.

api/resource/definitions/cri/cri.proto

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ message ImageCacheConfigSpec {
1919
// RegistriesConfigSpec describes status of rendered secrets.
2020
message RegistriesConfigSpec {
2121
map<string, RegistryMirrorConfig> registry_mirrors = 1;
22-
map<string, RegistryConfig> registry_config = 2;
22+
map<string, RegistryAuthConfig> registry_auths = 2;
23+
map<string, RegistryTLSConfig> registry_tl_ss = 3;
2324
}
2425

2526
// RegistryAuthConfig specifies authentication configuration for a registry.
@@ -30,12 +31,6 @@ message RegistryAuthConfig {
3031
string registry_identity_token = 4;
3132
}
3233

33-
// RegistryConfig specifies auth & TLS config per registry.
34-
message RegistryConfig {
35-
RegistryTLSConfig registry_tls = 1;
36-
RegistryAuthConfig registry_auth = 2;
37-
}
38-
3934
// RegistryEndpointConfig represents a single registry endpoint.
4035
message RegistryEndpointConfig {
4136
string endpoint_endpoint = 1;

cmd/talosctl/cmd/docs.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020

2121
"github.com/siderolabs/talos/pkg/machinery/config/encoder"
2222
"github.com/siderolabs/talos/pkg/machinery/config/types/block"
23+
"github.com/siderolabs/talos/pkg/machinery/config/types/cri"
2324
"github.com/siderolabs/talos/pkg/machinery/config/types/hardware"
2425
"github.com/siderolabs/talos/pkg/machinery/config/types/network"
2526
"github.com/siderolabs/talos/pkg/machinery/config/types/runtime"
@@ -140,6 +141,10 @@ var docsCmd = &cobra.Command{
140141
name: "hardware",
141142
fileDoc: hardware.GetFileDoc(),
142143
},
144+
{
145+
name: "cri",
146+
fileDoc: cri.GetFileDoc(),
147+
},
143148
} {
144149
path := filepath.Join(dir, pkg.name)
145150

hack/release.toml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,13 @@ When `volumeType = "directory"`:
162162
163163
Note: this mode does not provide filesystem-level isolation and inherits the EPHEMERAL partition capacity limits.
164164
It should not be used for workloads requiring predictable storage quotas.
165+
"""
166+
167+
[notes.registry-configuration]
168+
title = "CRI Registry Configuration"
169+
description = """\
170+
The CRI registry configuration in v1apha1 legacy machine configuration under `.machine.registries` is now deprecated, but still supported for backwards compatibility.
171+
New configuration documents `RegistryMirrorConfig`, `RegistryAuthConfig` and `RegistryTLSConfig` should be used instead.
165172
"""
166173

167174
[make_deps]

hack/test/patches/image-cache.yaml

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,27 @@ machine:
22
features:
33
imageCache:
44
localEnabled: true
5-
registries:
6-
mirrors:
7-
"*":
8-
skipFallback: true
9-
endpoints:
10-
- http://172.20.0.251:65000
11-
k8s.gcr.io:
12-
skipFallback: true
13-
endpoints:
14-
- http://172.20.0.251:65000
15-
registry.k8s.io:
16-
skipFallback: true
17-
endpoints:
18-
- http://172.20.0.251:65000
5+
---
6+
apiVersion: v1alpha1
7+
kind: RegistryMirrorConfig
8+
name: '*'
9+
skipFallback: true
10+
endpoints:
11+
- url: http://172.20.0.251:65000
12+
---
13+
apiVersion: v1alpha1
14+
kind: RegistryMirrorConfig
15+
name: k8s.gcr.io
16+
skipFallback: true
17+
endpoints:
18+
- url: http://172.20.0.251:65000
19+
---
20+
apiVersion: v1alpha1
21+
kind: RegistryMirrorConfig
22+
name: registry.k8s.io
23+
skipFallback: true
24+
endpoints:
25+
- url: http://172.20.0.251:65000
1926
---
2027
apiVersion: v1alpha1
2128
kind: VolumeConfig
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
machine:
2-
registries:
3-
mirrors:
4-
registry.dev.siderolabs.io:
5-
skipFallback: true
6-
endpoints:
7-
- https://172.20.1.1:8004
1+
apiVersion: v1alpha1
2+
kind: RegistryMirrorConfig
3+
name: registry.dev.siderolabs.io
4+
skipFallback: true
5+
endpoints:
6+
- url: https://172.20.1.1:8004

internal/app/machined/pkg/controllers/cri/registries_config.go

Lines changed: 27 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,9 @@ import (
1313
"github.com/cosi-project/runtime/pkg/state"
1414
"github.com/siderolabs/gen/optional"
1515
"github.com/siderolabs/gen/xslices"
16-
"github.com/siderolabs/go-pointer"
1716
"go.uber.org/zap"
1817

19-
"github.com/siderolabs/talos/pkg/machinery/config/types/v1alpha1"
18+
config2 "github.com/siderolabs/talos/pkg/machinery/config/config"
2019
"github.com/siderolabs/talos/pkg/machinery/constants"
2120
"github.com/siderolabs/talos/pkg/machinery/resources/config"
2221
"github.com/siderolabs/talos/pkg/machinery/resources/cri"
@@ -83,30 +82,40 @@ func (ctrl *RegistriesConfigController) Run(ctx context.Context, r controller.Ru
8382
if err := safe.WriterModify(ctx, r, cri.NewRegistriesConfig(), func(res *cri.RegistriesConfig) error {
8483
spec := res.TypedSpec()
8584

86-
spec.RegistryConfig = clearInit(spec.RegistryConfig)
85+
spec.RegistryAuths = clearInit(spec.RegistryAuths)
8786
spec.RegistryMirrors = clearInit(spec.RegistryMirrors)
87+
spec.RegistryTLSs = clearInit(spec.RegistryTLSs)
8888

89-
if cfg != nil && cfg.Config().Machine() != nil {
90-
// This is breaking our interface abstraction, but we need to get the underlying types for protobuf
91-
// encoding to work correctly.
92-
mr := cfg.Provider().RawV1Alpha1().MachineConfig.MachineRegistries
93-
94-
for k, v := range mr.RegistryConfig {
95-
spec.RegistryConfig[k] = makeRegistryConfig(v)
96-
}
97-
98-
for k, v := range mr.RegistryMirrors {
89+
if cfg != nil {
90+
for k, v := range cfg.Config().RegistryMirrorConfigs() {
9991
spec.RegistryMirrors[k] = &cri.RegistryMirrorConfig{
10092
MirrorEndpoints: xslices.Map(
101-
v.MirrorEndpoints,
102-
func(endpoint string) cri.RegistryEndpointConfig {
93+
v.Endpoints(),
94+
func(endpoint config2.RegistryEndpointConfig) cri.RegistryEndpointConfig {
10395
return cri.RegistryEndpointConfig{
104-
EndpointEndpoint: endpoint,
105-
EndpointOverridePath: pointer.SafeDeref(v.MirrorOverridePath),
96+
EndpointEndpoint: endpoint.Endpoint(),
97+
EndpointOverridePath: endpoint.OverridePath(),
10698
}
10799
},
108100
),
109-
MirrorSkipFallback: v.MirrorSkipFallback,
101+
MirrorSkipFallback: v.SkipFallback(),
102+
}
103+
}
104+
105+
for k, v := range cfg.Config().RegistryAuthConfigs() {
106+
spec.RegistryAuths[k] = &cri.RegistryAuthConfig{
107+
RegistryUsername: v.Username(),
108+
RegistryPassword: v.Password(),
109+
RegistryAuth: v.Auth(),
110+
RegistryIdentityToken: v.IdentityToken(),
111+
}
112+
}
113+
114+
for k, v := range cfg.Config().RegistryTLSConfigs() {
115+
spec.RegistryTLSs[k] = &cri.RegistryTLSConfig{
116+
TLSCA: v.CA(),
117+
TLSInsecureSkipVerify: v.InsecureSkipVerify(),
118+
TLSClientIdentity: v.ClientIdentity(),
110119
}
111120
}
112121
}
@@ -146,26 +155,3 @@ func clearInit[M ~map[K]V, K comparable, V any](m M) M {
146155

147156
return m
148157
}
149-
150-
func makeRegistryConfig(cfg *v1alpha1.RegistryConfig) *cri.RegistryConfig {
151-
result := &cri.RegistryConfig{}
152-
153-
if rtls := cfg.RegistryTLS; rtls != nil {
154-
result.RegistryTLS = &cri.RegistryTLSConfig{
155-
TLSClientIdentity: rtls.TLSClientIdentity,
156-
TLSCA: rtls.TLSCA,
157-
TLSInsecureSkipVerify: rtls.TLSInsecureSkipVerify,
158-
}
159-
}
160-
161-
if rauth := cfg.RegistryAuth; rauth != nil {
162-
result.RegistryAuth = &cri.RegistryAuthConfig{
163-
RegistryUsername: rauth.RegistryUsername,
164-
RegistryPassword: rauth.RegistryPassword,
165-
RegistryAuth: rauth.RegistryAuth,
166-
RegistryIdentityToken: rauth.RegistryIdentityToken,
167-
}
168-
}
169-
170-
return result
171-
}

0 commit comments

Comments
 (0)