Skip to content

Commit 688149a

Browse files
authored
Merge pull request kubernetes#84613 from MorrisLaw/breakout-kubectl-from-utils
move KubectlCmd out of utils into its own package
2 parents c9f690d + e981d1e commit 688149a

39 files changed

+493
-451
lines changed

test/e2e/apimachinery/crd_publish_openapi.go

Lines changed: 30 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -72,55 +72,55 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Privileged:ClusterAdmin]", fu
7272

7373
ginkgo.By("client-side validation (kubectl create and apply) allows request with known and required properties")
7474
validCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"name":"test-bar"}]}}`, meta)
75-
if _, err := framework.RunKubectlInput(validCR, ns, "create", "-f", "-"); err != nil {
75+
if _, err := framework.RunKubectlInput(f.Namespace.Name, validCR, ns, "create", "-f", "-"); err != nil {
7676
framework.Failf("failed to create valid CR %s: %v", validCR, err)
7777
}
78-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-foo"); err != nil {
78+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-foo"); err != nil {
7979
framework.Failf("failed to delete valid CR: %v", err)
8080
}
81-
if _, err := framework.RunKubectlInput(validCR, ns, "apply", "-f", "-"); err != nil {
81+
if _, err := framework.RunKubectlInput(f.Namespace.Name, validCR, ns, "apply", "-f", "-"); err != nil {
8282
framework.Failf("failed to apply valid CR %s: %v", validCR, err)
8383
}
84-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-foo"); err != nil {
84+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-foo"); err != nil {
8585
framework.Failf("failed to delete valid CR: %v", err)
8686
}
8787

8888
ginkgo.By("client-side validation (kubectl create and apply) rejects request with unknown properties when disallowed by the schema")
8989
unknownCR := fmt.Sprintf(`{%s,"spec":{"foo":true}}`, meta)
90-
if _, err := framework.RunKubectlInput(unknownCR, ns, "create", "-f", "-"); err == nil || !strings.Contains(err.Error(), `unknown field "foo"`) {
90+
if _, err := framework.RunKubectlInput(f.Namespace.Name, unknownCR, ns, "create", "-f", "-"); err == nil || !strings.Contains(err.Error(), `unknown field "foo"`) {
9191
framework.Failf("unexpected no error when creating CR with unknown field: %v", err)
9292
}
93-
if _, err := framework.RunKubectlInput(unknownCR, ns, "apply", "-f", "-"); err == nil || !strings.Contains(err.Error(), `unknown field "foo"`) {
93+
if _, err := framework.RunKubectlInput(f.Namespace.Name, unknownCR, ns, "apply", "-f", "-"); err == nil || !strings.Contains(err.Error(), `unknown field "foo"`) {
9494
framework.Failf("unexpected no error when applying CR with unknown field: %v", err)
9595
}
9696

9797
ginkgo.By("client-side validation (kubectl create and apply) rejects request without required properties")
9898
noRequireCR := fmt.Sprintf(`{%s,"spec":{"bars":[{"age":"10"}]}}`, meta)
99-
if _, err := framework.RunKubectlInput(noRequireCR, ns, "create", "-f", "-"); err == nil || !strings.Contains(err.Error(), `missing required field "name"`) {
99+
if _, err := framework.RunKubectlInput(f.Namespace.Name, noRequireCR, ns, "create", "-f", "-"); err == nil || !strings.Contains(err.Error(), `missing required field "name"`) {
100100
framework.Failf("unexpected no error when creating CR without required field: %v", err)
101101
}
102-
if _, err := framework.RunKubectlInput(noRequireCR, ns, "apply", "-f", "-"); err == nil || !strings.Contains(err.Error(), `missing required field "name"`) {
102+
if _, err := framework.RunKubectlInput(f.Namespace.Name, noRequireCR, ns, "apply", "-f", "-"); err == nil || !strings.Contains(err.Error(), `missing required field "name"`) {
103103
framework.Failf("unexpected no error when applying CR without required field: %v", err)
104104
}
105105

106106
ginkgo.By("kubectl explain works to explain CR properties")
107-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*Foo CRD for Testing.*FIELDS:.*apiVersion.*<string>.*APIVersion defines.*spec.*<Object>.*Specification of Foo`); err != nil {
107+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*Foo CRD for Testing.*FIELDS:.*apiVersion.*<string>.*APIVersion defines.*spec.*<Object>.*Specification of Foo`); err != nil {
108108
framework.Failf("%v", err)
109109
}
110110

111111
ginkgo.By("kubectl explain works to explain CR properties recursively")
112-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural+".metadata", `(?s)DESCRIPTION:.*Standard object's metadata.*FIELDS:.*creationTimestamp.*<string>.*CreationTimestamp is a timestamp`); err != nil {
112+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural+".metadata", `(?s)DESCRIPTION:.*Standard object's metadata.*FIELDS:.*creationTimestamp.*<string>.*CreationTimestamp is a timestamp`); err != nil {
113113
framework.Failf("%v", err)
114114
}
115-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural+".spec", `(?s)DESCRIPTION:.*Specification of Foo.*FIELDS:.*bars.*<\[\]Object>.*List of Bars and their specs`); err != nil {
115+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural+".spec", `(?s)DESCRIPTION:.*Specification of Foo.*FIELDS:.*bars.*<\[\]Object>.*List of Bars and their specs`); err != nil {
116116
framework.Failf("%v", err)
117117
}
118-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural+".spec.bars", `(?s)RESOURCE:.*bars.*<\[\]Object>.*DESCRIPTION:.*List of Bars and their specs.*FIELDS:.*bazs.*<\[\]string>.*List of Bazs.*name.*<string>.*Name of Bar`); err != nil {
118+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural+".spec.bars", `(?s)RESOURCE:.*bars.*<\[\]Object>.*DESCRIPTION:.*List of Bars and their specs.*FIELDS:.*bazs.*<\[\]string>.*List of Bazs.*name.*<string>.*Name of Bar`); err != nil {
119119
framework.Failf("%v", err)
120120
}
121121

