Skip to content

Commit 7b058c4

Browse files
committed
kubeadm: add required etcd certs to selfhosting api-server
Selfhosting pivoting fails when using --store-certs-in-secrets as api-server fails to start because of missing etcd/ca and apiserver-etcd-client certificates: F1227 16:01:52.237352 1 storage_decorator.go:57] Unable to create storage backend: config (&{ /registry [https://127.0.0.1:2379] /etc/kubernetes/pki/apiserver-etcd-client.key /etc/kubernetes/pki/apiserver-etcd-client.crt /etc/kubernetes/pki/etcd/ca.crt true 0xc000884120 <nil> 5m0s 1m0s}), err (open /etc/kubernetes/pki/apiserver-etcd-client.crt: no such file or directory) Added required certificates to fix this. Secret name for etc/ca certifcate has been converted to conform RFC-1123 subdomain naming conventions to prevent this TLS secret creation failure: unable to create secret: Secret "etcd/ca" is invalid: metadata.name: Invalid value: "etcd/ca": a DNS-1123 subdomain must consist of lower case alphanumeric characters, '-' or '.', and must start and end with an alphanumeric character (e.g. 'example.com', regex used for validation is '[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*') Related issue: kubernetes/kubeadm#1281
1 parent 483d257 commit 7b058c4

File tree

1 file changed

+46
-1
lines changed

1 file changed

+46
-1
lines changed

cmd/kubeadm/app/phases/selfhosting/selfhosting_volumes.go

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"fmt"
2121
"io/ioutil"
2222
"path/filepath"
23+
"strings"
2324

2425
"k8s.io/api/core/v1"
2526
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -128,6 +129,40 @@ func apiServerCertificatesVolumeSource() v1.VolumeSource {
128129
},
129130
},
130131
},
132+
{
133+
Secret: &v1.SecretProjection{
134+
LocalObjectReference: v1.LocalObjectReference{
135+
Name: strings.Replace(kubeadmconstants.EtcdCACertAndKeyBaseName, "/", "-", -1),
136+
},
137+
Items: []v1.KeyToPath{
138+
{
139+
Key: v1.TLSCertKey,
140+
Path: kubeadmconstants.EtcdCACertName,
141+
},
142+
{
143+
Key: v1.TLSPrivateKeyKey,
144+
Path: kubeadmconstants.EtcdCAKeyName,
145+
},
146+
},
147+
},
148+
},
149+
{
150+
Secret: &v1.SecretProjection{
151+
LocalObjectReference: v1.LocalObjectReference{
152+
Name: kubeadmconstants.APIServerEtcdClientCertAndKeyBaseName,
153+
},
154+
Items: []v1.KeyToPath{
155+
{
156+
Key: v1.TLSCertKey,
157+
Path: kubeadmconstants.APIServerEtcdClientCertName,
158+
},
159+
{
160+
Key: v1.TLSPrivateKeyKey,
161+
Path: kubeadmconstants.APIServerEtcdClientKeyName,
162+
},
163+
},
164+
},
165+
},
131166
},
132167
},
133168
}
@@ -175,7 +210,7 @@ func controllerManagerCertificatesVolumeSource() v1.VolumeSource {
175210
func kubeConfigVolumeSource(kubeconfigSecretName string) v1.VolumeSource {
176211
return v1.VolumeSource{
177212
Secret: &v1.SecretVolumeSource{
178-
SecretName: kubeconfigSecretName,
213+
SecretName: strings.Replace(kubeconfigSecretName, "/", "-", -1),
179214
},
180215
}
181216
}
@@ -294,5 +329,15 @@ func getTLSKeyPairs() []*tlsKeyPair {
294329
cert: kubeadmconstants.FrontProxyClientCertName,
295330
key: kubeadmconstants.FrontProxyClientKeyName,
296331
},
332+
{
333+
name: strings.Replace(kubeadmconstants.EtcdCACertAndKeyBaseName, "/", "-", -1),
334+
cert: kubeadmconstants.EtcdCACertName,
335+
key: kubeadmconstants.EtcdCAKeyName,
336+
},
337+
{
338+
name: kubeadmconstants.APIServerEtcdClientCertAndKeyBaseName,
339+
cert: kubeadmconstants.APIServerEtcdClientCertName,
340+
key: kubeadmconstants.APIServerEtcdClientKeyName,
341+
},
297342
}
298343
}

0 commit comments

Comments
 (0)