This release brings a change with how we interact with the underlying Terraform Azure provider. Instead of interfacing with Terraform via the TF CLI, the new implementation consumes the Terraform provider's Go provider schema and invokes the CRUD functions registered in that schema, and we no longer fork the underlying Terraform provider process or the Terraform CLI.
Thus, we have considerable performance improvements with the v0.41.0
version of the provider. Although we have not evaluated the improvements specifically for upbound/provider-azure@v0.41.0
, you can find some reference results from the experiments we did with upbound/provider-aws@v0.44.0
for 1K and 10K MRs, when we switched to this new runtime architecture.
Note: These results belong to the upbound/provider-aws@v0.44.0
with which we have rolled this runtime architecture for the official AWS provider. These results are shared not to provide a Sizing Guide but as a reference to understand the improvements in performance metrics. Also, the experiment sets of tests are shared:
-
Objective: 10K UserPolicyAttachment MRs
-
Parallelization: 500 reconcile workers
-
Poll period: 10min
-
Node: m5.2xlarge (8vCPU, 32GiB RAM)
Average TTR Peak TTR Average Memory Peak Memory Average CPU Peak CPU 4.40 secs 79 secs 775.41 MiB 1185.62 MiB 15.25% 20.90% -
Objective: 1K UserPolicyAttachment MRs
-
Parallelization: 500 reconcile workers
-
Poll period: 10min
-
Node: m5.2xlarge (8vCPU, 32GiB RAM)
Average TTR Peak TTR Average Memory Peak Memory Average CPU Peak CPU 4.15 secs 44 secs 630.39 MiB 948.35 MiB 9.06% 12.69%
Because the provider no longer forks the Terraform CLI or Terraform Azure provider, we removed the Terraform CLI and the Terraform provider binaries from the provider package, and accordingly we also deprecated all the process-forking related command-line flags. The full list of the deprecated command-line flags is as follows:
--terraform-version
--terraform-provider-version
--terraform-native-provider-path
--terraform-provider-source
--provider-ttl
Using these flags will be non-functional and you will receive log messages similar to the following, if you pass any of these deprecated command-line flags to the provider.
warning: Command-line flag "terraform-version" is deprecated and no longer used. It will be removed in a future release. Please remove it from all of your configurations (ControllerConfigs, etc.).
warning: Command-line flag "terraform-provider-source" is deprecated and no longer used. It will be removed in a future release. Please remove it from all of your configurations (ControllerConfigs, etc.).
warning: Command-line flag "terraform-provider-version" is deprecated and no longer used. It will be removed in a future release. Please remove it from all of your configurations (ControllerConfigs, etc.).
warning: Command-line flag "provider-ttl" is deprecated and no longer used. It will be removed in a future release. Please remove it from all of your configurations (ControllerConfigs, etc.).
Our users are advised to remove any of these deprecated command-line flags from their configurations (ControllerConfig
s, etc.) because the deprecated command-line flags will be removed in a future release of the provider.
What's Changed
- Use Terraform Plugin SDK to Reconcile MRs by @ulucinar in #592
- Remove the Terraform CLI from the provider package and deprecate the relevant provider command-line flags. by @ulucinar in #619
Full Changelog: v0.40.0...v0.41.0