|
| 1 | +# Upgrading to v7.0 |
| 2 | + |
| 3 | +The v7.0 release of *kubernetes-engine* is a backwards incompatible |
| 4 | +release. |
| 5 | + |
| 6 | +## Provider Version |
| 7 | +Support for Google provider versions older than v3.1 has been removed due to the introduction of Surge Upgrade features. |
| 8 | + |
| 9 | +## Surge Upgrades (beta) |
| 10 | +In order to support [Surge Upgrades](https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades#surge) on beta clusters, an `upgrade_settings` block has been added to all node pools. This will show up in `terraform plan`: |
| 11 | + |
| 12 | +``` |
| 13 | + + upgrade_settings { |
| 14 | + + max_surge = 1 |
| 15 | + + max_unavailable = 0 |
| 16 | + } |
| 17 | +``` |
| 18 | + |
| 19 | +The new default behavior will upgrade 1 node at a time. You can tune this behaviour using the new `max_surge` and `max_unavailable` settings on the node pool input. |
| 20 | + |
| 21 | +Note that changing upgrade settings can be done in-place (without forcing a node pool recreation). |
| 22 | + |
| 23 | +### Node Pool for_each |
| 24 | +The `google_container_node_pool` resource has been updated to use `for_each` instead of `count`. This allows adding/removing node pools without causing a diff on unrelated node pools. |
| 25 | + |
| 26 | +Updating to this new format requires running a state migration. Note that this migration **must** be run with **Terraform v0.12.20**. You can use a [script](../helpers/migrate7.py) we provided to automatically make the required state migration. |
| 27 | + |
| 28 | +1. Download the script |
| 29 | + |
| 30 | + ```sh |
| 31 | + curl -O https://raw.githubusercontent.com/terraform-google-modules/terraform-google-kubernetes-engine/v7.0.0/helpers/migrate7.py |
| 32 | + chmod +x migrate7.py |
| 33 | + ``` |
| 34 | + |
| 35 | +2. Run the script in dryrun mode to confirm the expected changes: |
| 36 | + |
| 37 | + ```sh |
| 38 | + $ ./migrate7.py --dryrun |
| 39 | +
|
| 40 | + ---- Migrating the following modules: |
| 41 | + -- module.gke-cluster-dev.module.gke |
| 42 | + ---- Commands to run: |
| 43 | + terraform state mv -state terraform.tfstate "module.gke-cluster-dev.module.gke.google_container_cluster.zonal_primary[0]" "module.gke-cluster-dev.module.gke.google_container_cluster.primary[0]" |
| 44 | + terraform state mv "module.gke-cluster-dev.module.gke.google_container_node_pool.zonal_pools[0]" "module.gke-cluster-dev.module.gke.google_container_node_pool.pools[0]" |
| 45 | + ``` |
| 46 | + |
| 47 | +3. Execute the migration script |
| 48 | + |
| 49 | + ```sh |
| 50 | + $ ./migrate7.py |
| 51 | +
|
| 52 | + ---- Migrating the following modules: |
| 53 | + -- module.gke-cluster-dev.module.gke |
| 54 | + ---- Commands to run: |
| 55 | + Move "module.gke-cluster-dev.module.gke.google_container_cluster.zonal_primary[0]" to "module.gke-cluster-dev.module.gke.google_container_cluster.primary[0]" |
| 56 | + Successfully moved 1 object(s). |
| 57 | + Move "module.gke-cluster-dev.module.gke.google_container_node_pool.zonal_pools[0]" to "module.gke-cluster-dev.module.gke.google_container_node_pool.pools[0]" |
| 58 | + Successfully moved 1 object(s). |
| 59 | + Move "module.gke-cluster-dev.module.gke.null_resource.wait_for_zonal_cluster" to "module.gke-cluster-dev.module.gke.null_resource.wait_for_cluster" |
| 60 | + Successfully moved 1 object(s). |
| 61 | + ``` |
| 62 | + |
| 63 | +4. Run `terraform plan` to confirm no changes are expected. |
0 commit comments