Skip to content

Commit c272dad

Browse files
ms-henglujkroepkesreallymatt
authored
azurerm_kubernetes_cluster: Support for upgrade path from Kubenet/Azure CNI to Azure CNI Overlay (#30959)
Co-authored-by: Jan-Otto Kröpke <joe@cloudeteer.de> Co-authored-by: Jan-Otto Kröpke <github@jkroepke.de> Co-authored-by: Jan-Otto Kröpke <mail@jkroepke.de> Co-authored-by: sreallymatt <106555974+sreallymatt@users.noreply.github.com>
1 parent ffb8134 commit c272dad

File tree

3 files changed

+434
-7
lines changed

3 files changed

+434
-7
lines changed

internal/services/containers/kubernetes_cluster_network_resource_test.go

Lines changed: 382 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,108 @@ func TestAccKubernetesCluster_apiServerVnetIntegrationManagedVnet(t *testing.T)
11641164
})
11651165
}
11661166

1167+
func TestAccKubernetesCluster_upgradeAzureCNIToOverlay(t *testing.T) {
1168+
data := acceptance.BuildTestData(t, "azurerm_kubernetes_cluster", "test")
1169+
r := KubernetesClusterResource{}
1170+
1171+
data.ResourceTest(t, r, []acceptance.TestStep{
1172+
{
1173+
Config: r.upgradeAzureCNIToOverlayBase(data),
1174+
Check: acceptance.ComposeTestCheckFunc(
1175+
check.That(data.ResourceName).ExistsInAzure(r),
1176+
),
1177+
},
1178+
data.ImportStep(),
1179+
{
1180+
Config: r.upgradeAzureCNIToOverlayComplete(data),
1181+
Check: acceptance.ComposeTestCheckFunc(
1182+
check.That(data.ResourceName).ExistsInAzure(r),
1183+
),
1184+
},
1185+
data.ImportStep(),
1186+
})
1187+
}
1188+
1189+
func TestAccKubernetesCluster_upgradeAzureCNIToOverlayWithCilium(t *testing.T) {
1190+
data := acceptance.BuildTestData(t, "azurerm_kubernetes_cluster", "test")
1191+
r := KubernetesClusterResource{}
1192+
1193+
data.ResourceTest(t, r, []acceptance.TestStep{
1194+
{
1195+
Config: r.upgradeAzureCNIToOverlayBase(data),
1196+
Check: acceptance.ComposeTestCheckFunc(
1197+
check.That(data.ResourceName).ExistsInAzure(r),
1198+
),
1199+
},
1200+
data.ImportStep(),
1201+
{
1202+
Config: r.upgradeAzureCNIToOverlayComplete(data),
1203+
Check: acceptance.ComposeTestCheckFunc(
1204+
check.That(data.ResourceName).ExistsInAzure(r),
1205+
),
1206+
},
1207+
data.ImportStep(),
1208+
{
1209+
Config: r.upgradeAzureCNIToOverlayWithCilium(data),
1210+
Check: acceptance.ComposeTestCheckFunc(
1211+
check.That(data.ResourceName).ExistsInAzure(r),
1212+
),
1213+
},
1214+
data.ImportStep(),
1215+
})
1216+
}
1217+
1218+
func TestAccKubernetesCluster_upgradeKubenetToAzureCNIOverlay(t *testing.T) {
1219+
data := acceptance.BuildTestData(t, "azurerm_kubernetes_cluster", "test")
1220+
r := KubernetesClusterResource{}
1221+
1222+
data.ResourceTest(t, r, []acceptance.TestStep{
1223+
{
1224+
Config: r.upgradeKubenetBase(data),
1225+
Check: acceptance.ComposeTestCheckFunc(
1226+
check.That(data.ResourceName).ExistsInAzure(r),
1227+
),
1228+
},
1229+
data.ImportStep(),
1230+
{
1231+
Config: r.upgradeKubenetToAzureCNIOverlay(data),
1232+
Check: acceptance.ComposeTestCheckFunc(
1233+
check.That(data.ResourceName).ExistsInAzure(r),
1234+
),
1235+
},
1236+
data.ImportStep(),
1237+
})
1238+
}
1239+
1240+
func TestAccKubernetesCluster_upgradeKubenetToAzureCNIOverlayWithCilium(t *testing.T) {
1241+
data := acceptance.BuildTestData(t, "azurerm_kubernetes_cluster", "test")
1242+
r := KubernetesClusterResource{}
1243+
1244+
data.ResourceTest(t, r, []acceptance.TestStep{
1245+
{
1246+
Config: r.upgradeKubenetBase(data),
1247+
Check: acceptance.ComposeTestCheckFunc(
1248+
check.That(data.ResourceName).ExistsInAzure(r),
1249+
),
1250+
},
1251+
data.ImportStep(),
1252+
{
1253+
Config: r.upgradeKubenetToAzureCNIOverlay(data),
1254+
Check: acceptance.ComposeTestCheckFunc(
1255+
check.That(data.ResourceName).ExistsInAzure(r),
1256+
),
1257+
},
1258+
data.ImportStep(),
1259+
{
1260+
Config: r.upgradeKubenetToAzureCNIOverlayWithCilium(data),
1261+
Check: acceptance.ComposeTestCheckFunc(
1262+
check.That(data.ResourceName).ExistsInAzure(r),
1263+
),
1264+
},
1265+
data.ImportStep(),
1266+
})
1267+
}
1268+
11671269
func (KubernetesClusterResource) advancedNetworkingConfig(data acceptance.TestData, networkPlugin string) string {
11681270
return fmt.Sprintf(`
11691271
provider "azurerm" {
@@ -4686,3 +4788,283 @@ resource "azurerm_kubernetes_cluster" "test" {
46864788
}
46874789
`, data.Locations.Primary, data.RandomInteger)
46884790
}
4791+
4792+
func (KubernetesClusterResource) upgradeAzureCNIToOverlayBase(data acceptance.TestData) string {
4793+
return fmt.Sprintf(`
4794+
provider "azurerm" {
4795+
features {}
4796+
}
4797+
4798+
resource "azurerm_resource_group" "test" {
4799+
name = "acctestRG-aks-%[2]d"
4800+
location = "%[1]s"
4801+
}
4802+
4803+
resource "azurerm_virtual_network" "test" {
4804+
name = "acctestRG-vnet-%[2]d"
4805+
address_space = ["10.0.0.0/8"]
4806+
location = azurerm_resource_group.test.location
4807+
resource_group_name = azurerm_resource_group.test.name
4808+
}
4809+
4810+
resource "azurerm_subnet" "test" {
4811+
name = "acctestRG-subnet-%[2]d"
4812+
resource_group_name = azurerm_resource_group.test.name
4813+
virtual_network_name = azurerm_virtual_network.test.name
4814+
address_prefixes = ["10.10.0.0/16"]
4815+
}
4816+
4817+
resource "azurerm_kubernetes_cluster" "test" {
4818+
name = "acctestaks%[2]d"
4819+
location = azurerm_resource_group.test.location
4820+
resource_group_name = azurerm_resource_group.test.name
4821+
dns_prefix = "acctestaks%[2]d"
4822+
4823+
default_node_pool {
4824+
name = "default"
4825+
node_count = 1
4826+
vm_size = "Standard_DS2_v2"
4827+
vnet_subnet_id = azurerm_subnet.test.id
4828+
upgrade_settings {
4829+
max_surge = "10%%"
4830+
}
4831+
}
4832+
4833+
identity {
4834+
type = "SystemAssigned"
4835+
}
4836+
4837+
network_profile {
4838+
network_plugin = "azure"
4839+
}
4840+
}
4841+
`, data.Locations.Primary, data.RandomInteger)
4842+
}
4843+
4844+
func (KubernetesClusterResource) upgradeAzureCNIToOverlayComplete(data acceptance.TestData) string {
4845+
return fmt.Sprintf(`
4846+
provider "azurerm" {
4847+
features {}
4848+
}
4849+
4850+
resource "azurerm_resource_group" "test" {
4851+
name = "acctestRG-aks-%[2]d"
4852+
location = "%[1]s"
4853+
}
4854+
4855+
resource "azurerm_virtual_network" "test" {
4856+
name = "acctestRG-vnet-%[2]d"
4857+
address_space = ["10.0.0.0/8"]
4858+
location = azurerm_resource_group.test.location
4859+
resource_group_name = azurerm_resource_group.test.name
4860+
}
4861+
4862+
resource "azurerm_subnet" "test" {
4863+
name = "acctestRG-subnet-%[2]d"
4864+
resource_group_name = azurerm_resource_group.test.name
4865+
virtual_network_name = azurerm_virtual_network.test.name
4866+
address_prefixes = ["10.10.0.0/16"]
4867+
}
4868+
4869+
resource "azurerm_kubernetes_cluster" "test" {
4870+
name = "acctestaks%[2]d"
4871+
location = azurerm_resource_group.test.location
4872+
resource_group_name = azurerm_resource_group.test.name
4873+
dns_prefix = "acctestaks%[2]d"
4874+
4875+
default_node_pool {
4876+
name = "default"
4877+
node_count = 1
4878+
vm_size = "Standard_DS2_v2"
4879+
vnet_subnet_id = azurerm_subnet.test.id
4880+
upgrade_settings {
4881+
max_surge = "10%%"
4882+
}
4883+
}
4884+
4885+
identity {
4886+
type = "SystemAssigned"
4887+
}
4888+
4889+
network_profile {
4890+
pod_cidr = "192.168.0.0/16"
4891+
network_plugin = "azure"
4892+
network_plugin_mode = "overlay"
4893+
}
4894+
}
4895+
`, data.Locations.Primary, data.RandomInteger)
4896+
}
4897+
4898+
func (KubernetesClusterResource) upgradeAzureCNIToOverlayWithCilium(data acceptance.TestData) string {
4899+
return fmt.Sprintf(`
4900+
provider "azurerm" {
4901+
features {}
4902+
}
4903+
4904+
resource "azurerm_resource_group" "test" {
4905+
name = "acctestRG-aks-%[2]d"
4906+
location = "%[1]s"
4907+
}
4908+
4909+
resource "azurerm_virtual_network" "test" {
4910+
name = "acctestRG-vnet-%[2]d"
4911+
address_space = ["10.0.0.0/8"]
4912+
location = azurerm_resource_group.test.location
4913+
resource_group_name = azurerm_resource_group.test.name
4914+
}
4915+
4916+
resource "azurerm_subnet" "test" {
4917+
name = "acctestRG-subnet-%[2]d"
4918+
resource_group_name = azurerm_resource_group.test.name
4919+
virtual_network_name = azurerm_virtual_network.test.name
4920+
address_prefixes = ["10.10.0.0/16"]
4921+
}
4922+
4923+
resource "azurerm_kubernetes_cluster" "test" {
4924+
name = "acctestaks%[2]d"
4925+
location = azurerm_resource_group.test.location
4926+
resource_group_name = azurerm_resource_group.test.name
4927+
dns_prefix = "acctestaks%[2]d"
4928+
4929+
default_node_pool {
4930+
name = "default"
4931+
node_count = 1
4932+
vm_size = "Standard_DS2_v2"
4933+
vnet_subnet_id = azurerm_subnet.test.id
4934+
upgrade_settings {
4935+
max_surge = "10%%"
4936+
}
4937+
}
4938+
4939+
identity {
4940+
type = "SystemAssigned"
4941+
}
4942+
4943+
network_profile {
4944+
pod_cidr = "192.168.0.0/16"
4945+
network_plugin = "azure"
4946+
network_plugin_mode = "overlay"
4947+
network_policy = "cilium"
4948+
network_data_plane = "cilium"
4949+
}
4950+
}
4951+
`, data.Locations.Primary, data.RandomInteger)
4952+
}
4953+
4954+
func (KubernetesClusterResource) upgradeKubenetBase(data acceptance.TestData) string {
4955+
return fmt.Sprintf(`
4956+
provider "azurerm" {
4957+
features {}
4958+
}
4959+
4960+
resource "azurerm_resource_group" "test" {
4961+
name = "acctestRG-aks-%[2]d"
4962+
location = "%[1]s"
4963+
}
4964+
4965+
resource "azurerm_kubernetes_cluster" "test" {
4966+
name = "acctestaks%[2]d"
4967+
location = azurerm_resource_group.test.location
4968+
resource_group_name = azurerm_resource_group.test.name
4969+
dns_prefix = "acctestaks%[2]d"
4970+
4971+
default_node_pool {
4972+
name = "default"
4973+
node_count = 1
4974+
vm_size = "Standard_DS2_v2"
4975+
upgrade_settings {
4976+
max_surge = "10%%"
4977+
}
4978+
}
4979+
4980+
identity {
4981+
type = "SystemAssigned"
4982+
}
4983+
4984+
network_profile {
4985+
network_plugin = "kubenet"
4986+
pod_cidr = "172.16.0.0/16"
4987+
}
4988+
}
4989+
`, "westcentralus", data.RandomInteger)
4990+
}
4991+
4992+
func (KubernetesClusterResource) upgradeKubenetToAzureCNIOverlay(data acceptance.TestData) string {
4993+
return fmt.Sprintf(`
4994+
provider "azurerm" {
4995+
features {}
4996+
}
4997+
4998+
resource "azurerm_resource_group" "test" {
4999+
name = "acctestRG-aks-%[2]d"
5000+
location = "%[1]s"
5001+
}
5002+
5003+
resource "azurerm_kubernetes_cluster" "test" {
5004+
name = "acctestaks%[2]d"
5005+
location = azurerm_resource_group.test.location
5006+
resource_group_name = azurerm_resource_group.test.name
5007+
dns_prefix = "acctestaks%[2]d"
5008+
5009+
default_node_pool {
5010+
name = "default"
5011+
node_count = 1
5012+
vm_size = "Standard_DS2_v2"
5013+
upgrade_settings {
5014+
max_surge = "10%%"
5015+
}
5016+
}
5017+
5018+
identity {
5019+
type = "SystemAssigned"
5020+
}
5021+
5022+
network_profile {
5023+
pod_cidr = "172.16.0.0/16"
5024+
network_plugin = "azure"
5025+
network_plugin_mode = "overlay"
5026+
}
5027+
}
5028+
`, "westcentralus", data.RandomInteger)
5029+
}
5030+
5031+
func (KubernetesClusterResource) upgradeKubenetToAzureCNIOverlayWithCilium(data acceptance.TestData) string {
5032+
return fmt.Sprintf(`
5033+
provider "azurerm" {
5034+
features {}
5035+
}
5036+
5037+
resource "azurerm_resource_group" "test" {
5038+
name = "acctestRG-aks-%[2]d"
5039+
location = "%[1]s"
5040+
}
5041+
5042+
resource "azurerm_kubernetes_cluster" "test" {
5043+
name = "acctestaks%[2]d"
5044+
location = azurerm_resource_group.test.location
5045+
resource_group_name = azurerm_resource_group.test.name
5046+
dns_prefix = "acctestaks%[2]d"
5047+
5048+
default_node_pool {
5049+
name = "default"
5050+
node_count = 1
5051+
vm_size = "Standard_DS2_v2"
5052+
upgrade_settings {
5053+
max_surge = "10%%"
5054+
}
5055+
}
5056+
5057+
identity {
5058+
type = "SystemAssigned"
5059+
}
5060+
5061+
network_profile {
5062+
pod_cidr = "172.16.0.0/16"
5063+
network_plugin = "azure"
5064+
network_plugin_mode = "overlay"
5065+
network_policy = "cilium"
5066+
network_data_plane = "cilium"
5067+
}
5068+
}
5069+
`, "westcentralus", data.RandomInteger)
5070+
}

0 commit comments

Comments
 (0)