@@ -148,21 +148,38 @@ func createClusterEKZ() error {
148
148
149
149
// TODO handle port clash
150
150
// TODO handle container name clash
151
- err = getKubeconfigEKZ ( containerName , expandKubeConfigFile ())
152
- if err != nil {
151
+
152
+ if err := getKubeconfigEKZ ( containerName , expandKubeConfigFile ()); err != nil {
153
153
return err
154
154
}
155
155
logger .Successf ("kubeconfig is written to: %s" , expandKubeConfigFile ())
156
156
157
157
logger .Waitingf ("waiting for cluster to start ..." )
158
158
waitForNodeStarted ("controller" , 30 * time .Second )
159
159
160
- logger .Actionf ("installing the default storageclass ..." )
161
- err = installDefaultStorageClass ()
162
- if err != nil {
160
+ logger .Actionf ("installing the default storage class ..." )
161
+ if err := installDefaultStorageClass (); err != nil {
163
162
return err
164
163
}
165
164
165
+ if hostMode == false {
166
+ bridgeName := fmt .Sprintf ("ekz-%s-bridge" , clusterName )
167
+ ipRangeVar := script .Var ()
168
+ script .Exec ("docker" , "inspect" , "-f" , `{{range .IPAM.Config}}{{.Subnet}}{{end}}` , bridgeName ).To (ipRangeVar )
169
+ parts := strings .SplitN (ipRangeVar .String (), "." , 4 )
170
+ if len (parts ) != 4 {
171
+ return errors .Errorf ("error parsing subnet: %s" , ipRangeVar .String ())
172
+ }
173
+
174
+ // not vert safe range but ok to be .200-220 for a bridge subnet
175
+ ipRange := strings .Join (parts [0 :3 ], "." ) + ".200-" + strings .Join (parts [0 :3 ], "." ) + ".220"
176
+
177
+ logger .Actionf ("installing the default load balancer using IP range: %s ..." , ipRange )
178
+ if err := installLoadBalancer (ipRange ); err != nil {
179
+ return err
180
+ }
181
+ }
182
+
166
183
logger .Waitingf ("waiting for cluster to be ready ..." )
167
184
waitForNodeReady (120 * time .Second )
168
185
@@ -173,3 +190,21 @@ func createClusterEKZ() error {
173
190
func installDefaultStorageClass () error {
174
191
return script .Echo (manifests .StorageClass ).Exec ("kubectl" , "--kubeconfig=" + expandKubeConfigFile (), "apply" , "-f" , "-" ).Run ()
175
192
}
193
+
194
+ func installLoadBalancer (ipRange string ) error {
195
+ err := script .Echo (manifests .MetalLB ).
196
+ Exec ("kubectl" , "--kubeconfig=" + expandKubeConfigFile (), "apply" , "-f" , "-" ).
197
+ Run ()
198
+ if err != nil {
199
+ return err
200
+ }
201
+
202
+ err = script .Echo (fmt .Sprintf (manifests .MetalLBConfig , ipRange )).
203
+ Exec ("kubectl" , "--kubeconfig=" + expandKubeConfigFile (), "apply" , "-f" , "-" ).
204
+ Run ()
205
+ if err != nil {
206
+ return err
207
+ }
208
+
209
+ return nil
210
+ }
0 commit comments