Skip to content

Commit 4507b95

Browse files
authored
Merge pull request #447 from davidz627/add/ubuntu
Add XFS utils and configuration to test on GKE with ubuntu image type
2 parents 58e28ac + d860d46 commit 4507b95

File tree

4 files changed

+51
-13
lines changed

4 files changed

+51
-13
lines changed

Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ FROM gcr.io/google-containers/debian-base-amd64:v2.0.0
2525
COPY --from=builder /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/bin/gce-pd-csi-driver /gce-pd-csi-driver
2626

2727
# Install necessary dependencies
28-
RUN clean-install util-linux e2fsprogs mount ca-certificates udev
28+
RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs
2929

3030
ENTRYPOINT ["/gce-pd-csi-driver"]

test/k8s-integration/cluster.go

+38-5
Original file line numberDiff line numberDiff line change
@@ -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),

test/k8s-integration/config/test-config-template.in

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ DriverInfo:
77
ext2:
88
ext3:
99
ext4:
10+
xfs:
1011
# The following FS types supported by GCE PD but
11-
# currently we do not test the CSI Driver on Ubuntu or Windows
12-
# xfs: XFS only available on Ubuntu
12+
# currently we do not test the CSI Driver on Windows
1313
# ntfs: NTFS only available on Windows
1414
Capabilities:
1515
{{range .Capabilities}} {{ . }}: true

test/k8s-integration/main.go

+10-5
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ var (
4242
deploymentStrat = flag.String("deployment-strategy", "gce", "choose between deploying on gce or gke")
4343
gkeClusterVer = flag.String("gke-cluster-version", "", "version of Kubernetes master and node for gke")
4444
numNodes = flag.Int("num-nodes", -1, "the number of nodes in the test cluster")
45+
imageType = flag.String("image-type", "cos", "the image type to use for the cluster")
4546

4647
// Test infrastructure flags
4748
boskosResourceType = flag.String("boskos-resource-type", "gce-project", "name of the boskos resource type to reserve")
@@ -80,6 +81,7 @@ func main() {
8081
ensureVariable(saFile, true, "service-account-file is a required flag")
8182
ensureVariable(deployOverlayName, true, "deploy-overlay-name is a required flag")
8283
ensureVariable(testFocus, true, "test-focus is a required flag")
84+
ensureVariable(imageType, true, "image type is a required flag. Available options include 'cos' and 'ubuntu'")
8385

8486
if len(*gceRegion) != 0 {
8587
ensureVariable(gceZone, false, "gce-zone and gce-region cannot both be set")
@@ -238,9 +240,9 @@ func handle() error {
238240
var err error = nil
239241
switch *deploymentStrat {
240242
case "gce":
241-
err = clusterUpGCE(k8sDir, *gceZone, *numNodes)
243+
err = clusterUpGCE(k8sDir, *gceZone, *numNodes, *imageType)
242244
case "gke":
243-
err = clusterUpGKE(*gceZone, *gceRegion, *numNodes)
245+
err = clusterUpGKE(*gceZone, *gceRegion, *numNodes, *imageType)
244246
default:
245247
err = fmt.Errorf("deployment-strategy must be set to 'gce' or 'gke', but is: %s", *deploymentStrat)
246248
}
@@ -286,7 +288,7 @@ func handle() error {
286288
var cloudProviderArgs []string
287289
switch *deploymentStrat {
288290
case "gke":
289-
cloudProviderArgs, err = getGKEKubeTestArgs(*gceZone, *gceRegion)
291+
cloudProviderArgs, err = getGKEKubeTestArgs(*gceZone, *gceRegion, *imageType)
290292
if err != nil {
291293
return fmt.Errorf("failed to build GKE kubetest args: %v", err)
292294
}
@@ -375,8 +377,11 @@ func runTestsWithConfig(testDir, testFocus, testSkip, testConfigArg string, clou
375377
homeDir, _ := os.LookupEnv("HOME")
376378
os.Setenv("KUBECONFIG", filepath.Join(homeDir, ".kube/config"))
377379

378-
artifactsDir, _ := os.LookupEnv("ARTIFACTS")
379-
reportArg := fmt.Sprintf("-report-dir=%s", artifactsDir)
380+
artifactsDir, ok := os.LookupEnv("ARTIFACTS")
381+
reportArg := ""
382+
if ok {
383+
reportArg = fmt.Sprintf("-report-dir=%s", artifactsDir)
384+
}
380385

381386
testArgs := fmt.Sprintf("--ginkgo.focus=%s --ginkgo.skip=%s %s %s",
382387
testFocus,

0 commit comments

Comments
 (0)