Closed roivaz closed 3 months ago
/kind feature /priority important-longterm /assign
/lgtm
Outstanding work, congrats @roivaz
LGTM label has been added.
/approve
[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: roivaz
The full list of commands accepted by this bot can be found here.
The pull request process is described here
Adds new PublishingStrategies API to unify how workloads are exposed.
Design
Any workload that exposes an endpoint that can be consumed by clients (either in-cluster or out-of-cluster clients) exposes the api field
publishingStrategies
, which allows a user to configure how the endpoint/s is/are exposed. This is called a "publishing strategy". All workload endpoints have a default publishing strategy, which right now can be one of two types: "Simple" or "Marin3rSidecar". Other design decisions:create: true
is set to declare the intent of creating a new endpoint.create: true
when adding a new endpoint.Simple strategy
The service is exposed through a k8s Service resource, which can be a ClusterIP Service or a LoadBalancer Service (either NLB or ELB).
Marin3rStrategy
Upgrade
Each controller will upgrade it's the custom resources to migrate from the old API fields to the new
publishingStrategies
field. As default Service names have changed, the controllers will check if the Services already exists and keep the old names to avoid recreation of Service, which most certainly would lead to loss of Service during the upgrade. This has been tested in dev but still requires thorough testing in the staging environment.