From 1aded88cd359144bd264df954b72840abe094c9a Mon Sep 17 00:00:00 2001 From: Miciah Masters Date: Mon, 17 Oct 2022 10:04:00 -0400 Subject: [PATCH 1/2] Revert "Revert "[AWS] Add LB Type in the infrastructure cluster object via install-config yaml"" This reverts commit 98beea11ef41a39e755de5e3d97b871dcfc6d5a4. --- .../install.openshift.io_installconfigs.yaml | 13 +++++++ .../vsphere/mock/authmanager_generated.go | 25 +++++++------- pkg/asset/manifests/infrastructure_test.go | 10 +++++- pkg/asset/manifests/ingress.go | 13 +++++++ pkg/asset/manifests/ingress_test.go | 34 ++++++++++++++++--- pkg/explain/printer_test.go | 3 ++ pkg/types/aws/platform.go | 19 ++++++++++- 7 files changed, 98 insertions(+), 19 deletions(-) diff --git a/data/data/install.openshift.io_installconfigs.yaml b/data/data/install.openshift.io_installconfigs.yaml index 3c9e8d120d3..1640c0f54dd 100644 --- a/data/data/install.openshift.io_installconfigs.yaml +++ b/data/data/install.openshift.io_installconfigs.yaml @@ -1718,6 +1718,19 @@ spec: the subnets. Leave the hosted zone unset to have the installer create the hosted zone on your behalf. type: string + lbType: + description: 'LBType allows user to set a load balancer type. + When this field is set the default ingresscontroller will get + created using the specified LBType. If this field is not set + then the default ingress controller of LBType Classic will be + created. Valid values are: * "Classic": A Classic Load Balancer + that makes routing decisions at either the transport layer + (TCP/SSL) or the application layer (HTTP/HTTPS). See the following + for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + * "NLB": A Network Load Balancer that makes routing decisions + at the transport layer (TCP/SSL). See the following for additional + details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb' + type: string propagateUserTags: description: PropagateUserTags is a flag that directs in-cluster operators to include the specified user tags in the tags of diff --git a/pkg/asset/installconfig/vsphere/mock/authmanager_generated.go b/pkg/asset/installconfig/vsphere/mock/authmanager_generated.go index 960e89adcae..7730bfbe82a 100644 --- a/pkg/asset/installconfig/vsphere/mock/authmanager_generated.go +++ b/pkg/asset/installconfig/vsphere/mock/authmanager_generated.go @@ -1,40 +1,41 @@ // Code generated by MockGen. DO NOT EDIT. -// Source: pkg/asset/installconfig/vsphere/permissions.go +// Source: ./permissions.go // Package mock is a generated GoMock package. package mock import ( context "context" + reflect "reflect" + gomock "github.com/golang/mock/gomock" types "github.com/vmware/govmomi/vim25/types" - reflect "reflect" ) -// MockAuthManager is a mock of AuthManager interface +// MockAuthManager is a mock of AuthManager interface. type MockAuthManager struct { ctrl *gomock.Controller recorder *MockAuthManagerMockRecorder } -// MockAuthManagerMockRecorder is the mock recorder for MockAuthManager +// MockAuthManagerMockRecorder is the mock recorder for MockAuthManager. type MockAuthManagerMockRecorder struct { mock *MockAuthManager } -// NewMockAuthManager creates a new mock instance +// NewMockAuthManager creates a new mock instance. func NewMockAuthManager(ctrl *gomock.Controller) *MockAuthManager { mock := &MockAuthManager{ctrl: ctrl} mock.recorder = &MockAuthManagerMockRecorder{mock} return mock } -// EXPECT returns an object that allows the caller to indicate expected use +// EXPECT returns an object that allows the caller to indicate expected use. func (m *MockAuthManager) EXPECT() *MockAuthManagerMockRecorder { return m.recorder } -// FetchUserPrivilegeOnEntities mocks base method +// FetchUserPrivilegeOnEntities mocks base method. func (m *MockAuthManager) FetchUserPrivilegeOnEntities(ctx context.Context, entities []types.ManagedObjectReference, userName string) ([]types.UserPrivilegeResult, error) { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "FetchUserPrivilegeOnEntities", ctx, entities, userName) @@ -43,13 +44,13 @@ func (m *MockAuthManager) FetchUserPrivilegeOnEntities(ctx context.Context, enti return ret0, ret1 } -// FetchUserPrivilegeOnEntities indicates an expected call of FetchUserPrivilegeOnEntities +// FetchUserPrivilegeOnEntities indicates an expected call of FetchUserPrivilegeOnEntities. func (mr *MockAuthManagerMockRecorder) FetchUserPrivilegeOnEntities(ctx, entities, userName interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchUserPrivilegeOnEntities", reflect.TypeOf((*MockAuthManager)(nil).FetchUserPrivilegeOnEntities), ctx, entities, userName) } -// Properties mocks base method +// Properties mocks base method. func (m *MockAuthManager) Properties(ctx context.Context, r types.ManagedObjectReference, ps []string, dst interface{}) error { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Properties", ctx, r, ps, dst) @@ -57,13 +58,13 @@ func (m *MockAuthManager) Properties(ctx context.Context, r types.ManagedObjectR return ret0 } -// Properties indicates an expected call of Properties +// Properties indicates an expected call of Properties. func (mr *MockAuthManagerMockRecorder) Properties(ctx, r, ps, dst interface{}) *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Properties", reflect.TypeOf((*MockAuthManager)(nil).Properties), ctx, r, ps, dst) } -// Reference mocks base method +// Reference mocks base method. func (m *MockAuthManager) Reference() types.ManagedObjectReference { m.ctrl.T.Helper() ret := m.ctrl.Call(m, "Reference") @@ -71,7 +72,7 @@ func (m *MockAuthManager) Reference() types.ManagedObjectReference { return ret0 } -// Reference indicates an expected call of Reference +// Reference indicates an expected call of Reference. func (mr *MockAuthManagerMockRecorder) Reference() *gomock.Call { mr.mock.ctrl.T.Helper() return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Reference", reflect.TypeOf((*MockAuthManager)(nil).Reference)) diff --git a/pkg/asset/manifests/infrastructure_test.go b/pkg/asset/manifests/infrastructure_test.go index 540699e70a9..99491ee88c3 100644 --- a/pkg/asset/manifests/infrastructure_test.go +++ b/pkg/asset/manifests/infrastructure_test.go @@ -38,7 +38,8 @@ func TestGenerateInfrastructe(t *testing.T) { infraBuild.forPlatform(configv1.AWSPlatformType), infraBuild.withServiceEndpoint("service", "https://endpoint"), ), - }} + }, + } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { parents := asset.Parents{} @@ -121,6 +122,13 @@ func (b icBuildNamespace) withServiceEndpoint(name, url string) icOption { } } +func (b icBuildNamespace) withLBType(lbType configv1.AWSLBType) icOption { + return func(ic *types.InstallConfig) { + b.forAWS()(ic) + ic.Platform.AWS.LBType = lbType + } +} + type infraOption func(*configv1.Infrastructure) type infraBuildNamespace struct{} diff --git a/pkg/asset/manifests/ingress.go b/pkg/asset/manifests/ingress.go index a2626d59633..5dbb3d71b27 100644 --- a/pkg/asset/manifests/ingress.go +++ b/pkg/asset/manifests/ingress.go @@ -14,6 +14,7 @@ import ( "github.com/openshift/installer/pkg/asset" "github.com/openshift/installer/pkg/asset/installconfig" "github.com/openshift/installer/pkg/types" + "github.com/openshift/installer/pkg/types/aws" ) var ( @@ -115,6 +116,18 @@ func (ing *Ingress) generateClusterConfig(config *types.InstallConfig) ([]byte, DefaultPlacement: defaultPlacement, }, } + + switch config.Platform.Name() { + case aws.Name: + obj.Spec.LoadBalancer = configv1.LoadBalancer{ + Platform: configv1.IngressPlatformSpec{ + AWS: &configv1.AWSIngressSpec{ + Type: config.AWS.LBType, + }, + Type: configv1.AWSPlatformType, + }, + } + } return yaml.Marshal(obj) } diff --git a/pkg/asset/manifests/ingress_test.go b/pkg/asset/manifests/ingress_test.go index 44d857849ab..c0a70bb1e60 100644 --- a/pkg/asset/manifests/ingress_test.go +++ b/pkg/asset/manifests/ingress_test.go @@ -53,11 +53,13 @@ func installConfigFromTopologies(t *testing.T, options []icOption, func TestGenerateIngerssDefaultPlacement(t *testing.T) { cases := []struct { - name string - installConfigBuildOptions []icOption - controlPlaneTopology configv1.TopologyMode - infrastructureTopology configv1.TopologyMode - expectedIngressPlacement configv1.DefaultPlacement + name string + installConfigBuildOptions []icOption + controlPlaneTopology configv1.TopologyMode + infrastructureTopology configv1.TopologyMode + expectedIngressPlacement configv1.DefaultPlacement + expectedIngressAWSLBType configv1.AWSLBType + expectedIngressPlatformType configv1.PlatformType }{ { // AWS currently uses a load balancer even on single-node, so the @@ -91,6 +93,24 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { infrastructureTopology: configv1.HighlyAvailableTopologyMode, expectedIngressPlacement: configv1.DefaultPlacementWorkers, }, + { + name: "test setting of aws lb type to NLB", + installConfigBuildOptions: []icOption{icBuild.withLBType(configv1.NLB)}, + controlPlaneTopology: configv1.HighlyAvailableTopologyMode, + infrastructureTopology: configv1.HighlyAvailableTopologyMode, + expectedIngressPlacement: configv1.DefaultPlacementWorkers, + expectedIngressAWSLBType: configv1.NLB, + expectedIngressPlatformType: configv1.AWSPlatformType, + }, + { + name: "test setting of aws lb type to Classic", + installConfigBuildOptions: []icOption{icBuild.withLBType(configv1.Classic)}, + controlPlaneTopology: configv1.HighlyAvailableTopologyMode, + infrastructureTopology: configv1.HighlyAvailableTopologyMode, + expectedIngressPlacement: configv1.DefaultPlacementWorkers, + expectedIngressAWSLBType: configv1.Classic, + expectedIngressPlatformType: configv1.AWSPlatformType, + }, { name: "none-platform single node with 0 or 1 day-1 workers", installConfigBuildOptions: []icOption{icBuild.forNone()}, @@ -154,6 +174,10 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { return } assert.Equal(t, tc.expectedIngressPlacement, actualIngress.Status.DefaultPlacement) + if len(tc.expectedIngressAWSLBType) != 0 && len(tc.expectedIngressPlatformType) != 0 { + assert.Equal(t, tc.expectedIngressAWSLBType, actualIngress.Spec.LoadBalancer.Platform.AWS.Type) + assert.Equal(t, tc.expectedIngressPlatformType, actualIngress.Spec.LoadBalancer.Platform.Type) + } }) } } diff --git a/pkg/explain/printer_test.go b/pkg/explain/printer_test.go index e9458d96359..debb6ba36eb 100644 --- a/pkg/explain/printer_test.go +++ b/pkg/explain/printer_test.go @@ -147,6 +147,9 @@ func Test_PrintFields(t *testing.T) { hostedZone HostedZone is the ID of an existing hosted zone into which to add DNS records for the cluster's internal API. An existing hosted zone can only be used when also using existing subnets. The hosted zone must be associated with the VPC containing the subnets. Leave the hosted zone unset to have the installer create the hosted zone on your behalf. + lbType + LBType allows user to set a load balancer type. When this field is set the default ingresscontroller will get created using the specified LBType. If this field is not set then the default ingress controller of LBType Classic will be created. Valid values are: * "Classic": A Classic Load Balancer that makes routing decisions at either the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb * "NLB": A Network Load Balancer that makes routing decisions at the transport layer (TCP/SSL). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + propagateUserTags PropagateUserTags is a flag that directs in-cluster operators to include the specified user tags in the tags of the AWS resources that the operators create. diff --git a/pkg/types/aws/platform.go b/pkg/types/aws/platform.go index 5715bc8160e..702c33f8769 100644 --- a/pkg/types/aws/platform.go +++ b/pkg/types/aws/platform.go @@ -1,6 +1,9 @@ package aws -import "github.com/aws/aws-sdk-go/aws/endpoints" +import ( + "github.com/aws/aws-sdk-go/aws/endpoints" + configv1 "github.com/openshift/api/config/v1" +) // Platform stores all the global configuration that all machinesets // use. @@ -59,6 +62,20 @@ type Platform struct { // AWS resources that the operators create. // +optional PropagateUserTag bool `json:"propagateUserTags,omitempty"` + + // LBType allows user to set a load balancer type. + // When this field is set the default ingresscontroller will get created using the specified LBType. + // If this field is not set then the default ingress controller of LBType Classic will be created. + // Valid values are: + // * "Classic": A Classic Load Balancer that makes routing decisions at either + // the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See + // the following for additional details: + // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + // * "NLB": A Network Load Balancer that makes routing decisions at the + // transport layer (TCP/SSL). See the following for additional details: + // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + // +optional + LBType configv1.AWSLBType `json:"lbType,omitempty"` } // ServiceEndpoint store the configuration for services to From 1a713341777ddb2b1434e94a9475ed2087a4b6eb Mon Sep 17 00:00:00 2001 From: Miciah Masters Date: Sun, 16 Oct 2022 14:31:34 -0400 Subject: [PATCH 2/2] Fix ingress config with empty lbType on AWS When generating the ingresses.config.openshift.io/cluster manifest on AWS, always set spec.loadBalancer.platform.aws.type even if the install-config lbType is nonempty. Before this commit, if lbType was empty, the installer generated a manifest with the following: loadBalancer: platform: aws: {} type: AWS Whereas loadBalancer, platform, and aws are optional fields, the type subfield of the aws field is required. As a consequence, the cluster bootstrap would fail with the following error: "cluster-ingress-02-config.yml": failed to create ingresses.v1.config.openshift.io/cluster -n : Ingress.config.openshift.io "cluster" is invalid: spec.loadBalancer.platform.aws.type: Required value This commit ensures that the installer doesn't generate an invalid ingress manifest when lbType is empty. Follow-up to commit 5d12adcf3076127163301706e0b2479a822227c5. This commit fixes bug OCPBUGS-2436. https://issues.redhat.com/browse/OCPBUGS-2436 * pkg/asset/manifests/ingress.go (generateClusterConfig): Always set spec.loadBalancer.platform.aws.type when the platform is AWS. * pkg/asset/manifests/ingress_test.go (TestGenerateIngerssDefaultPlacement): Update test cases to expect spec.loadBalancer.platform.aws.type to default to "Classic" on AWS. * pkg/types/aws/platform.go (Platform): Update godoc to make it clear that LBType is optional and defaults to "Classic". * pkg/explain/printer_test.go (Test_PrintFields): Update. * data/data/install.openshift.io_installconfigs.yaml: Regenerate. --- .../install.openshift.io_installconfigs.yaml | 23 +++++++-------- pkg/asset/manifests/ingress.go | 6 +++- pkg/asset/manifests/ingress_test.go | 6 +++- pkg/explain/printer_test.go | 7 ++++- pkg/types/aws/platform.go | 28 ++++++++++++------- 5 files changed, 46 insertions(+), 24 deletions(-) diff --git a/data/data/install.openshift.io_installconfigs.yaml b/data/data/install.openshift.io_installconfigs.yaml index 1640c0f54dd..cf3a19013d7 100644 --- a/data/data/install.openshift.io_installconfigs.yaml +++ b/data/data/install.openshift.io_installconfigs.yaml @@ -1719,17 +1719,18 @@ spec: create the hosted zone on your behalf. type: string lbType: - description: 'LBType allows user to set a load balancer type. - When this field is set the default ingresscontroller will get - created using the specified LBType. If this field is not set - then the default ingress controller of LBType Classic will be - created. Valid values are: * "Classic": A Classic Load Balancer - that makes routing decisions at either the transport layer - (TCP/SSL) or the application layer (HTTP/HTTPS). See the following - for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb - * "NLB": A Network Load Balancer that makes routing decisions - at the transport layer (TCP/SSL). See the following for additional - details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb' + description: "LBType is an optional field to specify a load balancer + type. \n When this field is specified, the default ingresscontroller + will be created using the specified load-balancer type. \n Following + are the accepted values: \n * \"Classic\": A Classic Load Balancer + that makes routing decisions at either the transport layer (TCP/SSL) + or the application layer (HTTP/HTTPS). See the following for + additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + \n * \"NLB\": A Network Load Balancer that makes routing decisions + at the transport layer (TCP/SSL). See the following for additional + details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + \n If this field is not set explicitly, it defaults to \"Classic\". + \ This default is subject to change over time." type: string propagateUserTags: description: PropagateUserTags is a flag that directs in-cluster diff --git a/pkg/asset/manifests/ingress.go b/pkg/asset/manifests/ingress.go index 5dbb3d71b27..f348da35d4d 100644 --- a/pkg/asset/manifests/ingress.go +++ b/pkg/asset/manifests/ingress.go @@ -119,10 +119,14 @@ func (ing *Ingress) generateClusterConfig(config *types.InstallConfig) ([]byte, switch config.Platform.Name() { case aws.Name: + lbType := configv1.Classic + if config.AWS.LBType == configv1.NLB { + lbType = configv1.NLB + } obj.Spec.LoadBalancer = configv1.LoadBalancer{ Platform: configv1.IngressPlatformSpec{ AWS: &configv1.AWSIngressSpec{ - Type: config.AWS.LBType, + Type: lbType, }, Type: configv1.AWSPlatformType, }, diff --git a/pkg/asset/manifests/ingress_test.go b/pkg/asset/manifests/ingress_test.go index c0a70bb1e60..8cd5b2989db 100644 --- a/pkg/asset/manifests/ingress_test.go +++ b/pkg/asset/manifests/ingress_test.go @@ -68,6 +68,7 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { installConfigBuildOptions: []icOption{icBuild.forAWS()}, controlPlaneTopology: configv1.SingleReplicaTopologyMode, infrastructureTopology: configv1.SingleReplicaTopologyMode, + expectedIngressAWSLBType: configv1.Classic, expectedIngressPlacement: configv1.DefaultPlacementWorkers, }, { @@ -75,6 +76,7 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { installConfigBuildOptions: []icOption{icBuild.forAWS()}, controlPlaneTopology: configv1.HighlyAvailableTopologyMode, infrastructureTopology: configv1.SingleReplicaTopologyMode, + expectedIngressAWSLBType: configv1.Classic, expectedIngressPlacement: configv1.DefaultPlacementWorkers, }, { @@ -84,6 +86,7 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { installConfigBuildOptions: []icOption{icBuild.forAWS()}, controlPlaneTopology: configv1.SingleReplicaTopologyMode, infrastructureTopology: configv1.HighlyAvailableTopologyMode, + expectedIngressAWSLBType: configv1.Classic, expectedIngressPlacement: configv1.DefaultPlacementWorkers, }, { @@ -91,6 +94,7 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { installConfigBuildOptions: []icOption{icBuild.forAWS()}, controlPlaneTopology: configv1.HighlyAvailableTopologyMode, infrastructureTopology: configv1.HighlyAvailableTopologyMode, + expectedIngressAWSLBType: configv1.Classic, expectedIngressPlacement: configv1.DefaultPlacementWorkers, }, { @@ -174,7 +178,7 @@ func TestGenerateIngerssDefaultPlacement(t *testing.T) { return } assert.Equal(t, tc.expectedIngressPlacement, actualIngress.Status.DefaultPlacement) - if len(tc.expectedIngressAWSLBType) != 0 && len(tc.expectedIngressPlatformType) != 0 { + if len(tc.expectedIngressPlatformType) != 0 { assert.Equal(t, tc.expectedIngressAWSLBType, actualIngress.Spec.LoadBalancer.Platform.AWS.Type) assert.Equal(t, tc.expectedIngressPlatformType, actualIngress.Spec.LoadBalancer.Platform.Type) } diff --git a/pkg/explain/printer_test.go b/pkg/explain/printer_test.go index debb6ba36eb..85fe104febf 100644 --- a/pkg/explain/printer_test.go +++ b/pkg/explain/printer_test.go @@ -148,7 +148,12 @@ func Test_PrintFields(t *testing.T) { HostedZone is the ID of an existing hosted zone into which to add DNS records for the cluster's internal API. An existing hosted zone can only be used when also using existing subnets. The hosted zone must be associated with the VPC containing the subnets. Leave the hosted zone unset to have the installer create the hosted zone on your behalf. lbType - LBType allows user to set a load balancer type. When this field is set the default ingresscontroller will get created using the specified LBType. If this field is not set then the default ingress controller of LBType Classic will be created. Valid values are: * "Classic": A Classic Load Balancer that makes routing decisions at either the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb * "NLB": A Network Load Balancer that makes routing decisions at the transport layer (TCP/SSL). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + LBType is an optional field to specify a load balancer type. + When this field is specified, the default ingresscontroller will be created using the specified load-balancer type. + Following are the accepted values: + * "Classic": A Classic Load Balancer that makes routing decisions at either the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + * "NLB": A Network Load Balancer that makes routing decisions at the transport layer (TCP/SSL). See the following for additional details: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + If this field is not set explicitly, it defaults to "Classic". This default is subject to change over time. propagateUserTags PropagateUserTags is a flag that directs in-cluster operators to include the specified user tags in the tags of the AWS resources that the operators create. diff --git a/pkg/types/aws/platform.go b/pkg/types/aws/platform.go index 702c33f8769..b1279fba187 100644 --- a/pkg/types/aws/platform.go +++ b/pkg/types/aws/platform.go @@ -63,17 +63,25 @@ type Platform struct { // +optional PropagateUserTag bool `json:"propagateUserTags,omitempty"` - // LBType allows user to set a load balancer type. - // When this field is set the default ingresscontroller will get created using the specified LBType. - // If this field is not set then the default ingress controller of LBType Classic will be created. - // Valid values are: - // * "Classic": A Classic Load Balancer that makes routing decisions at either - // the transport layer (TCP/SSL) or the application layer (HTTP/HTTPS). See - // the following for additional details: - // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + // LBType is an optional field to specify a load balancer type. + // + // When this field is specified, the default ingresscontroller will be + // created using the specified load-balancer type. + // + // Following are the accepted values: + // + // * "Classic": A Classic Load Balancer that makes routing decisions at + // either the transport layer (TCP/SSL) or the application layer + // (HTTP/HTTPS). See the following for additional details: + // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#clb + // // * "NLB": A Network Load Balancer that makes routing decisions at the - // transport layer (TCP/SSL). See the following for additional details: - // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + // transport layer (TCP/SSL). See the following for additional details: + // https://docs.aws.amazon.com/AmazonECS/latest/developerguide/load-balancer-types.html#nlb + // + // If this field is not set explicitly, it defaults to "Classic". This + // default is subject to change over time. + // // +optional LBType configv1.AWSLBType `json:"lbType,omitempty"` }