如何通过DevOps将私有Docker Hub镜像拉取到ACR并部署到AKS
需求可行性说明
这个场景完全可以通过DevOps流水线实现,主流DevOps工具(包括Azure DevOps、Jenkins、GitLab CI等)都支持全流程自动化执行,无需人工介入。
通用实现流程(以Azure DevOps为例,其他工具逻辑通用)
- 前置配置
在DevOps平台的保密凭证管理模块提前配置3类权限凭证,避免明文泄露:私有Docker Hub的拉取权限账号、Azure ACR的推送权限服务账号、Azure AKS的集群操作权限,你也可以直接配置Azure服务主体,统一授权ACR和AKS的访问权限,减少多凭证维护成本。 - 镜像同步阶段任务
按顺序执行以下命令即可完成私有Docker Hub到ACR的镜像迁移:- 登录私有Docker Hub:
docker login [私有Docker Hub域名] -u $DockerHub_Username -p $DockerHub_Password - 拉取目标镜像:
docker pull [私有Docker Hub镜像地址:版本标签] - 为镜像打ACR目标标签:
docker tag [私有Docker Hub镜像地址:版本标签] [ACR登录地址]/[镜像仓库名]:[版本标签] - 登录ACR:
docker login [ACR登录地址] -u $ACR_Username -p $ACR_Password - 推送镜像到ACR:
docker push [ACR登录地址]/[镜像仓库名]:[版本标签]
- 登录私有Docker Hub:
- AKS部署阶段任务
镜像推送完成后执行以下操作完成部署:- 获取AKS集群访问凭证:
az aks get-credentials --resource-group [资源组名称] --name [AKS集群名称] - 替换Kubernetes部署配置文件中的镜像地址为刚才上传的ACR镜像地址,也可以直接执行命令更新现有部署的镜像:
kubectl set image deployment/[部署名称] [容器名]=[ACR镜像地址:版本标签] - 执行部署生效:
kubectl apply -f [Kubernetes配置文件路径]
- 获取AKS集群访问凭证:
可选优化点
- 可以在镜像拉取、推送完成后分别校验镜像哈希值,避免传输过程中镜像被篡改
- 配置流水线触发规则,当私有Docker Hub有对应新镜像推送时自动触发整个同步+部署流程
- 配置部署后的健康检查步骤,验证AKS上的服务是否正常启动
内容的提问来源于stack exchange,提问作者SukumarVinnakota
相关产品推荐
相关产品推荐

