Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

一、 先决条件

1.Azure Repos Git/Git和项目上传

把本地的Net Core项目上传至Azure Repos Git/Git

Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

2.Docker Registry Service Connection/Azure subscription和Azure Container Registry以及Kubernetes Service Connection
在Project setting配置好对应的Docker Connection和Kubernetes Connection

Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

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

Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

四、 发布应用

  1. Pipelines运行
  2. 选择对应Releases、点击Create release
  3. 选择对应Stage
  4. 选择deploy发布

生命不息、战斗不止!

欢迎大家扫描下方二维码,和我一起共同学习进步!

Original: https://www.cnblogs.com/hulizhong/p/16794317.html
Author: 小世界的野孩子
Title: Azure DevOps Pipelines部署.Net Core 应用到Kubernetes



相关阅读

Title: python爬虫-scrapy五大核心组件和中间件

文章目录

一、scrapy五大核心组件

下面这张图我们在python爬虫-scrapy基本使用见到过,下面就稍微介绍一下scrapy的五大核心组件和中间件

Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

; 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进行清洗、验证,并且将数据持久化。

二、工作流程

Azure DevOps Pipelines部署.Net Core 应用到Kubernetes

; 三、中间件

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

最近整理资源【免费获取】:   👉 程序员最新必读书单  | 👏 互联网各方向面试题下载 | ✌️计算机核心资源汇总