mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 11:50:44 +00:00
Merge pull request #66180 from kkmsft/user_assigned_msi
Automatic merge from submit-queue (batch tested with PRs 62423, 66180, 66492, 66506, 65242). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. Add user assigned MSI support **What this PR does / why we need it**: Adds the support for generating tokens via user assigned MSI. **Which issue(s) this PR fixes** *(optional, in `fixes #<issue number>(, fixes #<issue_number>, ...)` format, will close the issue(s) when PR gets merged)*: Fixes # **Special notes for your reviewer**: **Release note**: ```release-note Add support for using User Assigned MSI (https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview) with Kubernetes cluster on Azure. ```
This commit is contained in:
commit
2beab8623c
@ -44,28 +44,39 @@ type AzureAuthConfig struct {
|
|||||||
AADClientCertPassword string `json:"aadClientCertPassword" yaml:"aadClientCertPassword"`
|
AADClientCertPassword string `json:"aadClientCertPassword" yaml:"aadClientCertPassword"`
|
||||||
// Use managed service identity for the virtual machine to access Azure ARM APIs
|
// Use managed service identity for the virtual machine to access Azure ARM APIs
|
||||||
UseManagedIdentityExtension bool `json:"useManagedIdentityExtension" yaml:"useManagedIdentityExtension"`
|
UseManagedIdentityExtension bool `json:"useManagedIdentityExtension" yaml:"useManagedIdentityExtension"`
|
||||||
|
// UserAssignedIdentityID contains the Client ID of the user assigned MSI which is assigned to the underlying VMs. If empty the user assigned identity is not used.
|
||||||
|
// More details of the user assigned identity can be found at: https://docs.microsoft.com/en-us/azure/active-directory/managed-service-identity/overview
|
||||||
|
// For the user assigned identity specified here to be used, the UseManagedIdentityExtension has to be set to true.
|
||||||
|
UserAssignedIdentityID string `json:"userAssignedIdentityID" yaml:"userAssignedIdentityID"`
|
||||||
// The ID of the Azure Subscription that the cluster is deployed in
|
// The ID of the Azure Subscription that the cluster is deployed in
|
||||||
SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"`
|
SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetServicePrincipalToken creates a new service principal token based on the configuration
|
// GetServicePrincipalToken creates a new service principal token based on the configuration
|
||||||
func GetServicePrincipalToken(config *AzureAuthConfig, env *azure.Environment) (*adal.ServicePrincipalToken, error) {
|
func GetServicePrincipalToken(config *AzureAuthConfig, env *azure.Environment) (*adal.ServicePrincipalToken, error) {
|
||||||
oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, config.TenantID)
|
|
||||||
if err != nil {
|
|
||||||
return nil, fmt.Errorf("creating the OAuth config: %v", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if config.UseManagedIdentityExtension {
|
if config.UseManagedIdentityExtension {
|
||||||
glog.V(2).Infoln("azure: using managed identity extension to retrieve access token")
|
glog.V(2).Infoln("azure: using managed identity extension to retrieve access token")
|
||||||
msiEndpoint, err := adal.GetMSIVMEndpoint()
|
msiEndpoint, err := adal.GetMSIVMEndpoint()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("Getting the managed service identity endpoint: %v", err)
|
return nil, fmt.Errorf("Getting the managed service identity endpoint: %v", err)
|
||||||
}
|
}
|
||||||
|
if len(config.UserAssignedIdentityID) > 0 {
|
||||||
|
glog.V(4).Info("azure: using User Assigned MSI ID to retrieve access token")
|
||||||
|
return adal.NewServicePrincipalTokenFromMSIWithUserAssignedID(msiEndpoint,
|
||||||
|
env.ServiceManagementEndpoint,
|
||||||
|
config.UserAssignedIdentityID)
|
||||||
|
}
|
||||||
|
glog.V(4).Info("azure: using System Assigned MSI to retrieve access token")
|
||||||
return adal.NewServicePrincipalTokenFromMSI(
|
return adal.NewServicePrincipalTokenFromMSI(
|
||||||
msiEndpoint,
|
msiEndpoint,
|
||||||
env.ServiceManagementEndpoint)
|
env.ServiceManagementEndpoint)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
oauthConfig, err := adal.NewOAuthConfig(env.ActiveDirectoryEndpoint, config.TenantID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("creating the OAuth config: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
if len(config.AADClientSecret) > 0 {
|
if len(config.AADClientSecret) > 0 {
|
||||||
glog.V(2).Infoln("azure: using client_id+client_secret to retrieve access token")
|
glog.V(2).Infoln("azure: using client_id+client_secret to retrieve access token")
|
||||||
return adal.NewServicePrincipalToken(
|
return adal.NewServicePrincipalToken(
|
||||||
|
Loading…
Reference in New Issue
Block a user