crossplane / terrajet

Generate Crossplane Providers from any Terraform Provider
https://crossplane.io
Apache License 2.0
289 stars 38 forks source link

Rollout shared gRPC server support for jet-based AWS, GCP, Azure providers #278

Closed ulucinar closed 2 years ago

ulucinar commented 2 years ago

What problem are you facing?

We would like to switch to a shared gRPC server in the big three terrajet-based providers: provider-jet-aws, provider-jet-gcp and provider-jet-azure. This is a reconfiguration of certain runtime aspects of the providers and no API changes and the like are expected. Terraform CLI by default forks a (native) provider plugin process per invocation and in the context of a terrajet-based Crossplane provider, this corresponds to forking multiple processes of the native provider plugin in the same container. By switching to a shared gRPC server implementation, we would like to improve these provider's resource consumption. With https://github.com/crossplane/terrajet/pull/267, we have already extended the Terrajet runtime to optionally support running with a shared native provider process. It also turns out that terraform-provider-google does not support the command-line options we can employ for provider-jet-azure and provider-jet-aws for running a shared native provider.

How could Terrajet help solve your problem?

We can switch to a cookie-based shared provider forking and then switch to the described shared execution model for the big three terrajet-based providers.

ulucinar commented 2 years ago

We have addressed this issue via the following PRs: