Skip to content

Remove Octavia Beta info and add info related to GA #6887

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Sep 23, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
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
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
---
title: Expose your applications using OVHcloud Public Cloud Load Balancer
excerpt: "How to expose your applications hosted on Managed Kubernetes Service using the OVHcloud Public Cloud Load Balancer"
updated: 2024-09-11
updated: 2024-09-17
---

> [!warning]
>
> Usage of the [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) with Managed Kubernetes Service (MKS) is now GA.
> The LoadBalancer based on Octavia is not the default one yet. You must use the annotation `loadbalancer.ovhcloud.com/class: octavia` to deploy an Octavia LoadBalancer from your MKS cluster.
> Usage of the [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) with Managed Kubernetes Service (MKS) is now in General Availability.
> However this LoadBalancer (based on Octavia project) is not the default one yet for cluster running Kubernetes versions <1.31. For those clusters you must use the annotation `loadbalancer.ovhcloud.com/class: octavia` to deploy an Octavia LoadBalancer from your MKS cluster.
>

## Objective
Expand All @@ -21,7 +21,7 @@ This guide uses some concepts that are specific to our Public Cloud Load Balance

## Requirements

### Kubernetes version
### Kubernetes version <a name="kube-versions"></a>

To be able to deploy [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/), your Managed Kubernetes Service must run or have been upgraded to the following patch versions:

