Skip to content

Commit dc48659

Browse files
committed
refactor: stop using text/template in machined code paths
Reason: `text/template` uses reflect's MethodByName, disabling deadcode linker phase. Fixes #11299 Signed-off-by: Andrey Smirnov <andrey.smirnov@siderolabs.com>
1 parent 545be55 commit dc48659

File tree

65 files changed

+2639
-1345
lines changed

Some content is hidden

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

65 files changed

+2639
-1345
lines changed

Dockerfile

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -472,7 +472,6 @@ COPY --from=generate-build /api/resource/*.pb.go /pkg/machinery/api/resource/
472472
COPY --from=generate-build /api/resource/config/*.pb.go /pkg/machinery/api/resource/config/
473473
COPY --from=generate-build /api/resource/network/*.pb.go /pkg/machinery/api/resource/network/
474474
COPY --from=generate-build /api/inspect/*.pb.go /pkg/machinery/api/inspect/
475-
COPY --from=go-generate /src/pkg/flannel/ /pkg/flannel/
476475
COPY --from=go-generate /src/pkg/imager/profile/ /pkg/imager/profile/
477476
COPY --from=go-generate /src/pkg/machinery/resources/ /pkg/machinery/resources/
478477
COPY --from=go-generate /src/pkg/machinery/config/schemas/ /pkg/machinery/config/schemas/

go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ replace github.com/containerd/containerd/v2 => github.com/smira/containerd/v2 v2
3535
// Kubernetes dependencies sharing the same version.
3636
require (
3737
k8s.io/api v0.34.0-beta.0
38+
k8s.io/apiextensions-apiserver v0.34.0-beta.0
3839
k8s.io/apimachinery v0.34.0-beta.0
3940
k8s.io/apiserver v0.34.0-beta.0
4041
k8s.io/client-go v0.34.0-beta.0

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1071,6 +1071,8 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh
10711071
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
10721072
k8s.io/api v0.34.0-beta.0 h1:Yok13a6+0GTJYv56+lSNlgRjF46TLUVv+gaijkLdkB4=
10731073
k8s.io/api v0.34.0-beta.0/go.mod h1:OOkMaR1spg7vtjCCQSdxgiRD0Bbp2pcTCBxJtEEb4Pk=
1074+
k8s.io/apiextensions-apiserver v0.34.0-beta.0 h1:zzR2yWEBkfYcjfwM42CwrBwtwLWLBJ/VwYpyP2ldNMI=
1075+
k8s.io/apiextensions-apiserver v0.34.0-beta.0/go.mod h1:lCs/ZFdQjQWkNdEa0CS7qvLAMVDCj3fVXwSmKZ7Fn8E=
10741076
k8s.io/apimachinery v0.34.0-beta.0 h1:C6teSJBCx6ArW7122MM9hQqeGW2w/QQ0lB4x4Z4Iftc=
10751077
k8s.io/apimachinery v0.34.0-beta.0/go.mod h1:TP8uyOuDEOnzGpLOdffo8hPnIjVDljZCxCM/fruV+5M=
10761078
k8s.io/apiserver v0.34.0-beta.0 h1:cLhc6un0qtCb/nwGpkj8020yvs3oUxCu4vLLKEGkd4c=

internal/app/machined/pkg/adapters/k8s/manifest.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,28 @@ type manifest struct {
3232
*k8s.Manifest
3333
}
3434

35+
// SetObjects parses manifest from a list of runtime objects.
36+
func (a manifest) SetObjects(objects []runtime.Object) error {
37+
a.Manifest.TypedSpec().Items = make([]k8s.SingleManifest, 0, len(objects))
38+
39+
for _, obj := range objects {
40+
unstructuredObj, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
41+
if err != nil {
42+
return fmt.Errorf("error converting object to unstructured: %w", err)
43+
}
44+
45+
u := unstructured.Unstructured{Object: unstructuredObj}
46+
u.SetGroupVersionKind(obj.GetObjectKind().GroupVersionKind())
47+
delete(u.Object, "status") // remove status field if present
48+
49+
a.Manifest.TypedSpec().Items = append(a.Manifest.TypedSpec().Items, k8s.SingleManifest{
50+
Object: u.Object,
51+
})
52+
}
53+
54+
return nil
55+
}
56+
3557
// SetYAML parses manifest from YAML.
3658
//
3759
//nolint:gocyclo
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
// This Source Code Form is subject to the terms of the Mozilla Public
2+
// License, v. 2.0. If a copy of the MPL was not distributed with this
3+
// file, You can obtain one at http://mozilla.org/MPL/2.0/.
4+
5+
package k8stemplates
6+
7+
import (
8+
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9+
"k8s.io/apimachinery/pkg/runtime"
10+
apiserverv1 "k8s.io/apiserver/pkg/apis/apiserver/v1"
11+
12+
"github.com/siderolabs/talos/pkg/machinery/resources/secrets"
13+
)
14+
15+
// APIServerEncryptionConfig returns the encryption configuration for the API server.
16+
func APIServerEncryptionConfig(rootK8sSecrets *secrets.KubernetesRootSpec) runtime.Object {
17+
obj := apiserverv1.EncryptionConfiguration{
18+
TypeMeta: v1.TypeMeta{
19+
Kind: "EncryptionConfig",
20+
APIVersion: apiserverv1.SchemeGroupVersion.Version,
21+
},
22+
Resources: []apiserverv1.ResourceConfiguration{
23+
{
24+
Resources: []string{"secrets"},
25+
Providers: []apiserverv1.ProviderConfiguration{},
26+
},
27+
},
28+
}
29+
30+
if rootK8sSecrets.SecretboxEncryptionSecret != "" {
31+
obj.Resources[0].Providers = append(obj.Resources[0].Providers, apiserverv1.ProviderConfiguration{
32+
Secretbox: &apiserverv1.SecretboxConfiguration{
33+
Keys: []apiserverv1.Key{
34+
{
35+
Name: "key2",
36+
Secret: rootK8sSecrets.SecretboxEncryptionSecret,
37+
},
38+
},
39+
},
40+
})
41+
}
42+
43+
if rootK8sSecrets.AESCBCEncryptionSecret != "" {
44+
obj.Resources[0].Providers = append(obj.Resources[0].Providers, apiserverv1.ProviderConfiguration{
45+
AESCBC: &apiserverv1.AESConfiguration{
46+
Keys: []apiserverv1.Key{
47+
{
48+
Name: "key1",
49+
Secret: rootK8sSecrets.AESCBCEncryptionSecret,
50+
},
51+
},
52+
},
53+
})
54+
}
55+
56+
obj.Resources[0].Providers = append(obj.Resources[0].Providers, apiserverv1.ProviderConfiguration{
57+
Identity: &apiserverv1.IdentityConfiguration{},
58+
})
59+
60+
return &obj
61+
}

0 commit comments

Comments
 (0)