mirror of https://github.com/k3s-io/k3s
Merge pull request #11741 from jsafrane/devel/service-test
Use a service between e2e volume tests clients and servers.pull/6/head
commit
de6d870569
|
@ -20,7 +20,9 @@ function start()
|
||||||
# prepare /etc/exports
|
# prepare /etc/exports
|
||||||
for i in "$@"; do
|
for i in "$@"; do
|
||||||
# fsid=0: needed for NFSv4
|
# fsid=0: needed for NFSv4
|
||||||
echo "$i *(rw,fsid=0,no_root_squash)" >> /etc/exports
|
# no_root_squash: root can read/write
|
||||||
|
# insecure: allow access from ports > 1024
|
||||||
|
echo "$i *(rw,fsid=0,no_root_squash,insecure)" >> /etc/exports
|
||||||
echo "Serving $i"
|
echo "Serving $i"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
|
@ -63,8 +63,7 @@ var _ = Describe("[Skipped] persistentVolumes", func() {
|
||||||
volumeTestCleanup(c, config)
|
volumeTestCleanup(c, config)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
pod := startVolumeServer(c, config)
|
serverIP := startVolumeServer(c, config)
|
||||||
serverIP := pod.Status.PodIP
|
|
||||||
Logf("NFS server IP address: %v", serverIP)
|
Logf("NFS server IP address: %v", serverIP)
|
||||||
|
|
||||||
pv := makePersistentVolume(serverIP)
|
pv := makePersistentVolume(serverIP)
|
||||||
|
|
|
@ -35,6 +35,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/client"
|
||||||
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/util"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
. "github.com/onsi/ginkgo"
|
. "github.com/onsi/ginkgo"
|
||||||
|
@ -55,13 +56,15 @@ type VolumeTestConfig struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Starts a container specified by config.serverImage and exports all
|
// Starts a container specified by config.serverImage and exports all
|
||||||
// config.serverPorts from it. The returned pod should be used to get the server
|
// config.serverPorts from it via a service. The function returns IP
|
||||||
// IP address and create appropriate VolumeSource.
|
// address of the service.
|
||||||
func startVolumeServer(client *client.Client, config VolumeTestConfig) *api.Pod {
|
func startVolumeServer(client *client.Client, config VolumeTestConfig) string {
|
||||||
podClient := client.Pods(config.namespace)
|
podClient := client.Pods(config.namespace)
|
||||||
|
serviceClient := client.Services(config.namespace)
|
||||||
|
|
||||||
portCount := len(config.serverPorts)
|
portCount := len(config.serverPorts)
|
||||||
serverPodPorts := make([]api.ContainerPort, portCount)
|
serverPodPorts := make([]api.ContainerPort, portCount)
|
||||||
|
servicePorts := make([]api.ServicePort, portCount)
|
||||||
|
|
||||||
for i := 0; i < portCount; i++ {
|
for i := 0; i < portCount; i++ {
|
||||||
portName := fmt.Sprintf("%s-%d", config.prefix, i)
|
portName := fmt.Sprintf("%s-%d", config.prefix, i)
|
||||||
|
@ -71,6 +74,12 @@ func startVolumeServer(client *client.Client, config VolumeTestConfig) *api.Pod
|
||||||
ContainerPort: config.serverPorts[i],
|
ContainerPort: config.serverPorts[i],
|
||||||
Protocol: api.ProtocolTCP,
|
Protocol: api.ProtocolTCP,
|
||||||
}
|
}
|
||||||
|
servicePorts[i] = api.ServicePort{
|
||||||
|
Name: portName,
|
||||||
|
Protocol: "TCP",
|
||||||
|
Port: config.serverPorts[i],
|
||||||
|
TargetPort: util.NewIntOrStringFromInt(config.serverPorts[i]),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
By(fmt.Sprint("creating ", config.prefix, " server pod"))
|
By(fmt.Sprint("creating ", config.prefix, " server pod"))
|
||||||
|
@ -106,13 +115,26 @@ func startVolumeServer(client *client.Client, config VolumeTestConfig) *api.Pod
|
||||||
|
|
||||||
expectNoError(waitForPodRunningInNamespace(client, serverPod.Name, config.namespace))
|
expectNoError(waitForPodRunningInNamespace(client, serverPod.Name, config.namespace))
|
||||||
|
|
||||||
By("locating the server pod")
|
By(fmt.Sprint("creating ", config.prefix, " service"))
|
||||||
pod, err := podClient.Get(serverPod.Name)
|
service := &api.Service{
|
||||||
expectNoError(err, "Cannot locate the server pod %v: %v", serverPod.Name, err)
|
ObjectMeta: api.ObjectMeta{
|
||||||
|
Name: config.prefix + "-server",
|
||||||
|
},
|
||||||
|
Spec: api.ServiceSpec{
|
||||||
|
Selector: map[string]string{
|
||||||
|
"role": config.prefix + "-server",
|
||||||
|
},
|
||||||
|
Ports: servicePorts,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
createdService, err := serviceClient.Create(service)
|
||||||
|
expectNoError(err, "Failed to create %s service: %v", service.Name, err)
|
||||||
|
|
||||||
By("sleeping a bit to give the server time to start")
|
By("sleeping a bit to give the server time to start")
|
||||||
time.Sleep(20 * time.Second)
|
time.Sleep(20 * time.Second)
|
||||||
return pod
|
|
||||||
|
ip := createdService.Spec.ClusterIP
|
||||||
|
return ip
|
||||||
}
|
}
|
||||||
|
|
||||||
// Clean both server and client pods.
|
// Clean both server and client pods.
|
||||||
|
@ -122,9 +144,11 @@ func volumeTestCleanup(client *client.Client, config VolumeTestConfig) {
|
||||||
defer GinkgoRecover()
|
defer GinkgoRecover()
|
||||||
|
|
||||||
podClient := client.Pods(config.namespace)
|
podClient := client.Pods(config.namespace)
|
||||||
|
serviceClient := client.Services(config.namespace)
|
||||||
|
|
||||||
// ignore all errors, the pods may not be even created
|
// ignore all errors, the pods may not be even created
|
||||||
podClient.Delete(config.prefix+"-client", nil)
|
podClient.Delete(config.prefix+"-client", nil)
|
||||||
|
serviceClient.Delete(config.prefix + "-server")
|
||||||
podClient.Delete(config.prefix+"-server", nil)
|
podClient.Delete(config.prefix+"-server", nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -237,8 +261,7 @@ var _ = Describe("Volumes", func() {
|
||||||
volumeTestCleanup(c, config)
|
volumeTestCleanup(c, config)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
pod := startVolumeServer(c, config)
|
serverIP := startVolumeServer(c, config)
|
||||||
serverIP := pod.Status.PodIP
|
|
||||||
Logf("NFS server IP address: %v", serverIP)
|
Logf("NFS server IP address: %v", serverIP)
|
||||||
|
|
||||||
volume := api.VolumeSource{
|
volume := api.VolumeSource{
|
||||||
|
@ -274,49 +297,9 @@ var _ = Describe("Volumes", func() {
|
||||||
volumeTestCleanup(c, config)
|
volumeTestCleanup(c, config)
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
pod := startVolumeServer(c, config)
|
serverIP := startVolumeServer(c, config)
|
||||||
serverIP := pod.Status.PodIP
|
|
||||||
Logf("Gluster server IP address: %v", serverIP)
|
Logf("Gluster server IP address: %v", serverIP)
|
||||||
|
|
||||||
// create Endpoints for the server
|
|
||||||
endpoints := api.Endpoints{
|
|
||||||
TypeMeta: api.TypeMeta{
|
|
||||||
Kind: "Endpoints",
|
|
||||||
APIVersion: "v1",
|
|
||||||
},
|
|
||||||
ObjectMeta: api.ObjectMeta{
|
|
||||||
Name: config.prefix + "-server",
|
|
||||||
},
|
|
||||||
Subsets: []api.EndpointSubset{
|
|
||||||
{
|
|
||||||
Addresses: []api.EndpointAddress{
|
|
||||||
{
|
|
||||||
IP: serverIP,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
Ports: []api.EndpointPort{
|
|
||||||
{
|
|
||||||
Name: "gluster",
|
|
||||||
Port: 24007,
|
|
||||||
Protocol: api.ProtocolTCP,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
endClient := c.Endpoints(config.namespace)
|
|
||||||
|
|
||||||
defer func() {
|
|
||||||
if clean {
|
|
||||||
endClient.Delete(config.prefix + "-server")
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
|
|
||||||
if _, err := endClient.Create(&endpoints); err != nil {
|
|
||||||
Failf("Failed to create endpoints for Gluster server: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
volume := api.VolumeSource{
|
volume := api.VolumeSource{
|
||||||
Glusterfs: &api.GlusterfsVolumeSource{
|
Glusterfs: &api.GlusterfsVolumeSource{
|
||||||
EndpointsName: config.prefix + "-server",
|
EndpointsName: config.prefix + "-server",
|
||||||
|
|
Loading…
Reference in New Issue