Adds Config API Design#95
Conversation
|
xref initial config api and tooling: #51 |
There was a problem hiding this comment.
this spec should only expose fields to the user (admin in this case) that are relevant, EnabledServices isn't imho since its an internal implementation detail.
There was a problem hiding this comment.
@arkodg since EG is designed to be a collection of loosely coupled services, how do you propose that we expose the ability to run different services? Here are example use cases:
- As an admin, I want to run the message service and control plane services separately.
- As an admin, I want to run all EG services together.
There was a problem hiding this comment.
For the default case (all services run together) we probably dont need to define anything
Thinking out loud, when we need to handle this case
As an admin, I want to run the message service and control plane services separately
we can define a MessageService struct with details about the service, publisher, subscriber
There was a problem hiding this comment.
we probably need a top level platform field to toggle between kubernetes, local/stand-alone, custom (could be used to enable advanced use cases such as using the kubernetes controller to read configs but leverage a non kubernetes component for service discovery / resolver)
There was a problem hiding this comment.
Instead of taking the above approach, EG could 1) check for kubeconfig 2) if kubeconfig exists, run in kubernetes "mode" 3) if kubeconfig doesn't exist, run in standAlone "mode". If we find this dynamic approach to be an issue in the future, we can always add the API fields you suggest in the future. I find it more difficult to remove fields than to add them.
There was a problem hiding this comment.
Is the plan to go with a managed or unmanaged deployment route (defined in kubernetes-sigs/gateway-api#892)?
put another way - does this say to actually go provision an Envoy or just set config for when one is provision
There was a problem hiding this comment.
@howardjohn in Envoy Gateway's current design, only "managed" infra is supported. A GatewayClass with a matching controllerName instructs Envoy Gateway to provision the Envoy infra using default settings. If the gatewayclass.spec.parametersRef references this API resource, e.g. BootstrapConfig, Envoy Gateway will provision the Envoy infra using these parameters instead of defaults. We currently have no plans to support "unmanaged" infra but feel free to open an issue or join the community meeting to discuss in more detail.
|
Still not a fan of Bootstrap as the API name. Since this API type will be ref'd by gateway class.spec.parameterRefs, I feel that GatewayConfig or GatewayParams provides a more natural association between resources. |
There was a problem hiding this comment.
im guessing DataPlane will contain platform agnostic fields, so if the user wanted to specify a service type for the envoy k8s service, that would be expressed using the top level Provider field ?
There was a problem hiding this comment.
@arkodg ControlPlane and DataPlane APIs expose provider-agnostic configuration. For example, spec.dataPlane.adminAddress and spec.dataPlane.adminPort could be used to configure Envoy's admin endpoint. I'm open to removing data plane configuration from the design spec until it's needed.
|
@arkodg et al., I've updated this PR based on your feedback and the feedback from today's community call. I'm still in favor of using |
8b29c5d to
9fc6897
Compare
There was a problem hiding this comment.
if we had used protobufs this would be looked a little cleaner
provider:
kubernetes:
....
There was a problem hiding this comment.
Understood. As we discussed, provider follows the union type conventions.
There was a problem hiding this comment.
nit: prefer if this field was called GatewayAPI
Signed-off-by: danehans <daneyonhansen@gmail.com>
Signed-off-by: danehans <daneyonhansen@gmail.com>
Signed-off-by: danehans <daneyonhansen@gmail.com>
Signed-off-by: danehans <daneyonhansen@gmail.com>
Signed-off-by: danehans <daneyonhansen@gmail.com>
ccbacbd to
1cc2506
Compare
Signed-off-by: danehans <daneyonhansen@gmail.com>
youngnick
left a comment
There was a problem hiding this comment.
This LGTM, especially to get started with.
Adds a design doc detailing the initial Envoy Gateway configuration API.
Fixes #107
Signed-off-by: danehans daneyonhansen@gmail.com