122122
ginkgo.By("kubectl explain works to return error when explain is called on property that doesn't exist")
123-
if _, err := framework.RunKubectl("explain", crd.Crd.Spec.Names.Plural+".spec.bars2"); err == nil || !strings.Contains(err.Error(), `field "bars2" does not exist`) {
123+
if _, err := framework.RunKubectl(f.Namespace.Name, "explain", crd.Crd.Spec.Names.Plural+".spec.bars2"); err == nil || !strings.Contains(err.Error(), `field "bars2" does not exist`) {
124124
framework.Failf("unexpected no error when explaining property that doesn't exist: %v", err)
125125
}
126126

@@ -147,21 +147,21 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Privileged:ClusterAdmin]", fu
147147

148148
ginkgo.By("client-side validation (kubectl create and apply) allows request with any unknown properties")
149149
randomCR := fmt.Sprintf(`{%s,"a":{"b":[{"c":"d"}]}}`, meta)
150-
if _, err := framework.RunKubectlInput(randomCR, ns, "create", "-f", "-"); err != nil {
150+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "create", "-f", "-"); err != nil {
151151
framework.Failf("failed to create random CR %s for CRD without schema: %v", randomCR, err)
152152
}
153-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
153+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
154154
framework.Failf("failed to delete random CR: %v", err)
155155
}
156-
if _, err := framework.RunKubectlInput(randomCR, ns, "apply", "-f", "-"); err != nil {
156+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "apply", "-f", "-"); err != nil {
157157
framework.Failf("failed to apply random CR %s for CRD without schema: %v", randomCR, err)
158158
}
159-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
159+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
160160
framework.Failf("failed to delete random CR: %v", err)
161161
}
162162

163163
ginkgo.By("kubectl explain works to explain CR without validation schema")
164-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*<empty>`); err != nil {
164+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*<empty>`); err != nil {
165165
framework.Failf("%v", err)
166166
}
167167

