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

Commit

Permalink
Add support for using the Azure Instance Metadata service. (#1036)
Browse files Browse the repository at this point in the history
  • Loading branch information
brendandburns authored and seanknox committed Jul 20, 2017
1 parent 9c25a36 commit 096c771
Show file tree
Hide file tree
Showing 11 changed files with 30 additions and 18 deletions.
2 changes: 1 addition & 1 deletion parts/kubernetesagentresourcesvmas.t
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@
"autoUpgradeMinorVersion": true,
"settings": {},
"protectedSettings": {
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('cloudProviderBackoff'),' ',variables('cloudProviderBackoffRetries'),' ',variables('cloudProviderBackoffExponent'),' ',variables('cloudProviderBackoffDuration'),' ',variables('cloudProviderBackoffJitter'),' ',variables('cloudProviderRatelimit'),' ',variables('cloudProviderRatelimitQPS'),' ',variables('cloudProviderRatelimitBucket'),' ', variables('useManagedIdentityExtension'),' >> /var/log/azure/cluster-provision.log 2>&1 &\" &')]"
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('cloudProviderBackoff'),' ',variables('cloudProviderBackoffRetries'),' ',variables('cloudProviderBackoffExponent'),' ',variables('cloudProviderBackoffDuration'),' ',variables('cloudProviderBackoffJitter'),' ',variables('cloudProviderRatelimit'),' ',variables('cloudProviderRatelimitQPS'),' ',variables('cloudProviderRatelimitBucket'),' ', variables('useManagedIdentityExtension'),' ',variables('useInstanceMetadata'),' >> /var/log/azure/cluster-provision.log 2>&1 &\" &')]"
}
}
}
18 changes: 10 additions & 8 deletions parts/kubernetesmastercustomscript.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,16 @@ CLOUDPROVIDER_RATELIMIT_QPS="${21}"
CLOUDPROVIDER_RATELIMIT_BUCKET="${22}"

USE_MANAGED_IDENTITY_EXTENSION="${23}"
USE_INSTANCE_METADATA="${24}"

# Master only secrets
APISERVER_PRIVATE_KEY="${24}"
CA_CERTIFICATE="${25}"
CA_PRIVATE_KEY="${26}"
MASTER_FQDN="${27}"
KUBECONFIG_CERTIFICATE="${28}"
KUBECONFIG_KEY="${29}"
ADMINUSER="${30}"
APISERVER_PRIVATE_KEY="${25}"
CA_CERTIFICATE="${26}"
CA_PRIVATE_KEY="${27}"
MASTER_FQDN="${28}"
KUBECONFIG_CERTIFICATE="${29}"
KUBECONFIG_KEY="${30}"
ADMINUSER="${31}"

# cloudinit runcmd and the extension will run in parallel, this is to ensure
# runcmd finishes
Expand Down Expand Up @@ -124,7 +125,8 @@ cat << EOF > "${AZURE_JSON_PATH}"
"cloudProviderRatelimit": ${CLOUDPROVIDER_RATELIMIT},
"cloudProviderRateLimitQPS": ${CLOUDPROVIDER_RATELIMIT_QPS},
"cloudProviderRateLimitBucket": ${CLOUDPROVIDER_RATELIMIT_BUCKET},
"useManagedIdentityExtension": ${USE_MANAGED_IDENTITY_EXTENSION}
"useManagedIdentityExtension": ${USE_MANAGED_IDENTITY_EXTENSION},
"useInstanceMetadata": ${USE_INSTANCE_METADATA}
}
EOF

Expand Down
2 changes: 1 addition & 1 deletion parts/kubernetesmasterresources.t
Original file line number Diff line number Diff line change
Expand Up @@ -529,7 +529,7 @@
"autoUpgradeMinorVersion": true,
"settings": {},
"protectedSettings": {
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('cloudProviderBackoff'),' ',variables('cloudProviderBackoffRetries'),' ',variables('cloudProviderBackoffExponent'),' ',variables('cloudProviderBackoffDuration'),' ',variables('cloudProviderBackoffJitter'),' ',variables('cloudProviderRatelimit'),' ',variables('cloudProviderRatelimitQPS'),' ',variables('cloudProviderRatelimitBucket'),' ',variables('useManagedIdentityExtension'),' ',variables('apiServerPrivateKey'),' ',variables('caCertificate'),' ',variables('caPrivateKey'),' ',variables('masterFqdnPrefix'),' ',variables('kubeConfigCertificate'),' ',variables('kubeConfigPrivateKey'),' ',variables('username'),' >> /var/log/azure/cluster-provision.log 2>&1\"')]"
"commandToExecute": "[concat('/usr/bin/nohup /bin/bash -c \"/bin/bash /opt/azure/containers/provision.sh ',variables('tenantID'),' ',variables('subscriptionId'),' ',variables('resourceGroup'),' ',variables('location'),' ',variables('subnetName'),' ',variables('nsgName'),' ',variables('virtualNetworkName'),' ',variables('routeTableName'),' ',variables('primaryAvailablitySetName'),' ',variables('servicePrincipalClientId'),' ',variables('servicePrincipalClientSecret'),' ',variables('clientPrivateKey'),' ',variables('targetEnvironment'),' ',variables('networkPolicy'),' ',variables('cloudProviderBackoff'),' ',variables('cloudProviderBackoffRetries'),' ',variables('cloudProviderBackoffExponent'),' ',variables('cloudProviderBackoffDuration'),' ',variables('cloudProviderBackoffJitter'),' ',variables('cloudProviderRatelimit'),' ',variables('cloudProviderRatelimitQPS'),' ',variables('cloudProviderRatelimitBucket'),' ',variables('useManagedIdentityExtension'),' ',variables('useInstanceMetadata'),' ',variables('apiServerPrivateKey'),' ',variables('caCertificate'),' ',variables('caPrivateKey'),' ',variables('masterFqdnPrefix'),' ',variables('kubeConfigCertificate'),' ',variables('kubeConfigPrivateKey'),' ',variables('username'),' >> /var/log/azure/cluster-provision.log 2>&1\"')]"
}
}
}
3 changes: 2 additions & 1 deletion parts/kubernetesmastervars.t
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"cloudProviderRatelimitQPS": "[parameters('cloudProviderRatelimitQPS')]",
"cloudProviderRatelimitBucket": "[parameters('cloudProviderRatelimitBucket')]",
"useManagedIdentityExtension": "{{ UseManagedIdentity }}",
"useInstanceMetadata": "{{ UseInstanceMetadata }}",
"kubernetesKubeDNSSpec": "[parameters('kubernetesKubeDNSSpec')]",
"kubernetesDNSMasqSpec": "[parameters('kubernetesDNSMasqSpec')]",
"networkPolicy": "[parameters('networkPolicy')]",
Expand Down Expand Up @@ -216,4 +217,4 @@
"agentWindowsVersion": "latest",
"singleQuote": "'",
"windowsCustomScriptSuffix": " $inputFile = '%SYSTEMDRIVE%\\AzureData\\CustomData.bin' ; $outputFile = '%SYSTEMDRIVE%\\AzureData\\CustomDataSetupScript.ps1' ; Copy-Item $inputFile $outputFile ; Invoke-Expression('{0} {1}' -f $outputFile, $arguments) ; "
{{end}}
{{end}}
6 changes: 4 additions & 2 deletions parts/kuberneteswindowssetup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ $global:PrimaryAvailabilitySetName = "{{WrapAsVariable "primaryAvailablitySetNam
$global:NeedPatchWinNAT = $false

