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

Commit ce4a38f

Browse files
authored
Merge pull request #370 from lblackstone/infer-etcd-ip
cmd/render: Infer etcd-servers from service-cidr for self-hosted etcd
2 parents 0a9ad9e + 77e2c0e commit ce4a38f

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

cmd/bootkube/render.go

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"github.com/spf13/cobra"
1414

1515
"github.com/kubernetes-incubator/bootkube/pkg/asset"
16+
"github.com/kubernetes-incubator/bootkube/pkg/bootkube"
1617
"github.com/kubernetes-incubator/bootkube/pkg/tlsutil"
1718
)
1819

@@ -21,6 +22,7 @@ const (
2122
dnsOffset = 10
2223
etcdOffset = 15
2324
defaultServiceBaseIP = "10.3.0.0"
25+
defaultEtcdServers = "http://127.0.0.1:2379"
2426
)
2527

2628
var (
@@ -53,7 +55,7 @@ func init() {
5355
cmdRender.Flags().StringVar(&renderOpts.assetDir, "asset-dir", "", "Output path for rendered assets")
5456
cmdRender.Flags().StringVar(&renderOpts.caCertificatePath, "ca-certificate-path", "", "Path to an existing PEM encoded CA. If provided, TLS assets will be generated using this certificate authority.")
5557
cmdRender.Flags().StringVar(&renderOpts.caPrivateKeyPath, "ca-private-key-path", "", "Path to an existing Certificate Authority RSA private key. Required if --ca-certificate is set.")
56-
cmdRender.Flags().StringVar(&renderOpts.etcdServers, "etcd-servers", "http://127.0.0.1:2379", "List of etcd servers URLs including host:port, comma separated")
58+
cmdRender.Flags().StringVar(&renderOpts.etcdServers, "etcd-servers", defaultEtcdServers, "List of etcd servers URLs including host:port, comma separated")
5759
cmdRender.Flags().StringVar(&renderOpts.apiServers, "api-servers", "https://127.0.0.1:443", "List of API server URLs including host:port, commma seprated")
5860
cmdRender.Flags().StringVar(&renderOpts.altNames, "api-server-alt-names", "", "List of SANs to use in api-server certificate. Example: 'IP=127.0.0.1,IP=127.0.0.2,DNS=localhost'. If empty, SANs will be extracted from the --api-servers flag.")
5961
cmdRender.Flags().StringVar(&renderOpts.podCIDR, "pod-cidr", "10.2.0.0/16", "The CIDR range of cluster pods.")
@@ -97,10 +99,6 @@ func validateRenderOpts(cmd *cobra.Command, args []string) error {
9799
}
98100

99101
func flagsToAssetConfig() (c *asset.Config, err error) {
100-
etcdServers, err := parseURLs(renderOpts.etcdServers)
101-
if err != nil {
102-
return nil, err
103-
}
104102
apiServers, err := parseURLs(renderOpts.apiServers)
105103
if err != nil {
106104
return nil, err
@@ -152,6 +150,25 @@ func flagsToAssetConfig() (c *asset.Config, err error) {
152150
return nil, err
153151
}
154152

153+
var etcdServers []*url.URL
154+
if renderOpts.selfHostedEtcd {
155+
etcdServerUrl, err := url.Parse(fmt.Sprintf("http://%s:2379", etcdServiceIP))
156+
if err != nil {
157+
return nil, err
158+
}
159+
160+
etcdServers = append(etcdServers, etcdServerUrl)
161+
162+
if renderOpts.etcdServers != defaultEtcdServers {
163+
bootkube.UserOutput("--experimental-self-hosted-etcd and --service-cidr set. Overriding --etcd-servers setting with %s\n", etcdServers)
164+
}
165+
} else {
166+
etcdServers, err = parseURLs(renderOpts.etcdServers)
167+
if err != nil {
168+
return nil, err
169+
}
170+
}
171+
155172
// TODO: Find better option than asking users to make manual changes
156173
if serviceNet.IP.String() != defaultServiceBaseIP {
157174
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())

0 commit comments

Comments
 (0)