
This commit creates a secret which defines a haproxy.cfg and mounts that secret to a newly created loadbalancer pod running with haproxy image. A nodeport service is then created for the loadbalancer pod. The loadbalancer is created to load balance the nodes defined as master. Co-Authored-By: Francis Yi <francisyi19@gmail.com> Co-Authored-By: Kostyantyn Kalynovskyi <kkalynovskyi@mirantis.com> Change-Id: I91eb23892254ed2e7a68e13fe2b10489415d8589
95 lines
2.1 KiB
Go
95 lines
2.1 KiB
Go
package services_test
|
|
|
|
import (
|
|
"context"
|
|
|
|
airshipv1 "sipcluster/pkg/api/v1"
|
|
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
corev1 "k8s.io/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/types"
|
|
|
|
"sipcluster/pkg/services"
|
|
"sipcluster/pkg/vbmh"
|
|
"sipcluster/testutil"
|
|
)
|
|
|
|
var _ = Describe("Service Set", func() {
|
|
Context("When new SIP cluster is created", func() {
|
|
It("Deploys services", func() {
|
|
By("Getting machine IPs and creating secrets, pods, and nodeport service")
|
|
|
|
bmh1, _ := testutil.CreateBMH(1, "default", "control-plane", 1)
|
|
bmh2, _ := testutil.CreateBMH(2, "default", "control-plane", 2)
|
|
m1 := &vbmh.Machine{
|
|
BMH: *bmh1,
|
|
Data: &vbmh.MachineData{
|
|
IPOnInterface: map[string]string{
|
|
"eno3": "192.168.0.1",
|
|
},
|
|
},
|
|
}
|
|
m2 := &vbmh.Machine{
|
|
BMH: *bmh2,
|
|
Data: &vbmh.MachineData{
|
|
IPOnInterface: map[string]string{
|
|
"eno3": "192.168.0.2",
|
|
},
|
|
},
|
|
}
|
|
|
|
sip := testutil.CreateSIPCluster("default", "default", 1, 1)
|
|
machineList := &vbmh.MachineList{
|
|
Machines: map[string]*vbmh.Machine{
|
|
bmh1.GetName(): m1,
|
|
bmh2.GetName(): m2,
|
|
},
|
|
}
|
|
|
|
set := services.NewServiceSet(logger, *sip, machineList, k8sClient)
|
|
|
|
serviceList := set.ServiceList()
|
|
Expect(serviceList).To(HaveLen(1))
|
|
Eventually(func() error {
|
|
return testDeployment(serviceList[0], sip)
|
|
}, 5, 1).Should(Succeed())
|
|
})
|
|
})
|
|
})
|
|
|
|
func testDeployment(sl services.InfraService, sip *airshipv1.SIPCluster) error {
|
|
err := sl.Deploy()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
pod := &corev1.Pod{}
|
|
err = k8sClient.Get(context.Background(), types.NamespacedName{
|
|
Namespace: "default",
|
|
Name: sip.GetName() + "-load-balancer",
|
|
}, pod)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
secret := &corev1.Secret{}
|
|
err = k8sClient.Get(context.Background(), types.NamespacedName{
|
|
Namespace: "default",
|
|
Name: sip.GetName() + "-load-balancer",
|
|
}, secret)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
service := &corev1.Service{}
|
|
err = k8sClient.Get(context.Background(), types.NamespacedName{
|
|
Namespace: "default",
|
|
Name: sip.GetName() + "-load-balancer-service",
|
|
}, service)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
return nil
|
|
}
|