@@ -59,7 +59,7 @@ func buildKubernetes(k8sDir, command string) error {
5959 return nil
6060}
6161
62- func clusterUpGCE (k8sDir , gceZone string , numNodes int ) error {
62+ func clusterUpGCE (k8sDir , gceZone string , numNodes int , imageType string ) error {
6363 kshPath := filepath .Join (k8sDir , "cluster" , "kubectl.sh" )
6464 _ , err := os .Stat (kshPath )
6565 if err == nil {
@@ -80,6 +80,11 @@ func clusterUpGCE(k8sDir, gceZone string, numNodes int) error {
8080 klog .V (4 ).Infof ("Set Kubernetes feature gates: %v" , * kubeFeatureGates )
8181 }
8282
83+ err = setImageTypeEnvs (imageType )
84+ if err != nil {
85+ return fmt .Errorf ("failed to set image type environment variables: %v" , err )
86+ }
87+
8388 err = os .Setenv ("NUM_NODES" , strconv .Itoa (numNodes ))
8489 if err != nil {
8590 return err
@@ -98,7 +103,35 @@ func clusterUpGCE(k8sDir, gceZone string, numNodes int) error {
98103 return nil
99104}
100105
101- func clusterUpGKE (gceZone , gceRegion string , numNodes int ) error {
106+ func setImageTypeEnvs (imageType string ) error {
107+ //const image = "ubuntu-1804-bionic-v20191211"
108+ //const imageProject = "ubuntu-os-cloud"
109+ switch strings .ToLower (imageType ) {
110+ case "cos" :
111+ case "gci" : // GCI/COS is default type and does not need env vars set
112+ case "ubuntu" :
113+ return errors .New ("setting environment vars for bringing up *ubuntu* cluster on GCE is unimplemented" )
114+ /* TODO(dyzz) figure out how to bring up a Ubuntu cluster on GCE. The below doesn't work.
115+ err := os.Setenv("KUBE_OS_DISTRIBUTION", "ubuntu")
116+ if err != nil {
117+ return err
118+ }
119+ err = os.Setenv("KUBE_GCE_NODE_IMAGE", image)
120+ if err != nil {
121+ return err
122+ }
123+ err = os.Setenv("KUBE_GCE_NODE_PROJECT", imageProject)
124+ if err != nil {
125+ return err
126+ }
127+ */
128+ default :
129+ return fmt .Errorf ("could not set env for image type %s, only gci, cos, ubuntu supported" , imageType )
130+ }
131+ return nil
132+ }
133+
134+ func clusterUpGKE (gceZone , gceRegion string , numNodes int , imageType string ) error {
102135 locationArg , locationVal , err := gkeLocationArgs (gceZone , gceRegion )
103136 if err != nil {
104137 return err
@@ -119,7 +152,7 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int) error {
119152 }
120153 cmd := exec .Command ("gcloud" , "container" , "clusters" , "create" , gkeTestClusterName ,
121154 locationArg , locationVal , "--cluster-version" , * gkeClusterVer , "--num-nodes" , strconv .Itoa (numNodes ),
122- "--quiet" , "--machine-type" , "n1-standard-2" )
155+ "--quiet" , "--machine-type" , "n1-standard-2" , "--image-type" , imageType )
123156 err = runCommand ("Staring E2E Cluster on GKE" , cmd )
124157 if err != nil {
125158 return fmt .Errorf ("failed to bring up kubernetes e2e cluster on gke: %v" , err )
@@ -184,7 +217,7 @@ func downloadKubernetesSource(pkgDir, k8sIoDir, kubeVersion string) error {
184217 return nil
185218}
186219
187- func getGKEKubeTestArgs (gceZone , gceRegion string ) ([]string , error ) {
220+ func getGKEKubeTestArgs (gceZone , gceRegion , imageType string ) ([]string , error ) {
188221 var locationArg , locationVal string
189222 switch {
190223 case len (gceZone ) > 0 :
@@ -222,7 +255,7 @@ func getGKEKubeTestArgs(gceZone, gceRegion string) ([]string, error) {
222255 "--gcp-network=default" ,
223256 "--check-version-skew=false" ,
224257 "--deployment=gke" ,
225- "--gcp-node-image=cos" ,
258+ fmt . Sprintf ( "--gcp-node-image=%s" , imageType ) ,
226259 "--gcp-network=default" ,
227260 fmt .Sprintf ("--cluster=%s" , gkeTestClusterName ),
228261 fmt .Sprintf ("--gke-environment=%s" , gkeEnv ),
0 commit comments