Skip to content

Commit 4472181

Browse files
authored
Merge pull request #75033 from dfitzmau/OSDOCS-7074
OSDOCS-7074: Documented external LB for managing api/ingress traffic
2 parents d8464c7 + b281978 commit 4472181

12 files changed

+357
-363
lines changed

installing/installing_bare_metal_ipi/ipi-install-installation-workflow.adoc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,12 @@ include::modules/ipi-install-extracting-the-openshift-installer.adoc[leveloffset
2929

3030
include::modules/ipi-install-creating-an-rhcos-images-cache.adoc[leveloffset=+1]
3131

32+
// Services for a user-managed load balancer
33+
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
34+
35+
// Configuring a user-managed load balancer
36+
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
37+
3238
include::modules/ipi-install-setting-cluster-node-hostnames-dhcp.adoc[leveloffset=+1]
3339

3440
[id="ipi-install-configuration-files"]

installing/installing_bare_metal_ipi/ipi-install-post-installation-configuration.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ include::modules/ipi-install-configuring-ntp-for-disconnected-clusters.adoc[leve
1212

1313
include::modules/nw-enabling-a-provisioning-network-after-installation.adoc[leveloffset=+1]
1414

15-
// Configuring an external load balancer
15+
// Configuring a user-managed load balancer
1616
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
1717

18-
// Services for an external load balancer
18+
// Services for a user-managed load balancer
1919
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]

installing/installing_vsphere/ipi/installing-restricted-networks-installer-provisioned-vsphere.adoc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ include::modules/installation-configure-proxy.adoc[leveloffset=+2]
6464

6565
include::modules/configuring-vsphere-regions-zones.adoc[leveloffset=+2]
6666

67+
// Services for a user-managed load balancer
68+
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
69+
70+
// Configuring a user-managed load balancer
71+
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
72+
73+
// Deploying the cluster
6774
include::modules/installation-launching-installer.adoc[leveloffset=+1]
6875

6976
include::modules/cli-logging-in-kubeadmin.adoc[leveloffset=+1]
@@ -88,12 +95,6 @@ include::modules/cluster-telemetry.adoc[leveloffset=+1]
8895

8996
* See xref:../../../support/remote_health_monitoring/about-remote-health-monitoring.adoc#about-remote-health-monitoring[About remote health monitoring] for more information about the Telemetry service
9097

91-
// Services for an external load balancer
92-
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
93-
94-
// Configuring an external load balancer
95-
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
96-
9798
[id="next-steps_installing-restricted-networks-installer-provisioned-vsphere"]
9899
== Next steps
99100

installing/installing_vsphere/ipi/installing-vsphere-installer-provisioned-customizations.adoc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ include::modules/installation-configure-proxy.adoc[leveloffset=+2]
5656

5757
include::modules/configuring-vsphere-regions-zones.adoc[leveloffset=+2]
5858

59+
// Services for a user-managed load balancer
60+
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
61+
62+
// Configuring a user-managed load balancer
63+
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
64+
65+
// Deploying the cluster
5966
include::modules/installation-launching-installer.adoc[leveloffset=+1]
6067

6168
include::modules/cli-logging-in-kubeadmin.adoc[leveloffset=+1]
@@ -81,12 +88,6 @@ include::modules/cluster-telemetry.adoc[leveloffset=+1]
8188

8289
* See xref:../../../support/remote_health_monitoring/about-remote-health-monitoring.adoc#about-remote-health-monitoring[About remote health monitoring] for more information about the Telemetry service
8390

84-
// Services for an external load balancer
85-
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
86-
87-
// Configuring an external load balancer
88-
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
89-
9091
[id="next-steps_installing-vsphere-installer-provisioned-customizations"]
9192
== Next steps
9293

installing/installing_vsphere/ipi/installing-vsphere-installer-provisioned-network-customizations.adoc

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,13 @@ include::modules/nw-modifying-operator-install-config.adoc[leveloffset=+1]
6666
include::modules/nw-operator-cr.adoc[leveloffset=+1]
6767
// end network customization
6868

69+
// Services for a user-managed load balancer
70+
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
71+
72+
// Configuring a user-managed load balancer
73+
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
74+
75+
// Deploying the cluster
6976
include::modules/installation-launching-installer.adoc[leveloffset=+1]
7077

7178
include::modules/cli-logging-in-kubeadmin.adoc[leveloffset=+1]
@@ -91,12 +98,6 @@ include::modules/cluster-telemetry.adoc[leveloffset=+1]
9198

9299
* See xref:../../../support/remote_health_monitoring/about-remote-health-monitoring.adoc#about-remote-health-monitoring[About remote health monitoring] for more information about the Telemetry service
93100

94-
// Services for an external load balancer
95-
include::modules/nw-osp-services-external-load-balancer.adoc[leveloffset=+1]
96-
97-
// Configuring an external load balancer
98-
include::modules/nw-osp-configuring-external-load-balancer.adoc[leveloffset=+2]
99-
100101
include::modules/ipi-install-configure-network-components-to-run-on-the-control-plane.adoc[leveloffset=+1]
101102

102103
[id="next-steps_installing-vsphere-installer-provisioned-network-customizations"]

modules/installation-launching-installer.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -311,7 +311,7 @@ ifdef::vsphere[]
311311
+
312312
[IMPORTANT]
313313
====
314-
You do not need to specify API and Ingress static addresses for your installation program. If you choose this configuration, you must take additional actions to define network targets that accept an IP address from each referenced vSphere subnet. See the section "Configuring an external load balancer".
314+
You do not need to specify API and Ingress static addresses for your installation program. If you choose this configuration, you must take additional actions to define network targets that accept an IP address from each referenced vSphere subnet. See the section "Configuring a user-managed load balancer".
315315
====
316316
endif::vsphere[]
317317

modules/installation-load-balancing-user-infra.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,4 +227,4 @@ If you are using HAProxy as a load balancer, you can check that the `haproxy` pr
227227

228228
ifeval::["{context}" == "installing-openstack-installer-custom"]
229229
:!user-managed-lb:
230-
endif::[]
230+
endif::[]

modules/installation-osp-balancing-external-loads.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// * installing/installing_openstack/installing-openstack-load-balancing.adoc
44

55
[id="installation-osp-balancing-external-loads_{context}"]
6-
= Configuring an external load balancer
6+
= Configuring a user-managed load balancer
77

88
Configure an external load balancer in {rh-openstack-first} to use your own load balancer, resolve external networking needs, or scale beyond what the default {product-title} load balancer can provide.
99

modules/nw-osp-configuring-external-load-balancer.adoc

Lines changed: 45 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,39 @@
11
// Module included in the following assemblies:
22

3-
// * networking/load-balancing-openstack.adoc ( Load balancing on OpenStack)
4-
// * installing/installing_bare_metal_ipi/ipi-install-post-installation-configuration.adoc (Post-installation configuration)
5-
// * installing/installing-vsphere-installer-provisioned.adoc(Installing a cluster)
6-
// * installing/installing-vsphere-installer-provisioned-customizations.adoc (Installing a cluster on vSphere with customizations)
7-
// * installing/installing-vsphere-installer-provisioned-network-customizations.adoc (Installing a cluster on vSphere with network customizations)
8-
// * installing/installing-restricted-networks-installer-provisioned-vsphere.adoc (Installing a cluster on vSphere in a restricted network)
3+
// OpenStack
4+
// * networking/load-balancing-openstack.adoc
5+
// Bare metal
6+
// * installing/installing_bare_metal_ipi/ipi-install-installation-workflow.adoc
7+
// * installing/installing_bare_metal_ipi/ipi-install-post-installation-configuration.adoc
8+
// vSphere
9+
// * installing/installing-vsphere-installer-provisioned-customizations.adoc
10+
// * installing/installing-vsphere-installer-provisioned-network-customizations.adoc
11+
// * installing/installing-restricted-networks-installer-provisioned-vsphere.adoc
912

10-
ifeval::["{context}" == "installing-vsphere-installer-provisioned"]
11-
:vsphere:
12-
endif::[]
13-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-customizations"]
14-
:vsphere:
15-
endif::[]
16-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-network-customizations"]
17-
:vsphere:
18-
endif::[]
19-
ifeval::["{context}" == installing-restricted-networks-installer-provisioned-vsphere]
20-
:vsphere:
13+
ifeval::["{context}" == "ipi-install-installation-workflow"]
14+
:bare-metal:
2115
endif::[]
2216

2317
:_mod-docs-content-type: PROCEDURE
2418
[id="nw-osp-configuring-external-load-balancer_{context}"]
25-
= Configuring an external load balancer
19+
= Configuring a user-managed load balancer
2620

2721
You can configure an {product-title} cluster
2822
ifeval::["{context}" == "load-balancing-openstack"]
2923
on {rh-openstack-first}
3024
endif::[]
31-
to use an external load balancer in place of the default load balancer.
25+
to use a user-managed load balancer in place of the default load balancer.
3226

3327
[IMPORTANT]
3428
====
35-
Before you configure an external load balancer, ensure that you read the "Services for an external load balancer" section.
29+
Before you configure a user-managed load balancer, ensure that you read the "Services for a user-managed load balancer" section.
3630
====
3731

38-
Read the following prerequisites that apply to the service that you want to configure for your external load balancer.
32+
Read the following prerequisites that apply to the service that you want to configure for your user-managed load balancer.
3933

4034
[NOTE]
4135
====
42-
MetalLB, that runs on a cluster, functions as an external load balancer.
36+
MetalLB, which runs on a cluster, functions as a user-managed load balancer.
4337
====
4438

4539
.OpenShift API prerequisites
@@ -64,7 +58,7 @@ MetalLB, that runs on a cluster, functions as an external load balancer.
6458

6559
You can configure most load balancers by setting health check URLs that determine if a service is available or unavailable. {product-title} provides these health checks for the OpenShift API, Machine Configuration API, and Ingress Controller backend services.
6660

67-
The following examples demonstrate health check specifications for the previously listed backend services:
61+
The following examples show health check specifications for the previously listed backend services:
6862

6963
.Example of a Kubernetes API health check specification
7064

@@ -157,7 +151,7 @@ listen my-cluster-apps-80
157151
# ...
158152
----
159153

160-
. Use the `curl` CLI command to verify that the external load balancer and its resources are operational:
154+
. Use the `curl` CLI command to verify that the user-managed load balancer and its resources are operational:
161155
+
162156
.. Verify that the cluster machine configuration API is accessible to the Kubernetes API server resource, by running the following command and observing the response:
163157
+
@@ -239,7 +233,7 @@ set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; p
239233
cache-control: private
240234
----
241235

242-
. Configure the DNS records for your cluster to target the front-end IP addresses of the external load balancer. You must update records to your DNS server for the cluster API and applications over the load balancer.
236+
. Configure the DNS records for your cluster to target the front-end IP addresses of the user-managed load balancer. You must update records to your DNS server for the cluster API and applications over the load balancer.
243237
+
244238
.Examples of modified DNS records
245239
+
@@ -260,7 +254,30 @@ A record pointing to Load Balancer Front End
260254
DNS propagation might take some time for each DNS record to become available. Ensure that each DNS record propagates before validating each record.
261255
====
262256

263-
. Use the `curl` CLI command to verify that the external load balancer and DNS record configuration are operational:
257+
ifdef::bare-metal[]
258+
. For your {product-title} cluster to use the user-managed load balancer, you must specify the following configuration in your cluster's `install-config.yaml` file:
259+
+
260+
[source,yaml]
261+
----
262+
# ...
263+
platform:
264+
baremetal:
265+
loadBalancer:
266+
type: UserManaged <1>
267+
apiVIPs:
268+
- <api_ip> <2>
269+
ingressVIPs:
270+
- <ingress_ip> <3>
271+
# ...
272+
----
273+
<1> Set `UserManaged` for the `type` parameter to specify a user-managed load balancer for your cluster. The parameter defaults to `OpenShiftManagedDefault`, which denotes the default internal load balancer. For services defined in an `openshift-kni-infra` namespace, a user-managed load balancer can deploy the `coredns` service to pods in your cluster but ignores `keepalived` and `haproxy` services.
274+
<2> Required parameter when you specify a user-managed load balancer. Specify the user-managed load balancer's public IP address, so that the Kubernetes API can communicate with the user-managed load balancer.
275+
<3> Required parameter when you specify a user-managed load balancer. Specify the user-managed load balancer's public IP address, so that the user-managed load balancer can manage ingress traffic for your cluster.
276+
endif::bare-metal[]
277+
278+
.Verification
279+
280+
. Use the `curl` CLI command to verify that the user-managed load balancer and DNS record configuration are operational:
264281
+
265282
.. Verify that you can access the cluster API, by running the following command and observing the output:
266283
+
@@ -352,15 +369,6 @@ set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; p
352369
cache-control: private
353370
----
354371

355-
ifeval::["{context}" == "installing-vsphere-installer-provisioned"]
356-
:!vsphere:
357-
endif::[]
358-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-customizations"]
359-
:!vsphere:
360-
endif::[]
361-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-network-customizations"]
362-
:!vsphere:
363-
endif::[]
364-
ifeval::["{context}" == installing-restricted-networks-installer-provisioned-vsphere]
365-
:!vsphere:
372+
ifeval::["{context}" == "ipi-install-installation-workflow"]
373+
:!bare-metal:
366374
endif::[]
Lines changed: 18 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,39 @@
11
// Module included in the following assemblies:
22

3-
// * networking/load-balancing-openstack.adoc ( Load balancing on OpenStack)
4-
// * installing/installing_bare_metal_ipi/ipi-install-post-installation-configuration.adoc (Post-installation configuration)
5-
// * installing/installing-vsphere-installer-provisioned.adoc(Installing a cluster)
6-
// * installing/installing-vsphere-installer-provisioned-customizations.adoc (Installing a cluster on vSphere with customizations)
7-
// * installing/installing-vsphere-installer-provisioned-network-customizations.adoc (Installing a cluster on vSphere with network customizations)
8-
// * installing/installing-restricted-networks-installer-provisioned-vsphere.adoc (Installing a cluster on vSphere in a restricted network)
9-
10-
ifeval::["{context}" == "installing-vsphere-installer-provisioned"]
11-
:vsphere:
12-
endif::[]
13-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-customizations"]
14-
:vsphere:
15-
endif::[]
16-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-network-customizations"]
17-
:vsphere:
18-
endif::[]
19-
ifeval::["{context}" == installing-restricted-networks-installer-provisioned-vsphere]
20-
:vsphere:
21-
endif::[]
3+
// OpenStack
4+
// * networking/load-balancing-openstack.adoc
5+
// Bare metal
6+
// * installing/installing_bare_metal_ipi/ipi-install-installation-workflow.adoc
7+
// * installing/installing_bare_metal_ipi/ipi-install-post-installation-configuration.adoc
8+
// vSphere
9+
// * installing/installing-vsphere-installer-provisioned-customizations.adoc
10+
// * installing/installing-vsphere-installer-provisioned-network-customizations.adoc
11+
// * installing/installing-restricted-networks-installer-provisioned-vsphere.adoc
2212

2313
:_mod-docs-content-type: CONCEPT
2414
[id="nw-osp-services-external-load-balancer_{context}"]
25-
= Services for an external load balancer
15+
= Services for a user-managed load balancer
2616

2717
You can configure an {product-title} cluster
2818
ifeval::["{context}" == "load-balancing-openstack"]
2919
on {rh-openstack-first}
3020
endif::[]
31-
to use an external load balancer in place of the default load balancer.
21+
to use a user-managed load balancer in place of the default load balancer.
3222

3323
[IMPORTANT]
3424
====
35-
Configuring an external load balancer depends on your vendor's load balancer.
25+
Configuring a user-managed load balancer depends on your vendor's load balancer.
3626
3727
The information and examples in this section are for guideline purposes only. Consult the vendor documentation for more specific information about the vendor's load balancer.
3828
====
3929

40-
Red Hat supports the following services for an external load balancer:
30+
Red Hat supports the following services for a user-managed load balancer:
4131

4232
* Ingress Controller
4333
* OpenShift API
4434
* OpenShift MachineConfig API
4535
46-
You can choose whether you want to configure one or all of these services for an external load balancer. Configuring only the Ingress Controller service is a common configuration option. To better understand each service, view the following diagrams:
36+
You can choose whether you want to configure one or all of these services for a user-managed load balancer. Configuring only the Ingress Controller service is a common configuration option. To better understand each service, view the following diagrams:
4737

4838
.Example network workflow that shows an Ingress Controller operating in an {product-title} environment
4939
image::external-load-balancer-default.png[An image that shows an example network workflow of an Ingress Controller operating in an {product-title} environment.]
@@ -54,7 +44,7 @@ image::external-load-balancer-openshift-api.png[An image that shows an example n
5444
.Example network workflow that shows an OpenShift MachineConfig API operating in an {product-title} environment
5545
image::external-load-balancer-machine-config-api.png[An image that shows an example network workflow of an OpenShift MachineConfig API operating in an {product-title} environment.]
5646

57-
The following configuration options are supported for external load balancers:
47+
The following configuration options are supported for user-managed load balancers:
5848

5949
* Use a node selector to map the Ingress Controller to a specific set of nodes. You must assign a static IP address to each node in this set, or configure each node to receive the same IP address from the Dynamic Host Configuration Protocol (DHCP). Infrastructure nodes commonly receive this type of configuration.
6050
@@ -65,25 +55,12 @@ The following configuration options are supported for external load balancers:
6555
You can list all IP addresses that exist in a network by checking the machine config pool's resources.
6656
====
6757
68-
Before you configure an external load balancer for your {product-title} cluster, consider the following information:
58+
Before you configure a user-managed load balancer for your {product-title} cluster, consider the following information:
6959

7060
* For a front-end IP address, you can use the same IP address for the front-end IP address, the Ingress Controller's load balancer, and API load balancer. Check the vendor's documentation for this capability.
7161
72-
* For a back-end IP address, ensure that an IP address for an {product-title} control plane node does not change during the lifetime of the external load balancer. You can achieve this by completing one of the following actions:
62+
* For a back-end IP address, ensure that an IP address for an {product-title} control plane node does not change during the lifetime of the user-managed load balancer. You can achieve this by completing one of the following actions:
7363
** Assign a static IP address to each control plane node.
7464
** Configure each node to receive the same IP address from the DHCP every time the node requests a DHCP lease. Depending on the vendor, the DHCP lease might be in the form of an IP reservation or a static DHCP assignment.
7565
76-
* Manually define each node that runs the Ingress Controller in the external load balancer for the Ingress Controller back-end service. For example, if the Ingress Controller moves to an undefined node, a connection outage can occur.
77-
78-
ifeval::["{context}" == "installing-vsphere-installer-provisioned"]
79-
:!vsphere:
80-
endif::[]
81-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-customizations"]
82-
:!vsphere:
83-
endif::[]
84-
ifeval::["{context}" == "installing-vsphere-installer-provisioned-network-customizations"]
85-
:!vsphere:
86-
endif::[]
87-
ifeval::["{context}" == installing-restricted-networks-installer-provisioned-vsphere]
88-
:!vsphere:
89-
endif::[]
66+
* Manually define each node that runs the Ingress Controller in the user-managed load balancer for the Ingress Controller back-end service. For example, if the Ingress Controller moves to an undefined node, a connection outage can occur.

0 commit comments

Comments
 (0)