Commit ee029d9f authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #33850 from ymqytw/add_e2e_test_for_kubectl_in_pod

Automatic merge from submit-queue add e2e test for kubectl in a Pod Add a e2e test to make sure kubectl can talk to the api server when it is mounted in a pod. Fixes: #33138
parents b6005337 89cd3f9b
...@@ -90,6 +90,7 @@ const ( ...@@ -90,6 +90,7 @@ const (
kubeCtlManifestPath = "test/e2e/testing-manifests/kubectl" kubeCtlManifestPath = "test/e2e/testing-manifests/kubectl"
redisControllerFilename = "redis-master-controller.json" redisControllerFilename = "redis-master-controller.json"
redisServiceFilename = "redis-master-service.json" redisServiceFilename = "redis-master-service.json"
kubectlInPodFilename = "kubectl-in-pod.json"
) )
var ( var (
...@@ -537,9 +538,6 @@ var _ = framework.KubeDescribe("Kubectl client", func() { ...@@ -537,9 +538,6 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
Expect(logOutput).ToNot(ContainSubstring("stdin closed")) Expect(logOutput).ToNot(ContainSubstring("stdin closed"))
return strings.Contains(logOutput, "abcd1234"), nil return strings.Contains(logOutput, "abcd1234"), nil
}) })
if err != nil {
os.Exit(1)
}
Expect(err).To(BeNil()) Expect(err).To(BeNil())
Expect(c.Batch().Jobs(ns).Delete("run-test-3", nil)).To(BeNil()) Expect(c.Batch().Jobs(ns).Delete("run-test-3", nil)).To(BeNil())
...@@ -563,6 +561,30 @@ var _ = framework.KubeDescribe("Kubectl client", func() { ...@@ -563,6 +561,30 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
}) })
}) })
framework.KubeDescribe("Kubectl should be able to talk to api server", func() {
It("kubectl running in a pod could talk to api server [Conformance]", func() {
framework.SkipUnlessProviderIs("gke")
nsFlag := fmt.Sprintf("--namespace=%v", ns)
podJson := readTestFileOrDie(kubectlInPodFilename)
By("validating api verions")
framework.RunKubectlOrDieInput(string(podJson), "create", "-f", "-", nsFlag)
err := wait.PollImmediate(time.Second, time.Minute, func() (bool, error) {
output := framework.RunKubectlOrDie("get", "pods/kubectl-in-pod", nsFlag)
if strings.Contains(output, "Running") {
return true, nil
} else {
return false, nil
}
})
Expect(err).To(BeNil())
output := framework.RunKubectlOrDie("exec", "kubectl-in-pod", nsFlag, "--", "kubectl", "version")
if !strings.Contains(output, "Server Version") {
framework.Failf("kubectl in the pod fails to talk to api server")
}
framework.RunKubectlOrDie("delete", "pods", "kubectl-in-pod", nsFlag)
})
})
framework.KubeDescribe("Kubectl api-versions", func() { framework.KubeDescribe("Kubectl api-versions", func() {
It("should check if v1 is in available api versions [Conformance]", func() { It("should check if v1 is in available api versions [Conformance]", func() {
By("validating api verions") By("validating api verions")
......
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "kubectl-in-pod"
},
"spec": {
"containers": [
{
"name": "busybox",
"image": "busybox",
"stdin": true,
"stdinOnce": true,
"tty": true,
"volumeMounts": [{
"mountPath": "/usr/bin/kubectl",
"name": "kubectl"
}]
}
],
"volumes": [{
"name":"kubectl",
"hostPath":{"path": "/usr/bin/kubectl"}
}]
}
}
...@@ -208,6 +208,7 @@ Kubectl client Kubectl run deployment should create a deployment from an image,j ...@@ -208,6 +208,7 @@ Kubectl client Kubectl run deployment should create a deployment from an image,j
Kubectl client Kubectl run job should create a job from an image when restart is OnFailure,soltysh,0 Kubectl client Kubectl run job should create a job from an image when restart is OnFailure,soltysh,0
Kubectl client Kubectl run pod should create a pod from an image when restart is Never,janetkuo,0 Kubectl client Kubectl run pod should create a pod from an image when restart is Never,janetkuo,0
Kubectl client Kubectl run rc should create an rc from an image,janetkuo,0 Kubectl client Kubectl run rc should create an rc from an image,janetkuo,0
Kubectl client Kubectl should be able to talk to api server kubectl running in a pod could talk to api server,ymqytw,0
Kubectl client Kubectl taint should remove all the taints with the same key off a node,erictune,1 Kubectl client Kubectl taint should remove all the taints with the same key off a node,erictune,1
Kubectl client Kubectl taint should update the taint on a node,pwittrock,0 Kubectl client Kubectl taint should update the taint on a node,pwittrock,0
Kubectl client Kubectl version should check is all data is printed,janetkuo,0 Kubectl client Kubectl version should check is all data is printed,janetkuo,0
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment