diff --git a/jiri-test/internal/test/run.go b/jiri-test/internal/test/run.go
index d3f8288..69abecf 100644
--- a/jiri-test/internal/test/run.go
+++ b/jiri-test/internal/test/run.go
@@ -152,6 +152,7 @@
 	"vanadium-signup-welcome-1-new":           vanadiumSignupWelcomeStepOneNew,
 	"vanadium-signup-welcome-2-new":           vanadiumSignupWelcomeStepTwoNew,
 	"vanadium-travel-test":                    vanadiumTravelTest,
+	"vanadium-vkube-integration-test":         vanadiumVkubeIntegrationTest,
 	"vanadium-website-deploy":                 vanadiumWebsiteDeploy,
 	"vanadium-website-site":                   vanadiumWebsiteSite,
 	"vanadium-website-tutorials-core":         vanadiumWebsiteTutorialsCore,
diff --git a/jiri-test/internal/test/vkube.go b/jiri-test/internal/test/vkube.go
new file mode 100644
index 0000000..896b1a1
--- /dev/null
+++ b/jiri-test/internal/test/vkube.go
@@ -0,0 +1,54 @@
+// Copyright 2016 The Vanadium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package test
+
+import (
+	"errors"
+	"fmt"
+	"os"
+
+	"v.io/jiri"
+	"v.io/jiri/collect"
+	"v.io/x/devtools/internal/test"
+)
+
+const projectEnvVar = "VKUBE_TEST_PROJECT"
+
+func vanadiumVkubeIntegrationTest(jirix *jiri.X, testName string, opts ...Opt) (_ *test.Result, e error) {
+	project := os.Getenv(projectEnvVar)
+	if project == "" {
+		return nil, newInternalError(fmt.Errorf("project not defined in %s environment variable", projectEnvVar), "Env")
+	}
+	s := jirix.NewSeq()
+	if err := s.Last("gcloud", "projects", "describe", project); err != nil {
+		return nil, newInternalError(errors.New("this test requires gcloud"), err.Error())
+	}
+	if err := s.Last("kubectl", "cluster-info"); err != nil {
+		return nil, newInternalError(errors.New("this test requires kubectl"), err.Error())
+	}
+	if err := s.Last("gsutil", "ls", "-p", project); err != nil {
+		return nil, newInternalError(errors.New("this test requires gsutil"), err.Error())
+	}
+	if err := s.Last("docker", "info"); err != nil {
+		return nil, newInternalError(errors.New("this test requires docker"), err.Error())
+	}
+
+	cleanup, err := initTest(jirix, testName, []string{"v23:base"})
+	if err != nil {
+		return nil, newInternalError(err, "Init")
+	}
+	defer collect.Error(cleanup, &e)
+
+	args := []string{
+		"go", "test", "-v=1", "-run=TestV23Vkube", "-timeout=30m",
+		"v.io/x/ref/services/cluster/vkube",
+		"--v23.tests", "--project=" + project, "--get-credentials=false",
+	}
+	if err := s.Capture(jirix.Stdout(), jirix.Stderr()).Last("jiri", args...); err != nil {
+		return nil, newInternalError(err, err.Error())
+	}
+
+	return &test.Result{Status: test.Passed}, nil
+}
