Dav*_*New 10 azure azure-active-directory azure-devops azure-pipelines azure-kubernetes
我们已将Azure Kubernetes Clusters配置为使用Azure Active Directory RBAC.这意味着当使用kubectl时,我们需要首先作为AD用户进行身份验证(通常通过Web浏览器手动完成设备代码身份验证).我们几乎完全按照MSDN文章" 将Azure Active Directory与Azure Kubernetes服务集成"进行了配置.
问题是,现在,Azure DevOp管道中的Kubernetes构建/发布任务也需要此身份验证,例如,当我们运行kubectl apply时:
2019-01-02T08:48:21.2070286Z ##[section]Starting: kubectl apply
2019-01-02T08:48:21.2074936Z ==============================================================================
2019-01-02T08:48:21.2075160Z Task : Deploy to Kubernetes
2019-01-02T08:48:21.2075398Z Description : Deploy, configure, update your Kubernetes cluster in Azure Container Service by running kubectl commands.
2019-01-02T08:48:21.2075625Z Version : 1.1.17
2019-01-02T08:48:21.2075792Z Author : Microsoft Corporation
2019-01-02T08:48:21.2076009Z Help : [More Information](https://go.microsoft.com/fwlink/?linkid=851275)
2019-01-02T08:48:21.2076245Z ==============================================================================
2019-01-02T08:48:25.7971481Z Found tool in cache: kubectl 1.7.0 x64
2019-01-02T08:48:25.7980222Z Prepending PATH environment variable with directory: C:\agents\HephaestusForge\_work\_tool\kubectl\1.7.0\x64
2019-01-02T08:48:25.8666111Z [command]C:\agents\HephaestusForge\_work\_tool\kubectl\1.7.0\x64\kubectl.exe apply -f C:\agents\HephaestusForge\_work\r8\a\_MyProject\kubernetes\deploy.yaml -o json
2019-01-02T08:48:26.3518703Z To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code CUYYYYYVV to authenticate.
Run Code Online (Sandbox Code Playgroud)
这是一个什么解决方法?是否可以让Azure DevOps将自身认证为服务器客户端而不是AD客户端?
您可以从https://github.com/Azure/kubelogin将 kubelogin 用于管道
这是完整的示例,从登录步骤开始,直到获取 Kubernetes 内的命名空间资源。
az login --service-principal -u $APP_ID -p $PASSWORD -t $TENANT
Run Code Online (Sandbox Code Playgroud)
~/.kube/config
这个声明更重要,如果你的文件中没有现有的集群上下文
az aks get-credentials --resource-group $RG_AKS --name $CLUSTER_NAME --overwrite-existing --file .kubeconfig-${CLUSTER_NAME}
Merged "my-aks-cluster-name" as current context in .kubeconfig-my-aks-cluster-name
Run Code Online (Sandbox Code Playgroud)
使用 kubelogin 代替az aks get-credential ....
export KUBECONFIG=$(pwd)/.kubeconfig-${CLUSTER_NAME}
kubelogin convert-kubeconfig -l spn
export AAD_SERVICE_PRINCIPAL_CLIENT_ID=$APP_ID
export AAD_SERVICE_PRINCIPAL_CLIENT_SECRET=$PASSWORD
Run Code Online (Sandbox Code Playgroud)
现在您无需设备身份验证即可运行 kubectl
kubectl get pods -n $NAMESPACE
NAME READY STATUS RESTARTS AGE
myapp-be-7c8cf7d8b9-gnj2t 1/1 Running 0 103m
myapp-cms-65fd6df9c-z7752 1/1 Running 0 14m
myapp-fe-5dbcdd8d9c-fzxgh 1/1 Running 0 52m
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
849 次 |
最近记录: |