Skip to content

Tags: stackitcloud/application-load-balancer-controller

Tags

v0.1.0

Toggle v0.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
application load balancer controller for ingress objects (#3)

* docs: add user documentation for ALB Ingress controller (#2)

Co-authored-by: Kamil Przybyl <Kamil.Przybyl@digits.schwarz>

* Move ALBC from CCM repository

* Fix some linter issues

* Fixed controller tests

* Add event handler for services

* Verbosity levels

* Delete certificates on ingress class deletion

* Move labels package into spec

* Clear some TODOs

* Give certificates a proper name

* Remove unused certificates even after creation

* Ingress class annotation

* Support source ranges

* Do a couple of documentation TODOs

* Implement target pool limit

* Document target pool limits

* Fix test

* Support internal ALBs

* Support static LBs

* Use index for paths

* Support TLS bridging

* Refine health checks

* Remove TODO

* Adjust TODO comments

* Support out-of-band log configuration

* Define semantics for implementation-specific path

* Update test for rule ordering

* Add test for update version

* Fix linter issues

* Improve controller tests

* Assign certificates per port

* Link annotations

* Use node port in docs

* Enable leader election by default

* Index secret references on ingresses

* Fix typo

* Fix typo

* Fix typo

* Fix typo

* Fix typo

* Fix path collision detection

* Implement AI feedback

* docs: document NodePort requirement for backend Services

* cmd: do not default zap logger to development mode

* controller/ingress: deduplicate ingress class request mapping for secrets and services

* Add samples to deploy controller

* Use positive jitter

* Use dev2

* Fix internal LBs

* Ignore deploy folder

* Filter out terminating nodes

* Enable lll linter

* Merge two if's into one

* Use constants for protocol

* Remove webhook section

* Add a topic sentence to README

* Implement feedback for STACKIT package

* Validate that HTTP and HTTPS port are in range

* Change port to uint16

* Remove custom scheme

* Consistently use LoadBalancerName

* Use newer DEV image

* Make tree receiver of addPath

* Fix test assertion

* Initialize target pool as late as possible

* Add comment to clarify API behavior for health checks

* Check that health check port is set

* Don't use the same name for variables and types
Avoid the use of underscores at the beginning of variable names

* Remove early return after adding finalizer

* Set user agent for STACKIT APIs

* Wrap original error for not found

* Don't start variables with underscore

* Switch to the new event API

* Make controller tests run in CI

* Remove kubebuilder markers as RBAC rules are hand-written

* Use envtest version from controller-runtime in go.mod

* Add more tests to for work tree

* If HTTPS doesn't work (yet) then HTTP still should

* Also test HTTP on the ingress with missing TLS cert

* Add gosec linter

* Actually add gosec as a linter

* Make updateNeeded test Ginkgo

* Refactor deployment assets

* Create fakes for STACKIT APIs to simplify controllers tests

* Sort all lists in create and update payload

* Delete correct duplicate certificate

* Fix linter issues

* Remove unused methods from ALB API

* Support paging for list endpoint

* Move values into constants

* Added tests for the status of ingresses

* Extend change detection and tests

* Fix linter issues

* Refactor update.go

* Updated ALB SDK to latest

* Add tests for out of range HTTP/S ports

* Paraphrase limits

* Remove sanitize label function

* Added controller tests for node changes

* Log event while waiting for load balancer to become ready
Append ingress class name to ALB name

* Refactor tests for certificate changes

* Fix linter issues

* Add page limit for listing certificates

* Refactor HTTPS option diff

* Refactor isNodeTerminating with helper functions

* Add troubleshooting section

* Run go mod tidy

* Have BuildTree return an error on invalid configurations
Log event when ALB cannot be reconciled due to invalid configuration (it will not be requeued)
Use the already retrieved, created or updated LB to update the status of the ingresses. Don't update the status on invalid configurations.

* Parse service plan IDs

* Fixed linter issues

* Add validation for source ranges

* Improve validation of annotations
Error on parsing errors
Parse CA

* Disallow etp=Local

* Remove unused constants

* Limit targets to 250

* Clarify TLS cert precedence

* Verify that network mode annotation is present

* Test valid source range list

* Don't panic if GetAnnotation is called with an unknown type

* Leverage default value if priority is not parsable

* Validate duplicate source ranges

* Fix linter issue

* Clarify TLS connection to targets

* Paraphrase default backend limitation

* Wait for load balancer to be deleted before attempting to remove certificates

* Refactor handleIngressClassDeletion

* Correct doc string for GetAnnotation

* Log ALB name instead of pointer address

* Log event if HTTPS-only ingress has zero TLS secrets

* Clarify behavior of annotation changes

* Add nil check for certificate retrieved from API

* Updated deployment to use non-dev tag latest
Allow controller to run in Gardener in kube-system namespace

* Remove Gardener labels

---------

Co-authored-by: Kamil Przybyl <kamil776170@gmail.com>
Co-authored-by: Kamil Przybyl <Kamil.Przybyl@digits.schwarz>