一、 先决条件
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: demo
strategy: # 更新策略
rollingUpdate: # 滚动更新,以下配置保证不停机更新
maxSurge: 30% # 最大额外可以存在的副本数,可以为百分比,也可以为整数
maxUnavailable: 30% # 示在更新过程中能够进入不可用状态的 Pod 的最大值,可以为百分比,也可以为整数
type: RollingUpdate # 滚动更新策略
template: # 部署模版
metadata: # 资源的元数据/属性
labels: # 设定资源的标签
app: demo
spec: # 资源规范/规格字段 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核心 = 1000m
memory: 500Mi # 内存,1G = 1024Mi
requests: # 最低使用资源需求
cpu: 100m
memory: 100Mi
ports:
- containerPort: 80 # 容器开发对外的端口
undefined
apiVersion: v1 # 指定api版本
kind: Service # 指定创建资源的类型
metadata: # 资源的元数据/属性
name: demo # 资源的名字,可与上面的保持一直
namespace: default # 部署在哪个命名空间
spec: # 资源规范/规格字段
type: ClusterIP # ClusterIP (自动分配IP,仅在集群中访问) 、NodePort、 LoadBalance
ports:
- port: 80 # service 端口
selector: # 选择器
app: demo
二、 创建Pipelines
1.Other Git
2.Azure Repos Git/Git Hub
3.Docker container
4.Build an Image配置
5.Push an Image配置
三、 创建Releases Pipelines
1.选择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发布
生命不息、战斗不止!
欢迎大家扫描下方二维码,和我一起共同学习进步!
Original: https://www.cnblogs.com/hulizhong/p/16794317.html
Author: 小世界的野孩子
Title: Azure DevOps Pipelines部署.Net Core 应用到Kubernetes
相关阅读
Title: python爬虫-scrapy五大核心组件和中间件
文章目录
- 一、scrapy五大核心组件
*
– - 二、工作流程
- 三、中间件
*
–
一、scrapy五大核心组件
下面这张图我们在python爬虫-scrapy基本使用见到过,下面就稍微介绍一下scrapy的五大核心组件和中间件

; Spiders(爬虫)
Spiders是用户需要编辑的代码的主要部分。用户通过编写 spider.py
这个类实现爬取指定网站地址、定义网址过滤规则、解析目标数据等。 Spider 发出请求,并处理Scrapy引擎返回给它 下载器响应数据,把解析到的数据以item的形式传递给ItemPipeline,把解析到的链接传递给Scheduler。
Scrapy Engine(Scrapy引擎)
Scrapy 引擎是用来控制整个系统的数据处理流程,并进行不同事务触发,是scrapy框架的核心。
Scheduler(调度器)
调度器包含 过滤器和一个url队列,调度器接受引擎发过来的请求,由 过滤器过滤重复的url并将其压入url队列中,当引擎再次请求时,从url队列中取出下一个url返回给引擎
Downloader(下载器)
下载器从Scrapy引擎得到需要下载的url,然后向该网址发送请求,将请求到的网页数据传给Spiders。如果需要修改发起的requests请求对象或响应对象,可以通过 下载中间件来完成
ItemPipeline(项目管道)
Item对象定义了爬虫要抓取的数据的字段,可以像对待字典一样来存储和提取item对象中存储的数据。Pipeline主要负责处理Spider从网页中抽取的item,对item进行清洗、验证,并且将数据持久化。
二、工作流程

; 三、中间件
3.1 下载中间件
下载中间件是位于Scrapy引擎和下载器之间的钩子框架,主要是处理 Scrapy 引擎与下载器之间的请求及响应。
主要作用
- 在 Scrapy将请求发送到网站之前修改,处理请求,如:更换代理ip,使用UA伪装等
- 在 将响应对象传递给引擎之前处理收到的响应,如:响应失败重新请求,或将失败请求做一定处理再返回给引擎
主要方法
process_request(self, request, spider)
拦截正常的请求,可以对拦截到的正常请求进行修改process_response(self, request, response,spider)
该方法会 拦截所有的响应对象,可以对拦截到的响应对象进行修改process_exception(self,request,exception,spider)
拦截发生异常的请求,可以将异常的请求进行处理,重新发起请求
3.1.1 UA伪装
如果我们在 settings.py
进行UA伪装,那么所有的请求共用一个 User-Agent
,通过在下载中间件中进行UA伪装,可以使得不同的url有不同的 User-Agent
class MiddleproDownloaderMiddleware(object):
user_agent_list = [user-agent1,user-agent2,user-agent3...]
def process_request(self, request, spider):
request.headers['User-Agent'] = random.choice(self.user_agent_list)
return None
3.1.2 代理IP
class MiddleproDownloaderMiddleware(object):
proxy_list=[proxy1,proxy2,proxy3...]
def process_exception(self,request,exception,spider):
request.meta['proxy'= random.choice(self.proxy_list)
return request
3.1.3 集成selenium
使用selenium可以很方便的获取网页中动态加载的数据
from selenium import webdriver
from scrapy.http import HtmlResponse
import time
class MiddleproDownloaderMiddleware(object):
def __init__(self):
self.driver = webdriver.Chrome()
def process_request(self, request, spider):
self.driver.get(request.url)
time.sleep(2)
body = self.driver.page_source
return HtmlResponse(url = request.url,
body=body,
encoding='utf-8',
request=request)
3.2 爬虫中间件
爬虫中间件是介于 Scrapy引擎和Spiders之间的钩子框架,主要是处理 引擎传回的response对象和 Spiders生成的items和requests,可以插入自定义的代码来处理发送给Spiders的请求和返回Spider获取的响应内容和项目
更多详细内容可参考:Scrapy进阶知识点总结(六)——中间件详解
Original: https://blog.csdn.net/m0_46500590/article/details/113850025
Author: 小王子爱上玫瑰
Title: python爬虫-scrapy五大核心组件和中间件
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/363465/
转载文章受原作者版权保护。转载请注明原作者出处!