add a gke-only e2e test for kubectl in a Pod

This commit is contained in:
ymqytw 2016-09-30 11:03:14 -07:00
parent e6b2517feb
commit 89cd3f9b84
3 changed files with 52 additions and 3 deletions

View File

@ -90,6 +90,7 @@ const (
kubeCtlManifestPath = "test/e2e/testing-manifests/kubectl"
redisControllerFilename = "redis-master-controller.json"
redisServiceFilename = "redis-master-service.json"
kubectlInPodFilename = "kubectl-in-pod.json"
)
var (
@ -500,9 +501,6 @@ var _ = framework.KubeDescribe("Kubectl client", func() {
Expect(logOutput).ToNot(ContainSubstring("stdin closed"))
return strings.Contains(logOutput, "abcd1234"), nil
})
if err != nil {
os.Exit(1)
}
Expect(err).To(BeNil())
Expect(c.Batch().Jobs(ns).Delete("run-test-3", nil)).To(BeNil())
@ -526,6 +524,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() {
It("should check if v1 is in available api versions [Conformance]", func() {
By("validating api verions")

View File

@ -0,0 +1,26 @@
{
"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"}
}]
}
}

View File

@ -202,6 +202,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 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 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 update the taint on a node,pwittrock,0
Kubectl client Kubectl version should check is all data is printed,janetkuo,0

1 name owner auto-assigned
202 Kubectl client Kubectl run job should create a job from an image when restart is OnFailure soltysh 0
203 Kubectl client Kubectl run pod should create a pod from an image when restart is Never janetkuo 0
204 Kubectl client Kubectl run rc should create an rc from an image janetkuo 0
205 Kubectl client Kubectl should be able to talk to api server kubectl running in a pod could talk to api server ymqytw 0
206 Kubectl client Kubectl taint should remove all the taints with the same key off a node erictune 1
207 Kubectl client Kubectl taint should update the taint on a node pwittrock 0
208 Kubectl client Kubectl version should check is all data is printed janetkuo 0