@@ -11,6 +11,7 @@ import (
11
11
"time"
12
12
13
13
"github.com/golang/glog"
14
+ "github.com/openshift/origin/pkg/oc/bootstrap/docker/host"
14
15
kruntime "k8s.io/apimachinery/pkg/runtime"
15
16
"k8s.io/kubernetes/pkg/api/legacyscheme"
16
17
@@ -34,12 +35,6 @@ import (
34
35
_ "github.com/openshift/origin/pkg/api/install"
35
36
)
36
37
37
- // This is a special case for Docker for Mac where we need to have a directory inside the VM
38
- // that we can re-mount with --make-shared flag. We can't use the host directories mounts as
39
- // they are handled by the Docker for Mac directly (via fuse.osxfs).
40
- // TODO: Figure out how to remove this snowflake
41
- const NonLinuxHostVolumeDirPrefix = "/var/lib/origin/volumes"
42
-
43
38
var (
44
39
// staticPodLocations should only include those pods that *must* be run statically because they
45
40
// bring up the services required to run the workload controllers.
@@ -122,7 +117,7 @@ func (c *ClusterUpConfig) StartSelfHosted(out io.Writer) error {
122
117
"LOGLEVEL" : fmt .Sprintf ("%d" , c .ServerLogLevel ),
123
118
}
124
119
125
- clientConfigBuilder , err := kclientcmd .LoadFromFile (filepath .Join (configDirs . masterConfigDir , "admin.kubeconfig" ))
120
+ clientConfigBuilder , err := kclientcmd .LoadFromFile (filepath .Join (c . LocalDirFor ( kubeapiserver . KubeAPIServerDirName ) , "admin.kubeconfig" ))
126
121
if err != nil {
127
122
return err
128
123
}
@@ -133,6 +128,7 @@ func (c *ClusterUpConfig) StartSelfHosted(out io.Writer) error {
133
128
return err
134
129
}
135
130
131
+ clientConfig .Host = c .ServerIP + ":8443"
136
132
// wait for the apiserver to be ready
137
133
glog .Info ("Waiting for the kube-apiserver to be ready." )
138
134
if err := waitForHealthyKubeAPIServer (clientConfig ); err != nil {
@@ -204,11 +200,29 @@ type configDirs struct {
204
200
nodeConfigDir string
205
201
kubeDNSConfigDir string
206
202
podManifestDir string
203
+ baseDir string
207
204
err error
208
205
}
209
206
207
+ // LocalDirFor returns a local directory path for the given component.
208
+ func (c * ClusterUpConfig ) LocalDirFor (componentName string ) string {
209
+ return filepath .Join (c .BaseDir , componentName )
210
+ }
211
+
212
+ // RemoteDirFor returns a directory path on remote host
213
+ func (c * ClusterUpConfig ) RemoteDirFor (componentName string ) string {
214
+ return filepath .Join (host .RemoteHostOriginDir , c .BaseDir , componentName )
215
+ }
216
+
217
+ func (c * ClusterUpConfig ) copyToRemote (source , component string ) (string , error ) {
218
+ if err := c .hostHelper .CopyToHost (source , c .RemoteDirFor (component )); err != nil {
219
+ return "" , err
220
+ }
221
+ return c .RemoteDirFor (component ), nil
222
+ }
223
+
210
224
func (c * ClusterUpConfig ) BuildConfig () (* configDirs , error ) {
211
- configLocations := & configDirs {
225
+ configs := & configDirs {
212
226
masterConfigDir : filepath .Join (c .BaseDir , kubeapiserver .KubeAPIServerDirName ),
213
227
openshiftAPIServerConfigDir : filepath .Join (c .BaseDir , kubeapiserver .OpenShiftAPIServerDirName ),
214
228
openshiftControllerConfigDir : filepath .Join (c .BaseDir , kubeapiserver .OpenShiftControllerManagerDirName ),
@@ -217,61 +231,107 @@ func (c *ClusterUpConfig) BuildConfig() (*configDirs, error) {
217
231
podManifestDir : filepath .Join (c .BaseDir , kubelet .PodManifestDirName ),
218
232
}
219
233
220
- if _ , err := os .Stat (configLocations .masterConfigDir ); os .IsNotExist (err ) {
234
+ originalMasterConfigDir := configs .masterConfigDir
235
+ originalNodeConfigDir := configs .nodeConfigDir
236
+ var err error
237
+
238
+ if _ , err := os .Stat (configs .masterConfigDir ); os .IsNotExist (err ) {
221
239
_ , err = c .makeMasterConfig ()
222
240
if err != nil {
223
241
return nil , err
224
242
}
225
243
}
226
- if _ , err := os .Stat (configLocations .openshiftAPIServerConfigDir ); os .IsNotExist (err ) {
227
- _ , err = c .makeOpenShiftAPIServerConfig (configLocations .masterConfigDir )
244
+ if c .isRemoteDocker {
245
+ configs .masterConfigDir , err = c .copyToRemote (configs .masterConfigDir , kubeapiserver .KubeAPIServerDirName )
246
+ if err != nil {
247
+ return nil , err
248
+ }
249
+ }
250
+
251
+ if _ , err := os .Stat (configs .openshiftAPIServerConfigDir ); os .IsNotExist (err ) {
252
+ _ , err = c .makeOpenShiftAPIServerConfig (originalMasterConfigDir )
253
+ if err != nil {
254
+ return nil , err
255
+ }
256
+ }
257
+ if c .isRemoteDocker {
258
+ configs .openshiftAPIServerConfigDir , err = c .copyToRemote (configs .openshiftAPIServerConfigDir , kubeapiserver .OpenShiftAPIServerDirName )
259
+ if err != nil {
260
+ return nil , err
261
+ }
262
+ }
263
+
264
+ if _ , err := os .Stat (configs .openshiftControllerConfigDir ); os .IsNotExist (err ) {
265
+ _ , err = c .makeOpenShiftControllerConfig (originalMasterConfigDir )
266
+ if err != nil {
267
+ return nil , err
268
+ }
269
+ }
270
+ if c .isRemoteDocker {
271
+ configs .openshiftControllerConfigDir , err = c .copyToRemote (configs .openshiftControllerConfigDir , kubeapiserver .OpenShiftControllerManagerDirName )
228
272
if err != nil {
229
273
return nil , err
230
274
}
231
275
}
232
- if _ , err := os .Stat (configLocations .openshiftControllerConfigDir ); os .IsNotExist (err ) {
233
- _ , err = c .makeOpenShiftControllerConfig (configLocations .masterConfigDir )
276
+
277
+ if _ , err := os .Stat (configs .nodeConfigDir ); os .IsNotExist (err ) {
278
+ _ , err = c .makeNodeConfig (configs .masterConfigDir )
234
279
if err != nil {
235
280
return nil , err
236
281
}
237
282
}
238
- if _ , err := os . Stat ( configLocations . nodeConfigDir ); os . IsNotExist ( err ) {
239
- _ , err = c .makeNodeConfig ( configLocations . masterConfigDir )
283
+ if c . isRemoteDocker {
284
+ configs . nodeConfigDir , err = c .copyToRemote ( configs . nodeConfigDir , kubelet . NodeConfigDirName )
240
285
if err != nil {
241
286
return nil , err
242
287
}
243
288
}
244
- if _ , err := os .Stat (configLocations .kubeDNSConfigDir ); os .IsNotExist (err ) {
245
- _ , err = c .makeKubeDNSConfig (configLocations .nodeConfigDir )
289
+
290
+ if _ , err := os .Stat (configs .kubeDNSConfigDir ); os .IsNotExist (err ) {
291
+ _ , err = c .makeKubeDNSConfig (originalNodeConfigDir )
246
292
if err != nil {
247
293
return nil , err
248
294
}
295
+
249
296
}
250
- if _ , err := os .Stat (configLocations .podManifestDir ); os .IsNotExist (err ) {
251
- if err := os .MkdirAll (configLocations .podManifestDir , 0755 ); err != nil {
297
+ if c .isRemoteDocker {
298
+ configs .kubeDNSConfigDir , err = c .copyToRemote (configs .kubeDNSConfigDir , kubelet .KubeDNSDirName )
299
+ if err != nil {
252
300
return nil , err
253
301
}
254
302
}
255
- glog .V (2 ).Infof ("configLocations = %#v" , * configLocations )
256
303
304
+ if _ , err := os .Stat (configs .podManifestDir ); os .IsNotExist (err ) {
305
+ if err := os .MkdirAll (configs .podManifestDir , 0755 ); err != nil {
306
+ return nil , err
307
+ }
308
+
309
+ }
257
310
substitutions := map [string ]string {
258
- "/path/to/master/config-dir" : configLocations .masterConfigDir ,
259
- "/path/to/openshift-apiserver/config-dir" : configLocations .openshiftAPIServerConfigDir ,
311
+ "/path/to/master/config-dir" : configs .masterConfigDir ,
312
+ "/path/to/openshift-apiserver/config-dir" : configs .openshiftAPIServerConfigDir ,
260
313
"ETCD_VOLUME" : "emptyDir:\n " ,
261
314
}
262
315
if len (c .HostDataDir ) > 0 {
263
316
substitutions ["ETCD_VOLUME" ] = `hostPath:
264
317
path: ` + c .HostDataDir + "\n "
265
318
}
266
319
267
- glog .V (2 ).Infof ("Creating static pod definitions in %q" , configLocations .podManifestDir )
320
+ glog .V (2 ).Infof ("Creating static pod definitions in %q" , configs .podManifestDir )
268
321
for _ , staticPodLocation := range staticPodLocations {
269
- if err := staticpods .UpsertStaticPod (staticPodLocation , substitutions , configLocations .podManifestDir ); err != nil {
322
+ if err := staticpods .UpsertStaticPod (staticPodLocation , substitutions , configs .podManifestDir ); err != nil {
323
+ return nil , err
324
+ }
325
+ }
326
+ if c .isRemoteDocker {
327
+ configs .podManifestDir , err = c .copyToRemote (configs .podManifestDir , kubelet .PodManifestDirName )
328
+ if err != nil {
270
329
return nil , err
271
330
}
272
331
}
332
+ glog .V (2 ).Infof ("configLocations = %#v" , * configs )
273
333
274
- return configLocations , nil
334
+ return configs , nil
275
335
}
276
336
277
337
// makeMasterConfig returns the directory where a generated masterconfig lives
@@ -282,7 +342,7 @@ func (c *ClusterUpConfig) makeMasterConfig() (string, error) {
282
342
container .MasterImage = c .openshiftImage ()
283
343
container .Args = []string {
284
344
"--write-config=/var/lib/origin/openshift.local.config" ,
285
- "--master=127.0.0.1" ,
345
+ fmt . Sprintf ( "--master=%s" , c . ServerIP ) ,
286
346
fmt .Sprintf ("--images=%s" , c .imageFormat ()),
287
347
fmt .Sprintf ("--dns=0.0.0.0:%d" , c .DNSPort ),
288
348
fmt .Sprintf ("--public-master=https://%s:8443" , publicHost ),
0 commit comments