aks-engine/pkg/engine/params.go

164 строки
7.9 KiB
Go

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license.
package engine
import (
"fmt"
"github.com/Azure/aks-engine/pkg/api"
"github.com/Azure/aks-engine/pkg/helpers"
)
func getParameters(cs *api.ContainerService, generatorCode string, aksEngineVersion string) paramsMap {
properties := cs.Properties
location := cs.Location
parametersMap := paramsMap{}
cloudSpecConfig := cs.GetCloudSpecConfig()
// aksengine Parameters
addValue(parametersMap, "aksEngineVersion", aksEngineVersion)
// Master Parameters
addValue(parametersMap, "location", location)
// Identify Master distro
if properties.MasterProfile != nil {
addValue(parametersMap, "osImageOffer", cloudSpecConfig.OSImageConfig[properties.MasterProfile.Distro].ImageOffer)
addValue(parametersMap, "osImageSKU", cloudSpecConfig.OSImageConfig[properties.MasterProfile.Distro].ImageSku)
addValue(parametersMap, "osImagePublisher", cloudSpecConfig.OSImageConfig[properties.MasterProfile.Distro].ImagePublisher)
addValue(parametersMap, "osImageVersion", cloudSpecConfig.OSImageConfig[properties.MasterProfile.Distro].ImageVersion)
if properties.MasterProfile.ImageRef != nil {
addValue(parametersMap, "osImageName", properties.MasterProfile.ImageRef.Name)
addValue(parametersMap, "osImageResourceGroup", properties.MasterProfile.ImageRef.ResourceGroup)
}
}
addValue(parametersMap, "fqdnEndpointSuffix", cloudSpecConfig.EndpointConfig.ResourceManagerVMDNSSuffix)
addValue(parametersMap, "targetEnvironment", helpers.GetTargetEnv(cs.Location, cs.Properties.GetCustomCloudName()))
linuxProfile := properties.LinuxProfile
if linuxProfile != nil {
addValue(parametersMap, "linuxAdminUsername", linuxProfile.AdminUsername)
if linuxProfile.CustomNodesDNS != nil {
addValue(parametersMap, "dnsServer", linuxProfile.CustomNodesDNS.DNSServer)
}
}
if properties.MasterProfile != nil {
// masterEndpointDNSNamePrefix is the basis for storage account creation for k8s
addValue(parametersMap, "masterEndpointDNSNamePrefix", properties.MasterProfile.DNSPrefix)
if properties.MasterProfile.IsCustomVNET() {
addValue(parametersMap, "masterVnetSubnetID", properties.MasterProfile.VnetSubnetID)
if properties.MasterProfile.IsVirtualMachineScaleSets() {
addValue(parametersMap, "agentVnetSubnetID", properties.MasterProfile.AgentVnetSubnetID)
}
if properties.MasterProfile.VnetCidr != "" {
addValue(parametersMap, "vnetCidr", properties.MasterProfile.VnetCidr)
}
} else {
addValue(parametersMap, "masterSubnet", properties.MasterProfile.Subnet)
addValue(parametersMap, "agentSubnet", properties.MasterProfile.AgentSubnet)
if cs.Properties.FeatureFlags.IsFeatureEnabled("EnableIPv6DualStack") {
addValue(parametersMap, "masterSubnetIPv6", properties.MasterProfile.SubnetIPv6)
}
}
addValue(parametersMap, "firstConsecutiveStaticIP", properties.MasterProfile.FirstConsecutiveStaticIP)
addValue(parametersMap, "masterVMSize", properties.MasterProfile.VMSize)
if properties.MasterProfile.HasAvailabilityZones() {
addValue(parametersMap, "availabilityZones", properties.MasterProfile.AvailabilityZones)
}
}
if linuxProfile != nil {
addValue(parametersMap, "sshRSAPublicKey", linuxProfile.SSH.PublicKeys[0].KeyData)
for i, s := range linuxProfile.Secrets {
addValue(parametersMap, fmt.Sprintf("linuxKeyVaultID%d", i), s.SourceVault.ID)
for j, c := range s.VaultCertificates {
addValue(parametersMap, fmt.Sprintf("linuxKeyVaultID%dCertificateURL%d", i, j), c.CertificateURL)
}
}
}
// Kubernetes Parameters
assignKubernetesParameters(properties, parametersMap, cloudSpecConfig, generatorCode)
// Agent parameters
for _, agentProfile := range properties.AgentPoolProfiles {
addValue(parametersMap, fmt.Sprintf("%sCount", agentProfile.Name), agentProfile.Count)
addValue(parametersMap, fmt.Sprintf("%sVMSize", agentProfile.Name), agentProfile.VMSize)
if agentProfile.HasAvailabilityZones() {
addValue(parametersMap, fmt.Sprintf("%sAvailabilityZones", agentProfile.Name), agentProfile.AvailabilityZones)
}
if agentProfile.IsCustomVNET() {
addValue(parametersMap, fmt.Sprintf("%sVnetSubnetID", agentProfile.Name), agentProfile.VnetSubnetID)
} else {
addValue(parametersMap, fmt.Sprintf("%sSubnet", agentProfile.Name), agentProfile.Subnet)
}
if len(agentProfile.Ports) > 0 {
addValue(parametersMap, fmt.Sprintf("%sEndpointDNSNamePrefix", agentProfile.Name), agentProfile.DNSPrefix)
}
if !agentProfile.IsAvailabilitySets() && agentProfile.IsSpotScaleSet() {
addValue(parametersMap, fmt.Sprintf("%sScaleSetPriority", agentProfile.Name), agentProfile.ScaleSetPriority)
addValue(parametersMap, fmt.Sprintf("%sScaleSetEvictionPolicy", agentProfile.Name), agentProfile.ScaleSetEvictionPolicy)
}
// Unless distro is defined, default distro is configured by defaults#setAgentProfileDefaults
// Ignores Windows OS
if !(agentProfile.OSType == api.Windows) {
if agentProfile.ImageRef != nil {
addValue(parametersMap, fmt.Sprintf("%sosImageName", agentProfile.Name), agentProfile.ImageRef.Name)
addValue(parametersMap, fmt.Sprintf("%sosImageResourceGroup", agentProfile.Name), agentProfile.ImageRef.ResourceGroup)
}
addValue(parametersMap, fmt.Sprintf("%sosImageOffer", agentProfile.Name), cloudSpecConfig.OSImageConfig[agentProfile.Distro].ImageOffer)
addValue(parametersMap, fmt.Sprintf("%sosImageSKU", agentProfile.Name), cloudSpecConfig.OSImageConfig[agentProfile.Distro].ImageSku)
addValue(parametersMap, fmt.Sprintf("%sosImagePublisher", agentProfile.Name), cloudSpecConfig.OSImageConfig[agentProfile.Distro].ImagePublisher)
addValue(parametersMap, fmt.Sprintf("%sosImageVersion", agentProfile.Name), cloudSpecConfig.OSImageConfig[agentProfile.Distro].ImageVersion)
}
}
// Windows parameters
if properties.HasWindows() {
addValue(parametersMap, "windowsAdminUsername", properties.WindowsProfile.AdminUsername)
addSecret(parametersMap, "windowsAdminPassword", properties.WindowsProfile.AdminPassword, false)
if properties.WindowsProfile.HasCustomImage() {
addValue(parametersMap, "agentWindowsSourceUrl", properties.WindowsProfile.WindowsImageSourceURL)
} else if properties.WindowsProfile.HasImageRef() {
addValue(parametersMap, "agentWindowsImageResourceGroup", properties.WindowsProfile.ImageRef.ResourceGroup)
addValue(parametersMap, "agentWindowsImageName", properties.WindowsProfile.ImageRef.Name)
} else {
addValue(parametersMap, "agentWindowsPublisher", properties.WindowsProfile.WindowsPublisher)
addValue(parametersMap, "agentWindowsOffer", properties.WindowsProfile.WindowsOffer)
addValue(parametersMap, "agentWindowsSku", properties.WindowsProfile.GetWindowsSku())
addValue(parametersMap, "agentWindowsVersion", properties.WindowsProfile.ImageVersion)
}
addValue(parametersMap, "windowsDockerVersion", properties.WindowsProfile.GetWindowsDockerVersion())
for i, s := range properties.WindowsProfile.Secrets {
addValue(parametersMap, fmt.Sprintf("windowsKeyVaultID%d", i), s.SourceVault.ID)
for j, c := range s.VaultCertificates {
addValue(parametersMap, fmt.Sprintf("windowsKeyVaultID%dCertificateURL%d", i, j), c.CertificateURL)
addValue(parametersMap, fmt.Sprintf("windowsKeyVaultID%dCertificateStore%d", i, j), c.CertificateStore)
}
}
addValue(parametersMap, "defaultContainerdRuntimeHandler", properties.WindowsProfile.GetWindowsDefaultRuntimeHandler())
addValue(parametersMap, "hypervRuntimeHandlers", properties.WindowsProfile.GetWindowsHypervRuntimeHandlers())
}
for _, extension := range properties.ExtensionProfiles {
if extension.ExtensionParametersKeyVaultRef != nil {
addKeyvaultReference(parametersMap, fmt.Sprintf("%sParameters", extension.Name),
extension.ExtensionParametersKeyVaultRef.VaultID,
extension.ExtensionParametersKeyVaultRef.SecretName,
extension.ExtensionParametersKeyVaultRef.SecretVersion)
} else {
addValue(parametersMap, fmt.Sprintf("%sParameters", extension.Name), extension.ExtensionParameters)
}
}
return parametersMap
}