一、 先决条件1.Azure Repos Git/Git和项目上传
把本地的Net Core项目上传至Azure Repos Git/Git
文章插图
2.Docker Registry Service Connection/Azure subscription和Azure Container Registry以及Kubernetes Service Connection在Project setting配置好对应的Docker Connection和Kubernetes Connection
3.Kubernetes deployment yaml文件
本地配置好yaml文件,与项目一起上传至Git 。
apiVersion: apps/v1# 指定api版本kind: Deployment# 创建资源的类型metadata:# 资源的元数据/属性name: demo# 资源的名称,在同一个namespace中必须唯一namespace: default # 部署在哪个命名空间中spec: # 资源规范/规格字段replicas: 1 # 声明Pod副本数目revisionHistoryLimit: 3 # 保留历史版本selector: # 选择器matchLabels: # 匹配标签app: demostrategy: # 更新策略rollingUpdate: # 滚动更新 , 以下配置保证不停机更新maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比 , 也可以为整数maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数type: RollingUpdate # 滚动更新策略template: # 部署模版metadata: # 资源的元数据/属性labels: # 设定资源的标签app: demospec: # 资源规范/规格字段nodeSelector: #节点筛选器 。节点筛选器与指定调度器一起使用 。agentpool: demonodepool #指定节点池schedulerName: default-scheduler #指定调度器nodeName: demonode1 #指定节点,如果指定节点池可去除当前行命令containers:- name: demo # 容器的名字image: demo:v1 # 镜像地址imagePullPolicy: IfNotPresent # 每次Pod启动拉取镜像策略,三个选择 Always(总是拉取镜像)、Never(从不拉取镜像,仅使用本地镜像)、IfNotPresent(本地无镜像是拉取)resources: # 资源管理limits: # 最大可使用资源限制cpu: 300m # CPU , 1核心 = 1000mmemory: 500Mi # 内存,1G = 1024Mirequests:# 最低使用资源需求cpu: 100mmemory: 100Miports:- containerPort: 80 # 容器开发对外的端口apiVersion: v1 # 指定api版本kind: Service # 指定创建资源的类型metadata: # 资源的元数据/属性name: demo # 资源的名字,可与上面的保持一直namespace: default # 部署在哪个命名空间spec: # 资源规范/规格字段type: ClusterIP # ClusterIP (自动分配IP,仅在集群中访问) 、NodePort、 LoadBalanceports:- port: 80 # service 端口selector: # 选择器app: demo
二、 创建Pipelines1.Other Git
文章插图
2.Azure Repos Git/Git Hub
文章插图
3.Docker container
文章插图
4.Build an Image配置
5.Push an Image配置
文章插图
三、 创建Releases Pipelines1.选择artifact为对应Pipelines
文章插图
2.Add Azure Repos Git 选择对应仓库及详细信息
文章插图
3.Stage选择Deploy to a Kubernetes cluster
文章插图
4.修改Job为Deploy to Kubernetes
文章插图
5.配置 deploy
文章插图
四、 发布应用
- Pipelines运行
- 选择对应Releases、点击Create release
- 选择对应Stage
- 选择deploy发布