$global:UseManagedIdentityExtension = "{{WrapAsVariable "useManagedIdentityExtension"}}"
$global:UseInstanceMetadata = "{{WrapAsVariable "useInstanceMetadata"}}"

filter Timestamp {"$(Get-Date -Format o): $_"}

Expand Down Expand Up @@ -126,7 +127,8 @@ Write-AzureConfig()
"vnetName": "$global:VNetName",
"routeTableName": "$global:RouteTableName",
"primaryAvailabilitySetName": "$global:PrimaryAvailabilitySetName",
"useManagedIdentityExtension": $global:UseManagedIdentityExtension
"useManagedIdentityExtension": $global:UseManagedIdentityExtension,
"useInstanceMetadata": $global:UseInstanceMetadata
}
"@

Expand Down Expand Up @@ -408,4 +410,4 @@ try
catch
{
Write-Error $_
}
}
3 changes: 3 additions & 0 deletions pkg/acsengine/engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,9 @@ func (t *TemplateGenerator) getTemplateFuncMap(cs *api.ContainerService) map[str
"UseManagedIdentity": func() bool {
return cs.Properties.OrchestratorProfile.KubernetesConfig.UseManagedIdentity
},
"UseInstanceMetadata": func() bool {
return cs.Properties.OrchestratorProfile.KubernetesConfig.UseInstanceMetadata
},
"GetVNETSubnetDependencies": func() string {
return getVNETSubnetDependencies(cs.Properties)
},
Expand Down
10 changes: 5 additions & 5 deletions pkg/acsengine/templates.go

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions pkg/api/converterfromapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -562,6 +562,7 @@ func convertKubernetesConfigToVLabs(api *KubernetesConfig, vlabs *vlabs.Kubernet
vlabs.CloudProviderRateLimitQPS = api.CloudProviderRateLimitQPS
vlabs.UseManagedIdentity = api.UseManagedIdentity
vlabs.CustomHyperkubeImage = api.CustomHyperkubeImage
vlabs.UseInstanceMetadata = api.UseInstanceMetadata
}

func convertMasterProfileToV20160930(api *MasterProfile, v20160930 *v20160930.MasterProfile) {
Expand Down
1 change: 1 addition & 0 deletions pkg/api/convertertoapi.go
Original file line number Diff line number Diff line change
Expand Up @@ -583,6 +583,7 @@ func convertVLabsKubernetesConfig(vlabs *vlabs.KubernetesConfig, api *Kubernetes
api.CloudProviderRateLimitQPS = vlabs.CloudProviderRateLimitQPS
api.UseManagedIdentity = vlabs.UseManagedIdentity
api.CustomHyperkubeImage = vlabs.CustomHyperkubeImage
api.UseInstanceMetadata = vlabs.UseInstanceMetadata
}

func convertV20160930MasterProfile(v20160930 *v20160930.MasterProfile, api *MasterProfile) {
Expand Down
1 change: 1 addition & 0 deletions pkg/api/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,7 @@ type KubernetesConfig struct {
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
}

// MasterProfile represents the definition of the master cluster
Expand Down
1 change: 1 addition & 0 deletions pkg/api/vlabs/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,7 @@ type KubernetesConfig struct {
CloudProviderRateLimitBucket int `json:"cloudProviderRateLimitBucket,omitempty"`
UseManagedIdentity bool `json:"useManagedIdentity,omitempty"`
CustomHyperkubeImage string `json:"customHyperkubeImage,omitempty"`
UseInstanceMetadata bool `json:"useInstanceMetadata,omitempty"`
}

// MasterProfile represents the definition of the master cluster
Expand Down

0 comments on commit 096c771

Please sign in to comment.