通过 Terraform APIM STv1 到 STv2 迁移

问题描述 投票:0回答:1

是否有人能够仅使用 Terraform 将在 STv1 平台上运行的现有 APIM 实例迁移到 STv2(禁止通过 Azure 门户进行手动更新)? 我们可以创建全新的 STv2 实例,但我们似乎找不到任何有关迁移过程的文档,而且我们的努力(甚至包括 Hashicorp 支持)也没有取得成果。 一些背景:

    我们使用注入到内部模式 VNET 中的开发人员和高级 APIM 实例(公共 IP、网络安全组、API 版本等,所有 STv2 前提条件均已正确涵盖)
  • AzureRM 2.98 和 3.0 提供程序已进行测试,但它们都无法将 APIM 迁移到新子网
  • 仅允许 Terraform + Azure DevOps 更改
任何有关工作和测试过程的意见将不胜感激。

谢谢!

更新: 这是我正在使用的 APIM 代码,它对于我的测试用例来说非常基本。我的理解是,在涵盖 STv2 要求(我做到了)之后,将 subnet_id 更新为新的应该将 APIM 升级为子网移动的一部分,但这种情况不会发生。尽管计划显示正确的子网更新并应用成功完成,但它只是不会将实例移动到新子网。

´´´´ ############ APIM Configuration ############## resource "azurerm_api_management" "apim" { depends_on = [azurerm_public_ip.ip, azurerm_subnet_network_security_group_association.nsg2subnet] name = "apim-${var.api_management["name"]}" # prefix with apim- location = var.location min_api_version = "2021-01-01-preview" # min version required for STV2 resource_group_name = var.rg_name public_ip_address_id = azurerm_public_ip.ip.id publisher_name = var.api_management["publisher_name"] publisher_email = var.api_management["publisher_email"] sku_name = var.api_management["sku_name"] virtual_network_type = "Internal" virtual_network_configuration { subnet_id = var.api_management["subnet_id"] } tenant_access { enabled = var.enable_management_api_access } zones = [] dynamic "additional_location" { for_each = var.multiregion_configs content { location = additional_location.value["location"] virtual_network_configuration { subnet_id = additional_location.value["subnet_id"] } } } dynamic "identity" { for_each = [var.identity] content { type = identity.value["type"] identity_ids = identity.value["type"] == "UserAssigned" || identity.value["type"] == "SystemAssigned, UserAssigned" ? [identity.value["id"]] : null } } policy { xml_content = coalesce(var.policy, local.default_policy) } security { tls_rsa_with_aes128_gcm_sha256_ciphers_enabled = true } tags = local.tags } ´´´´
    
terraform azure-api-management terraform-provider-azure apim
1个回答
0
投票
截至目前,需要手动干预才能通过 Terraform 将 APIM STv1 迁移到 STv2。此迁移无法自动完成。

使用 Terraform 将复杂的 Azure API 管理 (APIM) 实例从 STv1 迁移到 STv2 平台可能会带来一些挑战。对于内部模式 VNET 中的开发人员和高级 APIM 实例尤其如此。

了解要求和潜在挑战:

APIM从STv1迁移到STv2:这意味着修改APIM服务的基本框架,同时保持当前设置和连接不变。 直接迁移支持:所面临挑战的一个可能解释是 Terraform 没有提供将 APIM 实例从 STv1 升级到 STv2 的直接方法。

我的地形配置:

provider "azurerm" { features {} } resource "azurerm_resource_group" "example" { name = "demvksb1-rg" location = "East US" } resource "azurerm_api_management" "example_stv1" { name = "demvksb1-apim-stv1" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name publisher_name = "My Company" publisher_email = "[email protected]" sku_name = "Developer_1" # Choose the appropriate SKU }

输出:

enter image description here

当我尝试将现有的 Azure API 管理 (APIM) 实例从标准层 V1 (STv1) 迁移到标准层 V2 (STv2) 时出现问题

问题出在这个

enter image description here

由于处理有状态资源转换和特定 Azure 服务细微差别的限制,Terraform 可能难以应对复杂的 Azure 迁移,通常需要手动干预或补充脚本。

参考:

https://learn.microsoft.com/en-us/azure/api-management/migrate-stv1-to-stv2?tabs=portal

https://techcommunity.microsoft.com/t5/fasttrack-for-azure/migration-api-management-platform-version-from-stv1-to-stv2/ba-p/3951108

https://github.com/hashicorp/terraform-provider-azurerm/issues/20939

https://github.com/MicrosoftDocs/azure-docs/issues/116427

© www.soinside.com 2019 - 2024. All rights reserved.