Skip to content
This repository was archived by the owner on Jan 11, 2023. It is now read-only.

Commit 797dd91

Browse files
committed
Merge pull request #2327 from JunSun17/cni-upgrade-issue
Addressing upgrade issues against v0.12.0 and v0.13.0 clusters. (cherry picked from commit b550578)
1 parent 470a5cc commit 797dd91

File tree

8 files changed

+33
-29
lines changed

8 files changed

+33
-29
lines changed

cmd/deploy.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ func (dc *deployCmd) run() error {
254254
log.Fatalln("failed to initialize template generator: %s", err.Error())
255255
}
256256

257-
template, parameters, certsgenerated, err := templateGenerator.GenerateTemplate(dc.containerService, acsengine.DefaultGeneratorCode)
257+
template, parameters, certsgenerated, err := templateGenerator.GenerateTemplate(dc.containerService, acsengine.DefaultGeneratorCode, false)
258258
if err != nil {
259259
log.Fatalf("error generating template %s: %s", dc.apimodelPath, err.Error())
260260
os.Exit(1)

cmd/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ func (gc *generateCmd) run() error {
144144
log.Fatalln("failed to initialize template generator: %s", err.Error())
145145
}
146146

147-
template, parameters, certsGenerated, err := templateGenerator.GenerateTemplate(gc.containerService, acsengine.DefaultGeneratorCode)
147+
template, parameters, certsGenerated, err := templateGenerator.GenerateTemplate(gc.containerService, acsengine.DefaultGeneratorCode, false)
148148
if err != nil {
149149
log.Fatalf("error generating template %s: %s", gc.apimodelPath, err.Error())
150150
os.Exit(1)

cmd/scale.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ func (sc *scaleCmd) run(cmd *cobra.Command, args []string) error {
274274

275275
sc.containerService.Properties.AgentPoolProfiles = []*api.AgentPoolProfile{sc.agentPool}
276276

277-
template, parameters, _, err := templateGenerator.GenerateTemplate(sc.containerService, acsengine.DefaultGeneratorCode)
277+
template, parameters, _, err := templateGenerator.GenerateTemplate(sc.containerService, acsengine.DefaultGeneratorCode, false)
278278
if err != nil {
279279
log.Fatalf("error generating template %s: %s", sc.apiModelPath, err.Error())
280280
os.Exit(1)

pkg/acsengine/defaults.go

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,12 @@ var (
239239
)
240240

241241
// SetPropertiesDefaults for the container Properties, returns true if certs are generated
242-
func SetPropertiesDefaults(cs *api.ContainerService) (bool, error) {
242+
func SetPropertiesDefaults(cs *api.ContainerService, isUpgrade bool) (bool, error) {
243243
properties := cs.Properties
244244

245245
setOrchestratorDefaults(cs)
246246

247-
setMasterNetworkDefaults(properties)
247+
setMasterNetworkDefaults(properties, isUpgrade)
248248

249249
setHostedMasterNetworkDefaults(properties)
250250

@@ -456,7 +456,7 @@ func setHostedMasterNetworkDefaults(a *api.Properties) {
456456
}
457457

458458
// SetMasterNetworkDefaults for masters
459-
func setMasterNetworkDefaults(a *api.Properties) {
459+
func setMasterNetworkDefaults(a *api.Properties, isUpgrade bool) {
460460
if a.MasterProfile == nil {
461461
return
462462
}
@@ -471,17 +471,29 @@ func setMasterNetworkDefaults(a *api.Properties) {
471471
if a.OrchestratorProfile.IsAzureCNI() {
472472
// When VNET integration is enabled, all masters, agents and pods share the same large subnet.
473473
a.MasterProfile.Subnet = a.OrchestratorProfile.KubernetesConfig.ClusterSubnet
474-
a.MasterProfile.FirstConsecutiveStaticIP = getFirstConsecutiveStaticIPAddress(a.MasterProfile.Subnet)
474+
// FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists
475+
if !isUpgrade || len(a.MasterProfile.FirstConsecutiveStaticIP) == 0 {
476+
a.MasterProfile.FirstConsecutiveStaticIP = getFirstConsecutiveStaticIPAddress(a.MasterProfile.Subnet)
477+
}
475478
} else {
476479
a.MasterProfile.Subnet = DefaultKubernetesMasterSubnet
477-
a.MasterProfile.FirstConsecutiveStaticIP = DefaultFirstConsecutiveKubernetesStaticIP
480+
// FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists
481+
if !isUpgrade || len(a.MasterProfile.FirstConsecutiveStaticIP) == 0 {
482+
a.MasterProfile.FirstConsecutiveStaticIP = DefaultFirstConsecutiveKubernetesStaticIP
483+
}
478484
}
479485
} else if a.HasWindows() {
480486
a.MasterProfile.Subnet = DefaultSwarmWindowsMasterSubnet
481-
a.MasterProfile.FirstConsecutiveStaticIP = DefaultSwarmWindowsFirstConsecutiveStaticIP
487+
// FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists
488+
if !isUpgrade || len(a.MasterProfile.FirstConsecutiveStaticIP) == 0 {
489+
a.MasterProfile.FirstConsecutiveStaticIP = DefaultSwarmWindowsFirstConsecutiveStaticIP
490+
}
482491
} else {
483492
a.MasterProfile.Subnet = DefaultMasterSubnet
484-
a.MasterProfile.FirstConsecutiveStaticIP = DefaultFirstConsecutiveStaticIP
493+
// FirstConsecutiveStaticIP is not reset if it is upgrade and some value already exists
494+
if !isUpgrade || len(a.MasterProfile.FirstConsecutiveStaticIP) == 0 {
495+
a.MasterProfile.FirstConsecutiveStaticIP = DefaultFirstConsecutiveStaticIP
496+
}
485497
}
486498
}
487499

pkg/acsengine/engine.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ func InitializeTemplateGenerator(ctx Context, classicMode bool) (*TemplateGenera
194194
}
195195

196196
// GenerateTemplate generates the template from the API Model
197-
func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerService, generatorCode string) (templateRaw string, parametersRaw string, certsGenerated bool, err error) {
197+
func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerService, generatorCode string, isUpgrade bool) (templateRaw string, parametersRaw string, certsGenerated bool, err error) {
198198
// named return values are used in order to set err in case of a panic
199199
templateRaw = ""
200200
parametersRaw = ""
@@ -209,7 +209,7 @@ func (t *TemplateGenerator) GenerateTemplate(containerService *api.ContainerServ
209209
defer func() {
210210
properties.OrchestratorProfile.OrchestratorVersion = orchVersion
211211
}()
212-
if certsGenerated, err = SetPropertiesDefaults(containerService); err != nil {
212+
if certsGenerated, err = SetPropertiesDefaults(containerService, isUpgrade); err != nil {
213213
return templateRaw, parametersRaw, certsGenerated, err
214214
}
215215

pkg/acsengine/engine_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ func TestExpected(t *testing.T) {
7575
continue
7676
}
7777

78-
armTemplate, params, certsGenerated, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode)
78+
armTemplate, params, certsGenerated, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode, false)
7979
if err != nil {
8080
t.Error(fmt.Errorf("error in file %s: %s", tuple.APIModelFilename, err.Error()))
8181
continue
@@ -99,7 +99,7 @@ func TestExpected(t *testing.T) {
9999
}
100100

101101
for i := 0; i < 3; i++ {
102-
armTemplate, params, certsGenerated, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode)
102+
armTemplate, params, certsGenerated, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode, false)
103103
if err != nil {
104104
t.Error(fmt.Errorf("error in file %s: %s", tuple.APIModelFilename, err.Error()))
105105
continue
@@ -292,7 +292,7 @@ func TestTemplateOutputPresence(t *testing.T) {
292292
if err != nil {
293293
t.Fatalf("Failed to load container service from file: %v", err)
294294
}
295-
armTemplate, _, _, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode)
295+
armTemplate, _, _, err := templateGenerator.GenerateTemplate(containerService, DefaultGeneratorCode, false)
296296
if err != nil {
297297
t.Fatalf("Failed to generate arm template: %v", err)
298298
}

pkg/acsengine/transform/transform.go

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -297,21 +297,13 @@ func (t *Transformer) NormalizeResourcesForK8sMasterUpgrade(logger *logrus.Entry
297297
if strings.Contains(resourceName, "variables('masterVMNamePrefix')") {
298298
continue
299299
} else {
300-
// agent NICs remove depends on master NICs.
301-
dependsOn := resourceMap[dependsOnFieldName].([]interface{})
302-
var newDependsOn []interface{}
303-
for _, depResource := range dependsOn {
304-
dep, ok := depResource.(string)
305-
if !ok {
306-
logger.Warnf("Template improperly formatted for field name: %s", dependsOnFieldName)
307-
continue
308-
}
309-
310-
if !strings.Contains(dep, "variables('masterNICNamePrefix')") {
311-
newDependsOn = append(newDependsOn, depResource)
300+
// Remove agent NICs if upgrade master nodes
301+
if agentPoolsToPreserve == nil {
302+
logger.Infoln(fmt.Sprintf("Removing nic: %s from template", resourceName))
303+
if len(filteredResources) > 0 {
304+
filteredResources = filteredResources[:len(filteredResources)-1]
312305
}
313306
}
314-
resourceMap[dependsOnFieldName] = newDependsOn
315307
continue
316308
}
317309
}

pkg/operations/kubernetesupgrade/upgrader.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ func (ku *Upgrader) generateUpgradeTemplate(upgradeContainerService *api.Contain
385385

386386
var templateJSON string
387387
var parametersJSON string
388-
if templateJSON, parametersJSON, _, err = templateGenerator.GenerateTemplate(upgradeContainerService, acsengine.DefaultGeneratorCode); err != nil {
388+
if templateJSON, parametersJSON, _, err = templateGenerator.GenerateTemplate(upgradeContainerService, acsengine.DefaultGeneratorCode, true); err != nil {
389389
return nil, nil, ku.Translator.Errorf("error generating upgrade template: %s", err.Error())
390390
}
391391

0 commit comments

Comments
 (0)