如何将Azure DevOps与本地Rocky Linux 9服务器上的Kubernetes连接
Azure DevOps 对接裸金属Kubernetes(Rocky Linux 9)的可行方案
方案一:通过kubeconfig导入创建服务连接
这是最直接的对接方式,依赖K8s服务账号权限完成认证:
- 在裸金属K8s集群上创建专用服务账号并绑定权限:
# 可选:创建独立命名空间用于Azure DevOps相关资源 kubectl create namespace azdo # 创建服务账号 kubectl create serviceaccount azdo-deployer -n azdo # 绑定集群管理员权限(若只需限定命名空间,替换cluster-admin为对应角色) kubectl create clusterrolebinding azdo-deployer-binding --clusterrole=cluster-admin --serviceaccount=azdo:azdo-deployer - 获取服务账号认证信息并生成可用kubeconfig:
- 查找服务账号关联的secret:
kubectl get secrets -n azdo | grep azdo-deployer - 提取认证token:
kubectl get secret <secret-name> -n azdo -o jsonpath='{.data.token}' | base64 -d - 复制现有集群kubeconfig文件,替换其中的用户token为上述提取内容,确保server地址是集群可外部访问的端点
- 查找服务账号关联的secret:
- 在Azure DevOps中配置服务连接:
进入项目「项目设置」→「服务连接」→「新建服务连接」,选择「Kubernetes」类型,选「导入kubeconfig」,粘贴修改后的kubeconfig内容,命名后保存即可
方案二:通过Azure Arc托管K8s集群实现对接
适合需要统一管理多云/本地K8s集群的场景:
- 在Rocky Linux 9服务器上安装并配置Azure Arc:
# 安装Azure CLI dnf install azure-cli -y # 登录Azure账号 az login # 注册Arc所需的资源提供商 az provider register --namespace Microsoft.Kubernetes az provider register --namespace Microsoft.KubernetesConfiguration # 将本地K8s集群连接到Azure Arc az connectedk8s connect --name <你的集群名称> --resource-group <Azure资源组名> --location <Azure区域,比如eastus> - 在Azure DevOps中创建服务连接:
新建服务连接时选「Kubernetes」→「Azure Arc Kubernetes」,选择对应的Arc集群和Azure订阅,完成配置即可
方案三:利用自托管代理直接执行Kubectl命令
如果已经在Rocky Linux 9上部署了Azure DevOps自托管代理,可直接采用这种轻量化方式:
- 在代理服务器上安装kubectl,并配置好集群的kubeconfig(确保代理系统用户能正常执行kubectl命令)
- 在Azure DevOps流水线中添加「脚本任务」,直接编写kubectl命令即可,示例:
这种方式不需要额外创建服务连接,完全依赖代理本地的K8s环境配置kubectl apply -f ./k8s/deployment.yaml -n prod
内容的提问来源于stack exchange,提问作者Murat
相关产品推荐
相关产品推荐

