getporter / operator

The Porter Operator gives you a native, integrated experience for managing your bundles from Kubernetes. It is the recommended way to automate your bundle pipeline with support for GitOps.
https://porter.sh/operator
Apache License 2.0
32 stars 18 forks source link

Bundle grpc server with controller-manager in the operator pod spec #308

Open troy0820 opened 8 months ago

troy0820 commented 8 months ago

Is your feature request related to a problem? Please describe. We have the capability to ship the grpc server along with the operator in one yaml instead of trying to drive them separately. Currently we do not ship the grpc server and it doesn't allow the installation outputs to work without them.

Describe the solution you'd like Create the yaml that is going to be deployed and allow that to be used with the deployment of the operator. That deployment should include the grpc service to be used by the porter operator within the context of creating a porter operator. The binary for this we can create a generic grpc server and inject the service necessary as well as provide the service during deployment into the porter-operator namespace.

Describe alternatives you've considered What is described above but this effort will have to come in phases as this will require that porter main can install this properly

Additional context None

troy0820 commented 5 months ago

If we decide to have the controller create the deployment of the grpc server, we could do that but not when an installation is applied. This could happen on startup but I want to make sure that this is the direction we want to go in.

troy0820 commented 2 months ago

The porter config is what drives the grpc server to save state. The dynamic creation of the grpc server needs to allow the porter config (if it exists) to be the backend storage of the grpc server. In resolvePorterConfig the backend is described by the mongodb deployment/service which can be used to settle the grpc server in each namespace.