@@ -188,21 +188,21 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Privileged:ClusterAdmin]", fu
188188

189189
ginkgo.By("client-side validation (kubectl create and apply) allows request with any unknown properties")
190190
randomCR := fmt.Sprintf(`{%s,"a":{"b":[{"c":"d"}]}}`, meta)
191-
if _, err := framework.RunKubectlInput(randomCR, ns, "create", "-f", "-"); err != nil {
191+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "create", "-f", "-"); err != nil {
192192
framework.Failf("failed to create random CR %s for CRD that allows unknown properties at the root: %v", randomCR, err)
193193
}
194-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
194+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
195195
framework.Failf("failed to delete random CR: %v", err)
196196
}
197-
if _, err := framework.RunKubectlInput(randomCR, ns, "apply", "-f", "-"); err != nil {
197+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "apply", "-f", "-"); err != nil {
198198
framework.Failf("failed to apply random CR %s for CRD without schema: %v", randomCR, err)
199199
}
200-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
200+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
201201
framework.Failf("failed to delete random CR: %v", err)
202202
}
203203

204204
ginkgo.By("kubectl explain works to explain CR")
205-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural, fmt.Sprintf(`(?s)KIND:.*%s`, crd.Crd.Spec.Names.Kind)); err != nil {
205+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural, fmt.Sprintf(`(?s)KIND:.*%s`, crd.Crd.Spec.Names.Kind)); err != nil {
206206
framework.Failf("%v", err)
207207
}
208208

