@@ -30,6 +30,8 @@ import (
30
30
"sigs.k8s.io/yaml"
31
31
)
32
32
33
+ const yamlSeparator = "\n ---\n "
34
+
33
35
type GenerateCIArtifactsInjectedTemplateForDebianInput struct {
34
36
// ArtifactsDirectory is where conformance suite output will go. Defaults to _artifacts
35
37
ArtifactsDirectory string
@@ -46,6 +48,8 @@ type GenerateCIArtifactsInjectedTemplateForDebianInput struct {
46
48
// KubeadmControlPlaneName is the name of the KubeadmControlPlane resource
47
49
// that needs to have the Debian install script injected. Defaults to "${CLUSTER_NAME}-control-plane".
48
50
KubeadmControlPlaneName string
51
+ // KubeadmConfigName is the name of a KubeadmConfig that needs kustomizing. To be used in conjunction with MachinePools. Optional.
52
+ KubeadmConfigName string
49
53
}
50
54
51
55
// GenerateCIArtifactsInjectedTemplateForDebian takes a source clusterctl template
@@ -84,7 +88,7 @@ func GenerateCIArtifactsInjectedTemplateForDebian(input GenerateCIArtifactsInjec
84
88
return "" , err
85
89
}
86
90
87
- kustomizeVersions , err := generateKustomizeVersionsYaml (input .KubeadmControlPlaneName , input .KubeadmConfigTemplateName )
91
+ kustomizeVersions , err := generateKustomizeVersionsYaml (input .KubeadmControlPlaneName , input .KubeadmConfigTemplateName , input . KubeadmConfigName )
88
92
if err != nil {
89
93
return "" , err
90
94
}
@@ -109,12 +113,12 @@ func GenerateCIArtifactsInjectedTemplateForDebian(input GenerateCIArtifactsInjec
109
113
return kustomizedTemplate , nil
110
114
}
111
115
112
- func generateKustomizeVersionsYaml (kcpName , kubeadmName string ) ([]byte , error ) {
116
+ func generateKustomizeVersionsYaml (kcpName , kubeadmTemplateName , kubeadmConfigName string ) ([]byte , error ) {
113
117
kcp , err := generateKubeadmControlPlane (kcpName )
114
118
if err != nil {
115
119
return nil , err
116
120
}
117
- kubeadm , err := generateKubeadmConfigTemplate (kubeadmName )
121
+ kubeadm , err := generateKubeadmConfigTemplate (kubeadmTemplateName )
118
122
if err != nil {
119
123
return nil , err
120
124
}
@@ -126,7 +130,22 @@ func generateKustomizeVersionsYaml(kcpName, kubeadmName string) ([]byte, error)
126
130
if err != nil {
127
131
return nil , err
128
132
}
129
- fileStr := string (kcpYaml ) + "\n ---\n " + string (kubeadmYaml )
133
+ fileStr := string (kcpYaml ) + yamlSeparator + string (kubeadmYaml )
134
+ if kubeadmConfigName == "" {
135
+ return []byte (fileStr ), nil
136
+ }
137
+
138
+ kubeadmConfig , err := generateKubeadmConfig (kubeadmConfigName )
139
+ if err != nil {
140
+ return nil , err
141
+ }
142
+
143
+ kubeadmConfigYaml , err := yaml .Marshal (kubeadmConfig )
144
+ if err != nil {
145
+ return nil , err
146
+ }
147
+ fileStr = fileStr + yamlSeparator + string (kubeadmConfigYaml )
148
+
130
149
return []byte (fileStr ), nil
131
150
}
132
151
@@ -151,6 +170,23 @@ func generateKubeadmConfigTemplate(name string) (*cabpkv1.KubeadmConfigTemplate,
151
170
}, nil
152
171
}
153
172
173
+ func generateKubeadmConfig (name string ) (* cabpkv1.KubeadmConfig , error ) {
174
+ kubeadmSpec , err := generateKubeadmConfigSpec ()
175
+ if err != nil {
176
+ return nil , err
177
+ }
178
+ return & cabpkv1.KubeadmConfig {
179
+ TypeMeta : metav1.TypeMeta {
180
+ Kind : "KubeadmConfig" ,
181
+ APIVersion : kcpv1 .GroupVersion .String (),
182
+ },
183
+ ObjectMeta : metav1.ObjectMeta {
184
+ Name : name ,
185
+ },
186
+ Spec : * kubeadmSpec ,
187
+ }, nil
188
+ }
189
+
154
190
func generateKubeadmControlPlane (name string ) (* kcpv1.KubeadmControlPlane , error ) {
155
191
kubeadmSpec , err := generateKubeadmConfigSpec ()
156
192
if err != nil {
0 commit comments