BuildNot yet confirmed elsewhere1 publisher2 min readPublished
Terraform's Google provider 8.0 makes EXTERNAL_MANAGED the default load balancer scheme
HashiCorp's Terraform provider for Google Cloud 8.0 switches the default scheme on two load balancer resources from EXTERNAL to EXTERNAL_MANAGED. Teams still on Classic have to pin the old value before they upgrade, or the first plan may propose changes to their live load balancers.
The Engineer · Build desk

What happened
- The release removes resources whose backing services were retired, among them google_iap_brand, google_iap_client, the three google_notebooks_* resources and google_ml_engine_model.
- Attributes where order carries no meaning, in Compute Service Attachments and GKE logging and monitoring configuration among others, change from lists to sets.
- Validation is stricter in places: google_workflows_workflow now requires source_contents, and Workforce Identity Pool Provider SCIM tenants need claim_mapping.
- HashiCorp recommends moving to the latest 7.x release and clearing its deprecation warnings before upgrading to 8.0.
- OpenTofu users need version 1.11 or later for write-only attributes, which send sensitive values to Google Cloud APIs without saving them.
Compiled by The EngineerSomething wrong?How this is made
Why it matters
- decision The owner of every backend service and global forwarding rule without an explicit scheme now has to choose, in code, between Classic and the external Application Load Balancer.
- constraint Any module that still uses notebooks, BeyondCorp or IAP brand resources blocks the 8.0 upgrade until it is ported to the successor resources.
- capability Once diffs caused only by ordering disappear from GKE logging and service attachment fields, a plan that shows a change in those blocks is more likely to mean a real one.
If a configuration leaves a field out, the provider supplies the value. In 8.0, an unset scheme on google_compute_backend_service or google_compute_global_forwarding_rule now means EXTERNAL_MANAGED [2]. Those configurations therefore describe the external Application Load Balancer, not the Classic one [3]. An existing Classic load balancer built from such a block no longer matches its own code, and the next plan may propose changing it [4].
That change shows up in the plan [4]. It goes unnoticed only in a pipeline that applies without anyone reading the plan. The fix is one line in each affected block: `load_balancing_scheme = "EXTERNAL"` [4]. InfoQ's suggested upgrade steps begin with a code search for load balancer resources that omit the field [17]. I would set the field on every one of these resources, including the ones that are supposed to move. Then the move to EXTERNAL_MANAGED is a change someone wrote and reviewed by itself, separate from the provider upgrade.
Configurations that use removed resources need edits before the upgrade [6]. Most of the removed resources have a named successor. The three notebooks resources map to google_workbench_instance. The BeyondCorp app connection, connector and gateway map to Security Gateway resources. google_vertex_ai_schedule maps to google_colab_schedule [5]. The InfoQ post does not list every removal, and it names the upgrade guide and the GitHub changelog as the authoritative references [11].
The list-to-set work is the best engineering in this release. Sometimes an API returns values in a different order from the one the configuration used. A list attribute then reports a diff that never goes away, and HashiCorp says switching to sets prevents those perpetual diffs [7]. Some schema changes migrate on their own and some do not. Certain integer-to-string conversions migrate state automatically, while others need configuration edits [9]. InfoQ's checklist also covers list-to-set conversions and write-only version attributes that changed type or became required. Those go on the review list next to anything the plan marks for destroy or replace [16].
OpenTofu users get every provider-side breaking change, the scheme default included, because those changes ship in the provider whichever CLI runs it [12]. They do not get the discovery side of the 7.x work. The provider supports Terraform list resources for the terraform query workflow. That workflow searches for infrastructure outside state and can generate resource and import configuration, across services that include Compute Engine, IAM and BigQuery [15]. OpenTofu has no equivalent, and a feature request for tofu query, issue #3787, is still pending [14].
What to watch
- Whether the 8.0 upgrade guide and GitHub changelog list removed resources beyond the ones InfoQ named.
- Whether plans against existing Classic load balancers show the scheme change as an in-place update or as a destroy-and-replace.
- Movement on OpenTofu issue #3787, the pending request for a tofu query command.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence60
- Adoption
- Insufficient
- Hype gap0
- Incentives
- Insufficient
- Confidence65
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
HashiCorp announced the general availability of version 8.0 of the Terraform provider for Google Cloud, a major, breaking release.
- [2]
In 8.0 the default load_balancing_scheme for google_compute_backend_service and google_compute_global_forwarding_rule shifts from EXTERNAL to EXTERNAL_MANAGED.
- [3]
Configurations that don't set load_balancing_scheme will use the new external Application Load Balancer instead of the Classic one.
- [4]
Teams that depend on Classic behavior must set load_balancing_scheme = "EXTERNAL" explicitly, or a plan may propose changes to existing load balancers.
- [5]
8.0 removes resources and data sources whose backing services were shut down or replaced, including google_iap_brand and google_iap_client (after the IAP OAuth Admin APIs shutdown), the three google_notebooks_* resources (users should move to google_workbench_instance), google_ml_engine_model, and the BeyondCorp app connection, connector and gateway resources (replaced by Security Gateway resources); google_vertex_ai_schedule is replaced by google_colab_schedule.
- [6]
Configurations referencing any of the removed resources must be updated before upgrading.
- [7]
Attributes where ordering carries no meaning changed from lists to sets, including fields in Compute Service Attachments, GKE logging and monitoring configuration, and Cloud Security Compliance Frameworks; HashiCorp says this prevents perpetual diffs when an API returns values in a different order than the configuration.
- [8]
Validation is stricter for some Google Cloud APIs: source_contents is now required for google_workflows_workflow, and claim_mapping is needed when creating Workforce Identity Pool Provider SCIM tenants.
- [9]
Some state changes, like some integer-to-string conversions, migrate automatically, but others need configuration edits.
- [10]
HashiCorp recommends moving to the latest 7.x release first and clearing deprecation warnings before upgrading to 8.0.
- [11]
The InfoQ post does not list every removed resource; the upgrade guide and GitHub changelog are the authoritative references.
- [12]
The provider's breaking changes, including the EXTERNAL_MANAGED default, removed resources and list-to-set conversions, are in the provider and apply no matter the CLI, including for OpenTofu.
- [13]
Write-only attributes, which send sensitive values to APIs without saving them, need OpenTofu 1.11 or later, the version that introduced them.
- [14]
The Terraform query and list discovery workflow has no equivalent in OpenTofu; a feature request for tofu query (issue #3787) is still pending.
- [15]
The provider supports Terraform list resources that work with the terraform query workflow to search for existing infrastructure outside of state and optionally create resource and import configurations, with coverage spanning Compute Engine, IAM, BigQuery, Pub/Sub, Secret Manager, Migration Center and Network Services.
- [16]
InfoQ's suggested upgrade plan says to check the terraform plan carefully, focusing on resources marked for destroy or replace, and paying special attention to list-to-set conversions and write-only version attributes that changed type or became required.
- [17]
InfoQ's suggested upgrade plan says to search code for load balancer resources that omit load_balancing_scheme and set it explicitly to avoid unintended migration to EXTERNAL_MANAGED.
Sources
1 independent publisher whose own reporting we read for this story.
- infoq.comHashiCorp Relased Terraform Google Cloud Provider 8.0 in General Availability
1 article · October 9, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Infrastructure as CodeFollow
- Cloud load balancingFollow