mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 04:27:54 +00:00
test ensureInternalLoadBalancer and ensureInternalLoadBalancerDeleted
This commit is contained in:
parent
f625b4a2d9
commit
ebd54ea5e3
@ -0,0 +1,159 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2017 The Kubernetes Authors.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package gce
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
|
compute "google.golang.org/api/compute/v1"
|
||||||
|
"k8s.io/api/core/v1"
|
||||||
|
v1_service "k8s.io/kubernetes/pkg/api/v1/service"
|
||||||
|
"k8s.io/kubernetes/pkg/cloudprovider"
|
||||||
|
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud"
|
||||||
|
)
|
||||||
|
|
||||||
|
func createInternalLoadBalancer(gce *GCECloud, existingFwdRule *compute.ForwardingRule, nodeNames []string, clusterName, clusterID, zoneName string) (*v1.LoadBalancerStatus, error) {
|
||||||
|
nodes, err := createAndInsertNodes(gce, nodeNames, zoneName)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return gce.ensureInternalLoadBalancer(
|
||||||
|
clusterName,
|
||||||
|
clusterID,
|
||||||
|
fakeApiService,
|
||||||
|
existingFwdRule,
|
||||||
|
nodes,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnsureInternalLoadBalancer(t *testing.T) {
|
||||||
|
projectID := "test-project"
|
||||||
|
region := "us-central1"
|
||||||
|
zoneName := "us-central1-b"
|
||||||
|
clusterName := "Test Cluster"
|
||||||
|
clusterID := "test-cluster-id"
|
||||||
|
nodeName:
|
||||||
|
|
||||||
|
gce, err := fakeGCECloud(projectID, region, zoneName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
status, err := createInternalLoadBalancer(gce, nil, []string{nodeName}, clusterName, clusterID, zoneName)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, status.Ingress)
|
||||||
|
|
||||||
|
lbName := cloudprovider.GetLoadBalancerName(fakeApiService)
|
||||||
|
|
||||||
|
// Check that Instance Group is created
|
||||||
|
igName := makeInstanceGroupName(clusterID)
|
||||||
|
ig, err := gce.GetInstanceGroup(igName, zoneName)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.Equal(t, igName, ig.Name)
|
||||||
|
|
||||||
|
// Check that Firewalls are created for the LoadBalancer and the HealthCheck
|
||||||
|
fwNames := []string{
|
||||||
|
lbName,
|
||||||
|
makeHealthCheckFirewallName(lbName, clusterID, true),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fwName := range fwNames {
|
||||||
|
firewall, err := gce.GetFirewall(fwName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, []string{nodeName}, firewall.TargetTags)
|
||||||
|
assert.NotEmpty(t, firewall.SourceRanges)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that HealthCheck is created
|
||||||
|
sharedHealthCheck := !v1_service.RequestsOnlyLocalTraffic(fakeApiService)
|
||||||
|
hcName := makeHealthCheckName(lbName, clusterID, sharedHealthCheck)
|
||||||
|
healthcheck, err := gce.GetHealthCheck(hcName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, hcName, healthcheck.Name)
|
||||||
|
|
||||||
|
// Check that BackendService exists
|
||||||
|
sharedBackend := shareBackendService(fakeApiService)
|
||||||
|
backendServiceName := makeBackendServiceName(lbName, clusterID, sharedBackend, cloud.SchemeInternal, "TCP", fakeApiService.Spec.SessionAffinity)
|
||||||
|
backendServiceLink := gce.getBackendServiceLink(backendServiceName)
|
||||||
|
|
||||||
|
bs, err := gce.GetRegionBackendService(backendServiceName, gce.region)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, "TCP", bs.Protocol)
|
||||||
|
assert.Equal(
|
||||||
|
t,
|
||||||
|
[]string{healthcheck.SelfLink},
|
||||||
|
bs.HealthChecks,
|
||||||
|
)
|
||||||
|
|
||||||
|
// Check that ForwardingRule is created
|
||||||
|
fwdRule, err := gce.GetRegionForwardingRule(lbName, region)
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Equal(t, lbName, fwdRule.Name)
|
||||||
|
assert.Equal(t, "TCP", fwdRule.IPProtocol)
|
||||||
|
assert.Equal(t, backendServiceLink, fwdRule.BackendService)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestEnsureInternalLoadBalancerDeleted(t *testing.T) {
|
||||||
|
projectID := "test-project"
|
||||||
|
region := "us-central1"
|
||||||
|
zoneName := "us-central1-b"
|
||||||
|
clusterName := "Test Cluster Name"
|
||||||
|
clusterID := "test-cluster-id"
|
||||||
|
|
||||||
|
gce, err := fakeGCECloud(projectID, region, zoneName)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
_, err = createInternalLoadBalancer(gce, nil, []string{"test-node-1"}, clusterName, clusterID, zoneName)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
err = gce.ensureInternalLoadBalancerDeleted(clusterName, clusterID, fakeApiService)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
lbName := cloudprovider.GetLoadBalancerName(fakeApiService)
|
||||||
|
sharedHealthCheck := !v1_service.RequestsOnlyLocalTraffic(fakeApiService)
|
||||||
|
hcName := makeHealthCheckName(lbName, clusterID, sharedHealthCheck)
|
||||||
|
|
||||||
|
// Check that Firewalls are deleted for the LoadBalancer and the HealthCheck
|
||||||
|
fwNames := []string{
|
||||||
|
MakeFirewallName(lbName),
|
||||||
|
MakeHealthCheckFirewallName(clusterID, hcName, true),
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, fwName := range fwNames {
|
||||||
|
firewall, err := gce.GetFirewall(fwName)
|
||||||
|
require.Error(t, err)
|
||||||
|
assert.Nil(t, firewall)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check that Instance Group is deleted
|
||||||
|
igName := makeInstanceGroupName(clusterID)
|
||||||
|
ig, err := gce.GetInstanceGroup(igName, zoneName)
|
||||||
|
assert.Error(t, err)
|
||||||
|
assert.Nil(t, ig)
|
||||||
|
|
||||||
|
// Check that HealthCheck is deleted
|
||||||
|
healthcheck, err := gce.GetHealthCheck(hcName)
|
||||||
|
require.Error(t, err)
|
||||||
|
assert.Nil(t, healthcheck)
|
||||||
|
|
||||||
|
// Check forwarding rule is deleted
|
||||||
|
fwdRule, err := gce.GetRegionForwardingRule(lbName, region)
|
||||||
|
require.Error(t, err)
|
||||||
|
assert.Nil(t, fwdRule)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user