@@ -230,21 +230,21 @@ var _ = SIGDescribe("CustomResourcePublishOpenAPI [Privileged:ClusterAdmin]", fu
230230

231231
ginkgo.By("client-side validation (kubectl create and apply) allows request with any unknown properties")
232232
randomCR := fmt.Sprintf(`{%s,"spec":{"b":[{"c":"d"}]}}`, meta)
233-
if _, err := framework.RunKubectlInput(randomCR, ns, "create", "-f", "-"); err != nil {
233+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "create", "-f", "-"); err != nil {
234234
framework.Failf("failed to create random CR %s for CRD that allows unknown properties in a nested object: %v", randomCR, err)
235235
}
236-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
236+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
237237
framework.Failf("failed to delete random CR: %v", err)
238238
}
239-
if _, err := framework.RunKubectlInput(randomCR, ns, "apply", "-f", "-"); err != nil {
239+
if _, err := framework.RunKubectlInput(f.Namespace.Name, randomCR, ns, "apply", "-f", "-"); err != nil {
240240
framework.Failf("failed to apply random CR %s for CRD without schema: %v", randomCR, err)
241241
}
242-
if _, err := framework.RunKubectl(ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
242+
if _, err := framework.RunKubectl(f.Namespace.Name, ns, "delete", crd.Crd.Spec.Names.Plural, "test-cr"); err != nil {
243243
framework.Failf("failed to delete random CR: %v", err)
244244
}
245245

246246
ginkgo.By("kubectl explain works to explain CR")
247-
if err := verifyKubectlExplain(crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*preserve-unknown-properties in nested field for Testing`); err != nil {
247+
if err := verifyKubectlExplain(f.Namespace.Name, crd.Crd.Spec.Names.Plural, `(?s)DESCRIPTION:.*preserve-unknown-properties in nested field for Testing`); err != nil {
248248
framework.Failf("%v", err)
249249
}
250250

@@ -663,8 +663,8 @@ func dropDefaults(s *spec.Schema) {
663663
delete(s.Extensions, "x-kubernetes-group-version-kind")
664664
}
665665

666-
func verifyKubectlExplain(name, pattern string) error {
667-
result, err := framework.RunKubectl("explain", name)
666+
func verifyKubectlExplain(ns, name, pattern string) error {
667+
result, err := framework.RunKubectl(ns, "explain", name)
668668
if err != nil {
669669
return fmt.Errorf("failed to explain %s: %v", name, err)
670670
}

test/e2e/apimachinery/webhook.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ func testAttachingPodWebhook(f *framework.Framework) {
11981198
ginkgo.By("'kubectl attach' the pod, should be denied by the webhook")
11991199
timer := time.NewTimer(30 * time.Second)
12001200
defer timer.Stop()
1201-
_, err = framework.NewKubectlCommand("attach", fmt.Sprintf("--namespace=%v", f.Namespace.Name), pod.Name, "-i", "-c=container1").WithTimeout(timer.C).Exec()
1201+
_, err = framework.NewKubectlCommand(f.Namespace.Name, "attach", fmt.Sprintf("--namespace=%v", f.Namespace.Name), pod.Name, "-i", "-c=container1").WithTimeout(timer.C).Exec()
12021202
framework.ExpectError(err, "'kubectl attach' the pod, should be denied by the webhook")
12031203
if e, a := "attaching to pod 'to-be-attached-pod' is not allowed", err.Error(); !strings.Contains(a, e) {
12041204
framework.Failf("unexpected 'kubectl attach' error message. expected to contain %q, got %q", e, a)

test/e2e/apps/statefulset.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -848,10 +848,10 @@ var _ = SIGDescribe("StatefulSet", func() {
848848
})
849849
})
850850

851-
func kubectlExecWithRetries(args ...string) (out string) {
851+
func kubectlExecWithRetries(ns string, args ...string) (out string) {
852852
var err error
853853
for i := 0; i < 3; i++ {
854-
if out, err = framework.RunKubectl(args...); err == nil {
854+
if out, err = framework.RunKubectl(ns, args...); err == nil {
855855
return
856856
}
857857
framework.Logf("Retrying %v:\nerror %v\nstdout %v", args, err, out)
@@ -916,15 +916,15 @@ func (z *zookeeperTester) write(statefulPodIndex int, kv map[string]string) {
916916
ns := fmt.Sprintf("--namespace=%v", z.ss.Namespace)
917917
for k, v := range kv {
918918
cmd := fmt.Sprintf("/opt/zookeeper/bin/zkCli.sh create /%v %v", k, v)
919-
framework.Logf(framework.RunKubectlOrDie("exec", ns, name, "--", "/bin/sh", "-c", cmd))
919+
framework.Logf(framework.RunKubectlOrDie(z.ss.Namespace, "exec", ns, name, "--", "/bin/sh", "-c", cmd))
920920
}
921921
}
922922

923923
func (z *zookeeperTester) read(statefulPodIndex int, key string) string {
924924
name := fmt.Sprintf("%v-%d", z.ss.Name, statefulPodIndex)
925925
ns := fmt.Sprintf("--namespace=%v", z.ss.Namespace)
926926
cmd := fmt.Sprintf("/opt/zookeeper/bin/zkCli.sh get /%v", key)
927-
return lastLine(framework.RunKubectlOrDie("exec", ns, name, "--", "/bin/sh", "-c", cmd))
927+
return lastLine(framework.RunKubectlOrDie(z.ss.Namespace, "exec", ns, name, "--", "/bin/sh", "-c", cmd))
928928
}
929929

930930
type mysqlGaleraTester struct {
@@ -941,7 +941,7 @@ func (m *mysqlGaleraTester) mysqlExec(cmd, ns, podName string) string {
941941
// TODO: Find a readiness probe for mysql that guarantees writes will
942942
// succeed and ditch retries. Current probe only reads, so there's a window
943943
// for a race.
944-
return kubectlExecWithRetries(fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
944+
return kubectlExecWithRetries(ns, fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
945945
}
946946

947947
func (m *mysqlGaleraTester) deploy(ns string) *appsv1.StatefulSet {
@@ -981,7 +981,7 @@ func (m *redisTester) name() string {
981981

982982
func (m *redisTester) redisExec(cmd, ns, podName string) string {
983983
cmd = fmt.Sprintf("/opt/redis/redis-cli -h %v %v", podName, cmd)
984-
return framework.RunKubectlOrDie(fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
984+
return framework.RunKubectlOrDie(ns, fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
985985
}
986986

987987
func (m *redisTester) deploy(ns string) *appsv1.StatefulSet {
@@ -1012,7 +1012,7 @@ func (c *cockroachDBTester) name() string {
10121012

10131013
func (c *cockroachDBTester) cockroachDBExec(cmd, ns, podName string) string {
10141014
cmd = fmt.Sprintf("/cockroach/cockroach sql --insecure --host %s.cockroachdb -e \"%v\"", podName, cmd)
1015-
return framework.RunKubectlOrDie(fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
1015+
return framework.RunKubectlOrDie(ns, fmt.Sprintf("--namespace=%v", ns), "exec", podName, "--", "/bin/sh", "-c", cmd)
10161016
}
10171017

10181018
func (c *cockroachDBTester) deploy(ns string) *appsv1.StatefulSet {

test/e2e/auth/BUILD

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,4 @@
1-
package(default_visibility = ["//visibility:public"])
2-
3-
load(
4-
"@io_bazel_rules_go//go:def.bzl",
5-
"go_library",
6-
)
1+
load("@io_bazel_rules_go//go:def.bzl", "go_library")
72

83
go_library(
94
name = "go_default_library",
@@ -19,6 +14,7 @@ go_library(
1914
"service_accounts.go",
2015
],
2116
importpath = "k8s.io/kubernetes/test/e2e/auth",
17+
visibility = ["//visibility:public"],
2218
deps = [
2319
"//pkg/master/ports:go_default_library",
2420
"//pkg/security/apparmor:go_default_library",
@@ -55,6 +51,7 @@ go_library(
5551
"//test/e2e/framework/auth:go_default_library",
5652
"//test/e2e/framework/deployment:go_default_library",
5753
"//test/e2e/framework/job:go_default_library",
54+
"//test/e2e/framework/kubectl:go_default_library",
5855
"//test/e2e/framework/node:go_default_library",
5956
"//test/e2e/framework/pod:go_default_library",
6057
"//test/utils:go_default_library",
@@ -77,4 +74,5 @@ filegroup(
7774
name = "all-srcs",
7875
srcs = [":package-srcs"],
7976
tags = ["automanaged"],
77+
visibility = ["//visibility:public"],
8078
)

test/e2e/auth/service_accounts.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import (
3232
"k8s.io/apimachinery/pkg/util/wait"
3333
"k8s.io/kubernetes/plugin/pkg/admission/serviceaccount"
3434
"k8s.io/kubernetes/test/e2e/framework"
35+
e2ekubectl "k8s.io/kubernetes/test/e2e/framework/kubectl"
3536
e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
3637
imageutils "k8s.io/kubernetes/test/utils/image"
3738

@@ -224,11 +225,12 @@ var _ = SIGDescribe("ServiceAccounts", func() {
224225
framework.ExpectNoError(err)
225226
framework.ExpectNoError(e2epod.WaitForPodRunningInNamespace(f.ClientSet, pod))
226227

227-
mountedToken, err := f.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountTokenKey))
228+
tk := e2ekubectl.NewTestKubeconfig(framework.TestContext.CertDir, framework.TestContext.Host, framework.TestContext.KubeConfig, framework.TestContext.KubeContext, framework.TestContext.KubectlPath, f.Namespace.Name)
229+
mountedToken, err := tk.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountTokenKey))
228230
framework.ExpectNoError(err)
229-
mountedCA, err := f.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountRootCAKey))
231+
mountedCA, err := tk.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountRootCAKey))
230232
framework.ExpectNoError(err)
231-
mountedNamespace, err := f.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountNamespaceKey))
233+
mountedNamespace, err := tk.ReadFileViaContainer(pod.Name, pod.Spec.Containers[0].Name, path.Join(serviceaccount.DefaultAPITokenMountPath, v1.ServiceAccountNamespaceKey))
232234
framework.ExpectNoError(err)
233235

234236
// CA and namespace should be identical

0 commit comments

Comments
 (0)