Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions data/data/install.openshift.io_installconfigs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Some double spaces in the description fileld.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm I see that, but I think this is generated from https://github.com/openshift/installer/pull/6478/files#diff-7941d8da46384fc43b6eeae7d5c3319065b16940457822346c9ccb08cbcf47b4R66, which uses a hanging indent and a bulleted list.

Should I remove the hanging indent and extra spaces from there?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I propose we do that as a follow-up.

propagateUserTags:
description: PropagateUserTags is a flag that directs in-cluster
operators to include the specified user tags in the tags of
Expand Down
25 changes: 13 additions & 12 deletions pkg/asset/installconfig/vsphere/mock/authmanager_generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 9 additions & 1 deletion pkg/asset/manifests/infrastructure_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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{}
Expand Down Expand Up @@ -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{}
Expand Down
13 changes: 13 additions & 0 deletions pkg/asset/manifests/ingress.go
Original file line number Diff line number Diff line change
Expand Up @@ -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 (
Expand Down Expand Up @@ -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)
}

Expand Down
34 changes: 29 additions & 5 deletions pkg/asset/manifests/ingress_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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()},
Expand Down Expand Up @@ -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)
}
})
}
}
3 changes: 3 additions & 0 deletions pkg/explain/printer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,9 @@ func Test_PrintFields(t *testing.T) {
hostedZone <string>
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 <string>
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 <boolean>
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.

Expand Down
19 changes: 18 additions & 1 deletion pkg/types/aws/platform.go
Original file line number Diff line number Diff line change
@@ -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.
Expand Down Expand Up @@ -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.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Classic will be created

Is there any blocker to use NLB as default?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yup - it's documented here Shall we use NLB for default ingress controller ?
Specifically, we have this BZ https://bugzilla.redhat.com/show_bug.cgi?id=2023681 to figure out before going default.

// 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
Expand Down