Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit 1af5409

Browse files
author
Diego Pontoriero
committed
Add back support for http:// etcd endpoints.
The default is still TLS-enabled, and we print a notification that we're are generating etcd TLS certificates if they weren't provided.
1 parent 93d9d9a commit 1af5409

File tree

4 files changed

+18
-10
lines changed

4 files changed

+18
-10
lines changed

cmd/bootkube/render.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,10 +178,12 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
178178
if err != nil {
179179
return nil, err
180180
}
181-
for _, url := range etcdServers {
182-
if url.Scheme != "https" {
183-
return nil, fmt.Errorf("etcd endpoints must use https, got: %s\n", url)
184-
}
181+
}
182+
183+
etcdUseTLS := false
184+
for _, url := range etcdServers {
185+
if url.Scheme == "https" {
186+
etcdUseTLS = true
185187
}
186188
}
187189

@@ -201,6 +203,10 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
201203
}
202204
}
203205

206+
if etcdUseTLS && etcdCACert == nil {
207+
bootkube.UserOutput("NOTE: --etcd-servers=%s but -etcd-ca-path, --etcd-certificate-path, and --etcd-private-key-path were not set. Bootkube will create etcd certificates under '%s/tls'. You must configure etcd to use these certificates before invoking 'bootkube run'.\n", renderOpts.etcdServers, renderOpts.assetDir)
208+
}
209+
204210
// TODO: Find better option than asking users to make manual changes
205211
if serviceNet.IP.String() != defaultServiceBaseIP {
206212
fmt.Printf("You have selected a non-default service CIDR %s - be sure your kubelet service file uses --cluster-dns=%s\n", serviceNet.String(), dnsServiceIP.String())
@@ -211,6 +217,7 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
211217
EtcdClientCert: etcdClientCert,
212218
EtcdClientKey: etcdClientKey,
213219
EtcdServers: etcdServers,
220+
EtcdUseTLS: etcdUseTLS,
214221
CACert: caCert,
215222
CAPrivKey: caPrivKey,
216223
APIServers: apiServers,

pkg/asset/asset.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ type Config struct {
6464
EtcdClientCert *x509.Certificate
6565
EtcdClientKey *rsa.PrivateKey
6666
EtcdServers []*url.URL
67+
EtcdUseTLS bool
6768
APIServers []*url.URL
6869
CACert *x509.Certificate
6970
CAPrivKey *rsa.PrivateKey
@@ -108,7 +109,7 @@ func NewDefaultAssets(conf Config) (Assets, error) {
108109
as = append(as, tlsAssets...)
109110

110111
// etcd TLS assets.
111-
if !conf.SelfHostedEtcd {
112+
if conf.EtcdUseTLS {
112113
etcdTLSAssets, err := newEtcdTLSAssets(conf.EtcdCACert, conf.EtcdClientCert, conf.EtcdClientKey, conf.CACert, conf.CAPrivKey, conf.EtcdServers)
113114
if err != nil {
114115
return Assets{}, err
@@ -124,7 +125,7 @@ func NewDefaultAssets(conf Config) (Assets, error) {
124125
as = append(as, kubeConfig)
125126

126127
// K8S APIServer secret
127-
apiSecret, err := newAPIServerSecretAsset(as, conf.SelfHostedEtcd)
128+
apiSecret, err := newAPIServerSecretAsset(as, conf.EtcdUseTLS)
128129
if err != nil {
129130
return Assets{}, err
130131
}

pkg/asset/internal/templates.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ spec:
171171
- --bind-address=0.0.0.0
172172
- --client-ca-file=/etc/kubernetes/secrets/ca.crt
173173
- --cloud-provider={{ .CloudProvider }}
174-
{{- if not .SelfHostedEtcd }}
174+
{{- if .EtcdUseTLS }}
175175
- --etcd-cafile=/etc/kubernetes/secrets/etcd-ca.crt
176176
- --etcd-certfile=/etc/kubernetes/secrets/etcd-client.crt
177177
- --etcd-keyfile=/etc/kubernetes/secrets/etcd-client.key
@@ -236,7 +236,7 @@ spec:
236236
- --authorization-mode=RBAC
237237
- --bind-address=0.0.0.0
238238
- --client-ca-file=/etc/kubernetes/secrets/ca.crt
239-
{{- if not .SelfHostedEtcd }}
239+
{{- if .EtcdUseTLS }}
240240
- --etcd-cafile=/etc/kubernetes/secrets/etcd-ca.crt
241241
- --etcd-certfile=/etc/kubernetes/secrets/etcd-client.crt
242242
- --etcd-keyfile=/etc/kubernetes/secrets/etcd-client.key

pkg/asset/k8s.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,14 +87,14 @@ func newKubeConfigAsset(assets Assets, conf Config) (Asset, error) {
8787
})
8888
}
8989

90-
func newAPIServerSecretAsset(assets Assets, selfHostedEtcd bool) (Asset, error) {
90+
func newAPIServerSecretAsset(assets Assets, etcdUseTLS bool) (Asset, error) {
9191
secretAssets := []string{
9292
AssetPathAPIServerKey,
9393
AssetPathAPIServerCert,
9494
AssetPathServiceAccountPubKey,
9595
AssetPathCACert,
9696
}
97-
if !selfHostedEtcd {
97+
if etcdUseTLS {
9898
secretAssets = append(secretAssets, []string{
9999
AssetPathEtcdCA,
100100
AssetPathEtcdClientCert,

0 commit comments

Comments
 (0)