Skip to content

Commit b7645e8

Browse files
johngmyersTimothy-Dougherty
authored andcommitted
e2e: Use Helm chart from the commit (kubernetes-sigs#2435)
* e2e: Use Helm chart from the commit * Address review comments
1 parent d8c0c4b commit b7645e8

File tree

8 files changed

+34
-23
lines changed

8 files changed

+34
-23
lines changed

scripts/ci_e2e_test.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ CLUSTER_INSTANCE_TYPE="m5.xlarge"
3636
CLUSTER_NODE_COUNT="4"
3737
CLUSTER_KUBECONFIG=${CLUSTER_KUBECONFIG:-"/tmp/lb-controller-e2e/clusters/${CLUSTER_NAME}.kubeconfig"}
3838

39+
HELM_DIR="$(cd $(dirname "${BASH_SOURCE[0]}")/../helm ; pwd)"
40+
3941
#######################################
4042
# Build and push ECR image for AWS Load Balancer Controller
4143
#
@@ -227,6 +229,7 @@ test_controller_image() {
227229
--cluster-name=${CLUSTER_NAME} \
228230
--aws-region=${AWS_REGION} \
229231
--aws-vpc-id=${cluster_vpc_id} \
232+
--helm-chart=${HELM_DIR}/aws-load-balancer-controller \
230233
--controller-image=${CONTROLLER_IMAGE_NAME} \
231234
--s3-bucket-name=${S3_BUCKET} \
232235
--certificate-arns=${CERTIFICATE_ARNS}

test/e2e/ingress/multi_path_backend_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@ package ingress
33
import (
44
"context"
55
"fmt"
6+
"time"
7+
68
. "github.com/onsi/ginkgo"
79
. "github.com/onsi/gomega"
810
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
911
elbv2model "sigs.k8s.io/aws-load-balancer-controller/pkg/model/elbv2"
1012
"sigs.k8s.io/aws-load-balancer-controller/test/framework"
1113
"sigs.k8s.io/aws-load-balancer-controller/test/framework/http"
1214
"sigs.k8s.io/aws-load-balancer-controller/test/framework/utils"
13-
"time"
1415
)
1516

1617
var _ = Describe("test ingresses with multiple path and backends", func() {
@@ -23,7 +24,8 @@ var _ = Describe("test ingresses with multiple path and backends", func() {
2324

2425
if tf.Options.ControllerImage != "" {
2526
By(fmt.Sprintf("ensure cluster installed with controller: %s", tf.Options.ControllerImage), func() {
26-
tf.CTRLInstallationManager.UpgradeController(tf.Options.ControllerImage)
27+
err := tf.CTRLInstallationManager.UpgradeController(tf.Options.ControllerImage)
28+
Expect(err).NotTo(HaveOccurred())
2729
time.Sleep(60 * time.Second)
2830
})
2931
}

test/e2e/ingress/vanilla_ingress_test.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@ package ingress
33
import (
44
"context"
55
"fmt"
6+
"net/http"
7+
"time"
8+
69
awssdk "github.com/aws/aws-sdk-go/aws"
710
"github.com/gavv/httpexpect/v2"
811
. "github.com/onsi/ginkgo"
@@ -12,13 +15,11 @@ import (
1215
apierrs "k8s.io/apimachinery/pkg/api/errors"
1316
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1417
"k8s.io/apimachinery/pkg/util/intstr"
15-
"net/http"
1618
"sigs.k8s.io/aws-load-balancer-controller/pkg/k8s"
1719
"sigs.k8s.io/aws-load-balancer-controller/test/framework"
1820
"sigs.k8s.io/aws-load-balancer-controller/test/framework/fixture"
1921
"sigs.k8s.io/aws-load-balancer-controller/test/framework/manifest"
2022
"sigs.k8s.io/aws-load-balancer-controller/test/framework/utils"
21-
"time"
2223
)
2324

2425
var _ = Describe("vanilla ingress tests", func() {
@@ -32,7 +33,8 @@ var _ = Describe("vanilla ingress tests", func() {
3233
ctx = context.Background()
3334
if tf.Options.ControllerImage != "" {
3435
By(fmt.Sprintf("ensure cluster installed with controller: %s", tf.Options.ControllerImage), func() {
35-
tf.CTRLInstallationManager.UpgradeController(tf.Options.ControllerImage)
36+
err := tf.CTRLInstallationManager.UpgradeController(tf.Options.ControllerImage)
37+
Expect(err).NotTo(HaveOccurred())
3638
time.Sleep(60 * time.Second)
3739
})
3840
}

test/framework/controller/constants.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package controller
33
import "time"
44

55
const (
6-
EKSHelmChartsRepo = "https://aws.github.io/eks-charts"
76
AWSLoadBalancerControllerHelmChart = "aws-load-balancer-controller"
87
AWSLoadBalancerControllerHelmRelease = "aws-load-balancer-controller"
98
AWSLoadBalancerControllerInstallationTimeout = 2 * time.Minute

test/framework/controller/installation_manager.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package controller
22

33
import (
4+
"strings"
5+
46
"github.com/go-logr/logr"
57
"github.com/pkg/errors"
68
"k8s.io/apimachinery/pkg/util/uuid"
79
"sigs.k8s.io/aws-load-balancer-controller/test/framework/helm"
8-
"strings"
910
)
1011

1112
// InstallationManager is responsible for manage controller installation in cluster.
@@ -15,12 +16,13 @@ type InstallationManager interface {
1516
}
1617

1718
// NewDefaultInstallationManager constructs new defaultInstallationManager.
18-
func NewDefaultInstallationManager(helmReleaseManager helm.ReleaseManager, clusterName string, region string, vpcID string, logger logr.Logger) *defaultInstallationManager {
19+
func NewDefaultInstallationManager(helmReleaseManager helm.ReleaseManager, clusterName string, region string, vpcID string, helmChart string, logger logr.Logger) *defaultInstallationManager {
1920
return &defaultInstallationManager{
2021
helmReleaseManager: helmReleaseManager,
2122
clusterName: clusterName,
2223
region: region,
2324
vpcID: vpcID,
25+
helmChart: helmChart,
2426

2527
namespace: "kube-system",
2628
controllerSAName: "aws-load-balancer-controller",
@@ -36,6 +38,7 @@ type defaultInstallationManager struct {
3638
clusterName string
3739
region string
3840
vpcID string
41+
helmChart string
3942

4043
namespace string
4144
controllerSAName string
@@ -44,7 +47,7 @@ type defaultInstallationManager struct {
4447

4548
func (m *defaultInstallationManager) ResetController() error {
4649
vals := m.computeDefaultHelmVals()
47-
_, err := m.helmReleaseManager.InstallOrUpgradeRelease(EKSHelmChartsRepo, AWSLoadBalancerControllerHelmChart,
50+
_, err := m.helmReleaseManager.InstallOrUpgradeRelease(m.helmChart,
4851
m.namespace, AWSLoadBalancerControllerHelmRelease, vals,
4952
helm.WithTimeout(AWSLoadBalancerControllerInstallationTimeout))
5053
return err
@@ -63,7 +66,7 @@ func (m *defaultInstallationManager) UpgradeController(controllerImage string) e
6366
vals["podLabels"] = map[string]string{
6467
"revision": string(uuid.NewUUID()),
6568
}
66-
_, err = m.helmReleaseManager.InstallOrUpgradeRelease(EKSHelmChartsRepo, AWSLoadBalancerControllerHelmChart,
69+
_, err = m.helmReleaseManager.InstallOrUpgradeRelease(m.helmChart,
6770
m.namespace, AWSLoadBalancerControllerHelmRelease, vals,
6871
helm.WithTimeout(AWSLoadBalancerControllerInstallationTimeout))
6972
return err

test/framework/framework.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,6 @@ func InitFramework() (*Framework, error) {
8989

9090
func buildControllerInstallationManager(options Options, logger logr.Logger) controller.InstallationManager {
9191
helmReleaseManager := helm.NewDefaultReleaseManager(options.KubeConfig, logger)
92-
ctrlInstallationManager := controller.NewDefaultInstallationManager(helmReleaseManager, options.ClusterName, options.AWSRegion, options.AWSVPCID, logger)
92+
ctrlInstallationManager := controller.NewDefaultInstallationManager(helmReleaseManager, options.ClusterName, options.AWSRegion, options.AWSVPCID, options.HelmChart, logger)
9393
return ctrlInstallationManager
9494
}

test/framework/helm/release_manager.go

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ package helm
22

33
import (
44
"fmt"
5+
"time"
6+
57
"github.com/go-logr/logr"
68
"helm.sh/helm/v3/pkg/action"
79
"helm.sh/helm/v3/pkg/chart/loader"
810
"helm.sh/helm/v3/pkg/cli"
911
"helm.sh/helm/v3/pkg/release"
1012
"helm.sh/helm/v3/pkg/storage/driver"
1113
"k8s.io/cli-runtime/pkg/genericclioptions"
12-
"time"
1314
)
1415

1516
// ActionOptions contains general helm action options
@@ -38,15 +39,15 @@ func WithTimeout(timeout time.Duration) ActionOption {
3839
// ReleaseManager is responsible for manage helm releases
3940
type ReleaseManager interface {
4041
// InstallOrUpgradeRelease install or upgrade helm release
41-
InstallOrUpgradeRelease(chartRepo string, chartName string,
42+
InstallOrUpgradeRelease(chartName string,
4243
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error)
4344

4445
// InstallRelease install helm release
45-
InstallRelease(chartRepo string, chartName string,
46+
InstallRelease(chartName string,
4647
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error)
4748

4849
// UpgradeRelease upgrade helm release
49-
UpgradeRelease(chartRepo string, chartName string,
50+
UpgradeRelease(chartName string,
5051
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error)
5152
}
5253

@@ -66,24 +67,23 @@ type defaultReleaseManager struct {
6667
logger logr.Logger
6768
}
6869

69-
func (m *defaultReleaseManager) InstallOrUpgradeRelease(chartRepo string, chartName string,
70+
func (m *defaultReleaseManager) InstallOrUpgradeRelease(chartName string,
7071
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error) {
7172
actionCFG := m.obtainActionConfig(namespace)
7273
historyAction := action.NewHistory(actionCFG)
7374
historyAction.Max = 1
7475
if _, err := historyAction.Run(releaseName); err == driver.ErrReleaseNotFound {
75-
return m.InstallRelease(chartRepo, chartName, namespace, releaseName, vals, opts...)
76+
return m.InstallRelease(chartName, namespace, releaseName, vals, opts...)
7677
} else {
77-
return m.UpgradeRelease(chartRepo, chartName, namespace, releaseName, vals, opts...)
78+
return m.UpgradeRelease(chartName, namespace, releaseName, vals, opts...)
7879
}
7980
}
8081

81-
func (m *defaultReleaseManager) InstallRelease(chartRepo string, chartName string,
82+
func (m *defaultReleaseManager) InstallRelease(chartName string,
8283
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error) {
8384

8485
actionCFG := m.obtainActionConfig(namespace)
8586
installAction := action.NewInstall(actionCFG)
86-
installAction.ChartPathOptions.RepoURL = chartRepo
8787
installAction.Namespace = namespace
8888
installAction.SkipCRDs = false
8989
installAction.ReleaseName = releaseName
@@ -107,12 +107,11 @@ func (m *defaultReleaseManager) InstallRelease(chartRepo string, chartName strin
107107
return installAction.Run(chartRequested, vals)
108108
}
109109

110-
func (m *defaultReleaseManager) UpgradeRelease(chartRepo string, chartName string,
110+
func (m *defaultReleaseManager) UpgradeRelease(chartName string,
111111
namespace string, releaseName string, vals map[string]interface{}, opts ...ActionOption) (*release.Release, error) {
112112

113113
actionCFG := m.obtainActionConfig(namespace)
114114
upgradeAction := action.NewUpgrade(actionCFG)
115-
upgradeAction.ChartPathOptions.RepoURL = chartRepo
116115
upgradeAction.Namespace = namespace
117116
upgradeAction.ResetValues = true
118117

test/framework/options.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"flag"
55

66
"github.com/pkg/errors"
7+
"sigs.k8s.io/aws-load-balancer-controller/test/framework/controller"
78
)
89

910
var globalOptions Options
@@ -12,11 +13,12 @@ func init() {
1213
globalOptions.BindFlags()
1314
}
1415

15-
// configuration options
16+
// Options are the configuration options.
1617
type Options struct {
1718
ClusterName string
1819
AWSRegion string
1920
AWSVPCID string
21+
HelmChart string
2022
KubeConfig string
2123

2224
// AWS Load Balancer Controller image. leave empty to use default one from helm chart.
@@ -31,6 +33,7 @@ func (options *Options) BindFlags() {
3133
flag.StringVar(&options.ClusterName, "cluster-name", "", `Kubernetes cluster name (required)`)
3234
flag.StringVar(&options.AWSRegion, "aws-region", "", `AWS Region for the kubernetes cluster`)
3335
flag.StringVar(&options.AWSVPCID, "aws-vpc-id", "", `ID of VPC to create load balancers in`)
36+
flag.StringVar(&options.HelmChart, "helm-chart", controller.AWSLoadBalancerControllerHelmChart, `Helm chart`)
3437

3538
flag.StringVar(&options.ControllerImage, "controller-image", "", `AWS Load Balancer Controller image`)
3639

0 commit comments

Comments
 (0)