Upgrade Infrastructure tools and software dependencies
Infrastructure software versions for the following components need to be upgraded to the latest releases.
- Terraform (0.12.29 -> 0.14.3)
- Terraform AzureRM Provider (2.33.0 -> 2.41.0)
- Terraform AzureAD Provider (1.0.0 -> 1.1.1)
- Terraform Kubernetes Provider (1.11.3 -> 1.13.3)
- Terraform Helm Provider (1.2.3 -> 2.0.1)
- Application Gateway Ingress Controller (1.2.0 -> 1.3.0)
- Jetstack Certificate Manager (0.16.1 -> 1.1.0)
- Flux CD (1.5.0 -> 1.6.0)
- Keda (1.4.2 -> 1.5.0)
- Key Vault CSI Driver (0.0.13 -> 0.0.15)
- Azure Active Directory Pod Identity (2.0.0 -> 3.0.0)
Upgrade Path
Testing for an Upgrade Path to accomplish the Upgrades require the following process.
- Upgrade Terraform from Version 0.12.29 --> 0.13.5.
This will require a single MR that updates the Pipelines to use the new Terraform Version. The state objects should be naturally upgraded. Manual environments would require a tf init, tf plan and tf apply on all 3 templates.
- Upgrade Terraform from Version 0.13.5 --> 0.14.3
This will require a single MR that updates the Pipelines to use the new Terraform Version. The state objects should be naturally upgraded. Manual environments would require a tf init, tf plan and tf apply on all 3 templates.
Warning will occur on this version regarding deprecated provisioning blocks
Warning: Version constraints inside provider configuration blocks are deprecated
on main.tf line 41, in provider "azurerm":
41: version = "=2.33.0"
Terraform 0.13 and earlier allowed provider version constraints inside the
provider configuration block, but that is now deprecated and will be removed
in a future version of Terraform. To silence this warning, move the provider
version constraint into the required_providers block.
- Now the full MR can be moved in that will accomplish the provider upgrades.
This will require a tf init -upgrade flag to be set for the provider version to allow the change. Manual environments would require a tf init -upgrade, tf plan and tf apply on all 3 templates
Acceptance Criteria
- All Module and Template Unit Tests Should Pass.
- All Template Integration Tests Should Pass.
- Application Should Load and Function Successfully.
- Documentation Should be updated.
- This will be an infrastructure major version change but identify and document if any upgrade path is possible.