Expand All @@ -33,6 +33,14 @@ To be able to deploy [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb
| 1.29.3-3 >= |
| 1.30.2-1 >= |

Please note that for clusters running on those versions, you must use the annotation `loadbalancer.ovhcloud.com/class: octavia` to specify that you want to deploy [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) (based on Octavia project) for your MKS cluster.

The following versions will use [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) as default load balancing solution, you do not need to specify any annotation:

| Kubernetes versions |
| ------------------- |
| 1.31 >= |

### Network prerequisite to expose your Load Balancers publicly

The first step is to make sure that you have an existing vRack on your Public Cloud Project. To do so you can follow this guide that explains how to [Configure a vRack for Public Cloud](/pages/public_cloud/public_cloud_network_services/getting-started-07-creating-vrack).
Expand Down Expand Up @@ -71,14 +79,10 @@ When exposing your load balancer publicly (public-to-public or public-to-private
> Note: Each publicly exposed Load Balancer has its own Public Floating IP. Outgoing traffic doesn't consume OVHcloud Gateway bandwidth. ([except for Public-to-Public mode](#public-to-public-scenario))
>

> [!warning]
>
> During the MKS-Public Cloud Load Balancer Beta (CCM), since the Public Cloud Load Balancer is already in General Availability phase, the Public Cloud Load Balancer usage as well as the other network components (Gateway & Floating IPs) will be billed.
>

## Instructions

During the beta phase, if you want a Kubernetes load balancer service to be deployed using [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) rather than the historical [Loadbalancer for Kubernetes](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer-kubernetes/) solution, you'll need to add the annotation: `loadbalancer.ovhcloud.com/class: "octavia"` on your Kubernetes Service manifest.
Depending of the Kubernetes version your cluster is using, if you want to use a [Public Cloud Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) rather than the historical [Loadbalancer for Kubernetes](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer-kubernetes/) solution, you'll might need to add the annotation: `loadbalancer.ovhcloud.com/class: "octavia"` on your Kubernetes Service manifest. Please refer to the [versions matrix section](#kube-versions).

Here's a simple example of how to use the Public Cloud Load Balancer

Expand All @@ -104,7 +108,7 @@ metadata:
name: test-lb-service
namespace: test-lb-ns
annotations:
loadbalancer.ovhcloud.com/class: octavia
loadbalancer.ovhcloud.com/class: octavia //not required for cluster running kubernetes versions >= 1.31
loadbalancer.ovhcloud.com/flavor: small
spec:
ports:
Expand Down Expand Up @@ -150,7 +154,7 @@ metadata:
name: my-lb-service
namespace: test-lb-ns
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
loadbalancer.ovhcloud.com/flavor: "medium" //optional, default = small
labels:
app: test-octavia
Expand Down Expand Up @@ -178,7 +182,7 @@ metadata:
name: my-lb-service
namespace: test-lb-ns
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
service.beta.kubernetes.io/openstack-internal-load-balancer: "true"
labels:
app: test-octavia
Expand Down Expand Up @@ -208,7 +212,7 @@ metadata:
name: my-lb-service
namespace: test-lb-ns
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
loadbalancer.ovhcloud.com/flavor: "medium" //optional, default = small
labels:
app: test-octavia
Expand All @@ -234,9 +238,8 @@ spec:
### Supported service annotations

- `loadbalancer.ovhcloud.com/class`

During the Beta phase, it is mandatory to specify the class of the load balancer you want to create.
Authorized values: 'octavia' = Public Cloud Load Balancer, 'iolb' = Loadbalancer for Managed Kubernetes Service (will be deprecated in futur versions). Default value is 'iolb'.
Authorized values: 'octavia' = Public Cloud Load Balancer, 'iolb' = Loadbalancer for Managed Kubernetes Service (will be deprecated in futur versions).
If not specified, the default class of the MKS Kubernetes versions your are using will be applied, please refer to the [versions matrix section](#kube-versions).

- `loadbalancer.ovhcloud.com/flavor`

Expand Down Expand Up @@ -350,7 +353,7 @@ spec:

#### Resize your LoadBalancer

There is no proper way to "resize" your loadbalancer yet (work in progress). The best alternative to change the flavor of your load balancer is to recreate a new Kubernetes Service that will use the same public IP as an existing one.
There is no proper way to hot "resize" your loadbalancer yet (work in progress). The best alternative to change the flavor of your load balancer is to recreate a new Kubernetes Service that will use the same public IP as an existing one.
You can find the complete HowTo and examples on our public Github repository: <https://github.com/ovh/public-cloud-examples>

- First, make sure that the existing service is using the `loadbalancer.openstack.org/keep-floatingip` annotation. If it's not using it, the public Floating IP will be released (it can be added after the service creation).
Expand All @@ -370,7 +373,7 @@ test-lb-todel LoadBalancer 10.3.107.18 141.94.215.240 80:30172/TCP
metadata:
name: my-medium-lb
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
loadbalancer.ovhcloud.com/flavor: "medium"
labels:
app: demo-upgrade
Expand Down Expand Up @@ -418,7 +421,7 @@ annotations:

```yaml
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31, you can just remove the annotation.
```

##### Step 2 - Apply the change
Expand Down Expand Up @@ -446,7 +449,7 @@ kind: Service
metadata:
name: octavia-keepip-with-existing-ip
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
#loadbalancer.openstack.org/keep-floatingip: "true" # Useless, since the FIP was provided, the FIP will not be managed by the MKS cluster
spec:
loadBalancerIP: 1.2.3.4
Expand Down Expand Up @@ -474,7 +477,7 @@ kind: Service
metadata:
name: octavia-with-fixed-vip
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
loadbalancer.openstack.org/port-id: "<openstack-port-uuid>"
spec:
type: LoadBalancer
Expand All @@ -497,7 +500,7 @@ kind: Service
metadata:
name: octavia-ip-restrictions
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
spec:
loadBalancerSourceRanges:
- 1.2.3.4/32
Expand All @@ -521,7 +524,7 @@ kind: Service
metadata:
name: octavia-basic-shared
annotations:
loadbalancer.ovhcloud.com/class: "octavia"
loadbalancer.ovhcloud.com/class: "octavia" //not required for cluster running kubernetes versions >= 1.31
loadbalancer.openstack.org/load-balancer-id: "<existing-octavia-uuid>"
spec:
type: LoadBalancer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
---
title: Expose your app deployed on an OVHcloud Managed Kubernetes Service
excerpt: Find out how to use and expose your app deployed on an OVHcloud Managed Kubernetes LoadBalancer
excerpt: Find out how to use and expose your app deployed on an OVHcloud Managed Kubernetes Service
updated: 2024-09-11
---

> [!warning]
> This documentation is about "LoadBalancer for K8s". If you want to benefit from the future MKS LoadBalancer implementation based on Octavia LoadBalancer, please refer to [this page](/pages/public_cloud/containers_orchestration/managed_kubernetes/expose_your_applications_using_a_load_balancer/).
> The Loadbalancer section of this documentation is about "LoadBalancer for Managed Kubernetes. If you want to benefit from the new MKS LoadBalancing solution "Public Cloud LoadBalancer" based on Octavia LoadBalancer, please refer to [this page](/pages/public_cloud/containers_orchestration/managed_kubernetes/expose_your_applications_using_a_load_balancer/).
>
> To force the usage of "LoadBalancer for K8s" in your MKS cluster, add this annotation `loadbalancer.ovhcloud.com/class: iolb` to your K8s Service.
> To force the usage of "LoadBalancer for Managed Kubernetes" in your MKS cluster, add this annotation `loadbalancer.ovhcloud.com/class: iolb` to your Kubernetes Service.
>
> Note: "LoadBalancer for K8s" will be replaced by the Octavia implementation.
> Note: Starting from MKS Kubernetes version 1.31, "LoadBalancer for Managed Kubernetes" is no longer the default loadbalancer solution and will be replaced by Public Cloud Loadbalancer.
>

## Objective
Expand Down Expand Up @@ -56,11 +56,11 @@ It's rather cumbersome to use `NodePort` `Services` in production. As you are us

> [!warning]
> In our OVHcloud Managed Kubernetes you have an easy way to access `NodePort` services. You need to get the *nodes* URL, an URL solving via round-robin DNS to one random node of your cluster. As `NodePort` services are exposed in the same port on every Node, you can use this *nodes* URL to access them.
>
>
> In order to get the nodes URL, you get the *control plane* URL (the one given on `kubectl cluster-info`) and add the `nodes` element between the first and the second element of the URL
>
>
> Example:
>
>
> ```
> $ kubectl cluster-info
> Kubernetes control plane is running at https://xxxxxx.c1.gra9.k8s.ovh.net
Expand Down Expand Up @@ -91,18 +91,16 @@ The `LoadBalancer` is the best option for a production environment, with two cav

OVHcloud currently provides two types of load balancers that can be used with Managed Kubernetes Services:

- [Load Balancer for Managed Kubernetes](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer-kubernetes/), this load balancer type can only be used to expose resources of a Managed Kubernetes Service. It supports up to 2000 requests/second and a 200Mbits/s bandwidth.
- [Load Balancer for Managed Kubernetes](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer-kubernetes/), this load balancer type can only be used to expose resources of a Managed Kubernetes Service. It supports up to 2000 requests/second and a 200Mbits/s bandwidth. Please note that this Loadbalancer will be depracated from MKS Kubernetes version 1.32 and upwards.
- [Public Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/), based on the OpenStack Octavia project, this load balancer type can also be used with standard OVHcloud instances. You can choose between three Load Balancer sizes (S,M,L), providing up to 40k requests/second and a 2 Gbits/second bandwidth. Other advantages are the capability to expose your Load Balancer privately (private-to-private) or publicly (public-to-private or public-to-public) using [Floating IPs](https://www.ovhcloud.com/en-gb/public-cloud/floating-ip/), the possibility to collect metrics and TCP/UDP protocols.

> [!warning]
> Usage of the [Public Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) with a Managed Kubernetes Service is currently in Beta phase, you can retrieve all the related information and request an access by joining our [Container & Orchestration dedicated Discord channel](https://discord.gg/ovhcloud).

### Supported annotations

> [!primary]
> [!primary]
> This part of the documentation applies to [Load Balancer for Managed Kubernetes](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer-kubernetes/).
>
> A dedicated documentation for [Public Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) will be published with the release of the Beta phase.
> A dedicated documentation for [Public Load Balancer](https://www.ovhcloud.com/en-gb/public-cloud/load-balancer/) is available, please look at the [Expose your applications using a load balancer](pages/public_cloud/containers_orchestration/managed_kubernetes/expose_your_applications_using_a_load_balancer).

There are several annotations available to customize your load balancer:

Expand Down Expand Up @@ -195,7 +193,7 @@ deployment.apps/hello-world-deployment configured
```

> [!primary]
> The application you have just deployed is a simple Nginx server with a single static *Hello World* page.
> The application you have just deployed is a simple Nginx server with a single static *Hello World* page.
> Basically it just deploys the Docker image [`ovhplatform/hello`](https://hub.docker.com/r/ovhplatform/hello/)

### List the services
Expand Down