oracle / oracle/oci-cloud-controller-manager

[BUG REPORT] When creating a Load Balancer the backends of the backend set (TCP 80) are not created automatically.

Open
#423 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
158
Forks
108
PR merge metrics
No merged PRs in 30d

Description

Is this a BUG REPORT or FEATURE REQUEST?

BUG REPORT

Versions

CCM Version: v1.25.0

Environment:

  • Kubernetes version (use kubectl version): v1.25.9
  • OS (e.g. from /etc/os-release): Ubuntu 22.04.2 LTS
  • Kernel (e.g. uname -a): Linux kow-m02 5.15.0-1032-oracle #38-Ubuntu SMP Thu Mar 23 19:30:10 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
  • Others:

What happened?

When creating a Load Balancer with the Nginx example from https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/tutorial.md the backends of the backend set (TCP 80) aren't automatically created.

What you expected to happen?

That the the backends of the backend set (TCP 80) would be created automatically.

How to reproduce it (as minimally and precisely as possible)?

Use the example from https://github.com/oracle/oci-cloud-controller-manager/blob/master/docs/tutorial.md and append the following annotations to the LB service:

annotations:
    oci.oraclecloud.com/load-balancer-type: "lb"
    service.beta.kubernetes.io/oci-load-balancer-shape: "flexible"
    service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"
    service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "10"
    service.beta.kubernetes.io/oci-load-balancer-subnet1: "ocid1.aaaaaaaaaa.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"

Then this LB will be created, with a backend configured TCP 80, but empty of backends inside it
image

Anything else we need to know?

If I try to curl the web, this happens:

guille@raspberrypi: $ curl http://<LoadBalancer_IP>:80/
curl: (56) Recv failure: Connection reset by peer

But, If I create the backends myself (via the web console) then I'm able to connect to the webpage e.g.

guille@raspberrypi: $ curl http://<LoadBalancer_IP>:80/
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the Nginx example in docs/tutorial.md and reproduce the Load Balancer using the listed service annotations on Kubernetes v1.25. Verify that the TCP 80 backend set is created without backends, then confirm the fix by checking that the backends appear automatically and that curl to the load balancer returns the Nginx page.

Written by the indexing model from the issue text.

Assessment

Tech stack
go, kubernetes, nginx
Domain
backend, cloud, infrastructure
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.