带AAD绑定的AKS集群的Azure Devops中的Kubernetes服务连接

时间:2019-10-29 20:01:51

标签: azure-devops azure-kubernetes

azure devops中的kubernetes服务连接是否可以与通过openidconnect绑定到AAD的AKS集群一起使用?登录到此类集群将通过涉及设备登录+浏览器的openidconnect流。 azure devops k8s服务连接怎么可能?

1 个答案:

答案 0 :(得分:1)

  

Azure devops中的kubernetes服务连接是否可以与AKS一起使用   通过openidconnect绑定到AAD的集群?

不幸的是,不,这直到现在还不支持。

根据您的描述,您要在Azure Devops Kubernetes服务连接中进行连接的是Azure Kubernetes服务。这意味着您将在Azure Subscription中选择Choose authentication。但是,此连接方法正在使用服务主体身份验证(SPA)进行身份验证,与AAD auth绑定的 AKS尚不支持此方法。

如果在Azure Devops中将AKS群集作为CI / CD部署的一部分连接,并尝试获取群集凭据。您将收到警告响应,通知您登录,因为服务主体无法处理

WARNING: To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code *** to authenticate.

您应该熟悉此消息,它需要您打开浏览器登录才能手动完成设备代码验证。但这在Azure Devops中无法实现。

我们的论坛上提出了这样的功能请求,要求我们将此功能扩展到Support non-interactive login for AAD-integrated clusters。您可以在那里投票和评论,以提高此建议单的优先级。然后我们的产品经理可以将其尽快纳入开发计划中。


尽管不能直接实现。但是现在有2种解决方法可以供您参考。

  • 第一个解决方法是将Azure DevOps身份验证从AAD客户端更改为服务器客户端。

使用az aks get-credentials command并指定参数--admin。这可以绕过Azure AD身份验证,因为它可以让您连接和检索无需Azure AD即可运行的管理员凭据,这有助于解决问题。

但是,我不建议使用此方法,因为从主观上讲,此方法会忽略AAD中为安全而设置的身份验证规则。如果您想要一种快速的方法来实现所需的功能,而又不必太担心安全性,可以尝试一下。

  • 第二个正在使用Kubernetes服务帐户

您可以按照此doc创建服务帐户。然后在Azure Devops中,我们可以使用此服务帐户与AKS API进行通信。在这里,您还需要考虑AKS中的authorized IP address ranges

成功创建服务帐户后,在Azure Devops的服务连接中选择服务帐户

enter image description here

服务器URL:从Azure门户中的AKS实例( API服务器地址)获取,然后别忘了在您添加https://之前将其输入此服务连接。

秘密:使用命令生成它:

kubectl get secret -n <name of secret> -o yaml -n service-accounts

请参阅此文档:Deploy Vault on Azure Kubernetes Service (AKS)

然后,您可以在Azure Devops任务中使用此服务连接。