@@ -10,7 +10,8 @@ import (
10
10
"strconv"
11
11
"strings"
12
12
13
- apimachineryversion "k8s.io/apimachinery/pkg/version"
13
+ apimachineryversion "k8s.io/apimachinery/pkg/util/version"
14
+ apimachineryversiontypes "k8s.io/apimachinery/pkg/version"
14
15
"k8s.io/client-go/kubernetes"
15
16
"k8s.io/client-go/tools/clientcmd"
16
17
"k8s.io/klog"
@@ -182,11 +183,25 @@ func clusterUpGKE(gceZone, gceRegion string, numNodes int, imageType string, use
182
183
}
183
184
184
185
cmd = exec .Command ("gcloud" , cmdParams ... )
185
- err = runCommand ("Staring E2E Cluster on GKE" , cmd )
186
+ err = runCommand ("Starting E2E Cluster on GKE" , cmd )
186
187
if err != nil {
187
188
return fmt .Errorf ("failed to bring up kubernetes e2e cluster on gke: %v" , err )
188
189
}
189
190
191
+ // Because gcloud cannot disable addons on cluster create, the deployment has
192
+ // to be disabled on update.
193
+ clusterVersion := mustGetKubeClusterVersion ()
194
+ if ! useManagedDriver && isGKEDeploymentInstalledByDefault (clusterVersion ) {
195
+ cmd = exec .Command (
196
+ "gcloud" , "beta" , "container" , "clusters" , "update" ,
197
+ * gkeTestClusterName , locationArg , locationVal , "--quiet" ,
198
+ "--update-addons" , "GcePersistentDiskCsiDriver=DISABLED" )
199
+ err = runCommand ("Updating E2E Cluster on GKE to disable driver deployment" , cmd )
200
+ if err != nil {
201
+ return fmt .Errorf ("failed to update kubernetes e2e cluster on gke: %v" , err )
202
+ }
203
+ }
204
+
190
205
return nil
191
206
}
192
207
@@ -326,8 +341,8 @@ func getKubeClusterVersion() (string, error) {
326
341
return "" , fmt .Errorf ("failed to obtain cluster version, error: %v" , err )
327
342
}
328
343
type version struct {
329
- ClientVersion * apimachineryversion .Info `json:"clientVersion,omitempty" yaml:"clientVersion,omitempty"`
330
- ServerVersion * apimachineryversion .Info `json:"serverVersion,omitempty" yaml:"serverVersion,omitempty"`
344
+ ClientVersion * apimachineryversiontypes .Info `json:"clientVersion,omitempty" yaml:"clientVersion,omitempty"`
345
+ ServerVersion * apimachineryversiontypes .Info `json:"serverVersion,omitempty" yaml:"serverVersion,omitempty"`
331
346
}
332
347
333
348
var v version
@@ -379,3 +394,10 @@ func getKubeClient() (kubernetes.Interface, error) {
379
394
}
380
395
return kubeClient , nil
381
396
}
397
+
398
+ func isGKEDeploymentInstalledByDefault (clusterVersion string ) bool {
399
+ cv := apimachineryversion .MustParseSemantic (clusterVersion )
400
+ return cv .AtLeast (apimachineryversion .MustParseSemantic ("1.18.10-gke.2101" )) &&
401
+ cv .LessThan (apimachineryversion .MustParseSemantic ("1.19" )) ||
402
+ cv .AtLeast (apimachineryversion .MustParseSemantic ("1.19.3-gke.2100" ))
403
+ }
0 commit comments