oracle / oracle/oci-cloud-controller-manager

TCP Health Checks only supported in GUI, not supported in code

Open
#508 1 comment 2 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

BUG REPORT

Environment:

Kubernetes version (use kubectl version): 1.33.1
OS (e.g. from /etc/os-release): "Oracle Linux Server 8.10"
Kernel (e.g. uname -a): 5.15.0-309.180.4.el8uek.x86_64
Others: Using OCI (Load Balancer)

What happened?
  • We are using OKE

  • We create a deployment, serving traffic on TCP 445 (It's an SMB Server)

  • We create a service, of type LoadBalancer, pointing to this service

  • We use these annotations:

    oci.oraclecloud.com/load-balancer-type: lb
    service.beta.kubernetes.io/oci-load-balancer-backend-protocol: TCP
    service.beta.kubernetes.io/oci-load-balancer-shape: flexible
    service.beta.kubernetes.io/oci-load-balancer-shape-flex-max: "100"
    service.beta.kubernetes.io/oci-load-balancer-shape-flex-min: "10"

Oracle creates the load balancer:

Image

It creates the listener:

Image

It creates the backend set

Image

But for some reason the health check has been misconfigured as HTTP. On port 10256.

Image

This makes no sense when we are hosting a TCP service and wish to check its health by checking the TCP Port.

Oracle supports TCP health checks, via the GUI:

Image

But this value can only be set in GUI, and cannot be set by annotations.

It does not work to set the value manually because A) it does not work in an IaC pipeline and B) The value is eventually overriden by the Cloud Controller Manager. It puts the health check back to HTTP 10256 after a period of time.

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 by tracing how Service annotations are parsed and how OCI load-balancer backend health checks are configured during reconciliation. Reproduce the reported LoadBalancer setup and verify that a TCP health check is configurable through the Service and remains unchanged after the controller reconciles it.

Written by the indexing model from the issue text.

Assessment

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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.