对于K8S中的发布方式,提供了两种传统上的方案

分别是金丝雀发布和蓝绿发布

金丝雀发布即是不断调整新老的项目的流量,最后直到老的代替新的

而蓝绿发布是存在两个环境,首先把需要测试的功能部署在蓝或者绿环境上,然后测试完成进行蓝和绿的环境部署切换

我们首先说下金丝雀部署的基本使用方式

基本上就是存在一个Service

让Service监听某个label的Pod,比如Service监听Label为my-project的

然后创建两个Deployment,去管理拥有这个Label的Pod

不过不同的Deployment可能拥有其他的Label,从而区分不同的Version

我们就演示下如何在K8S上使用金丝雀部署

1.      准备了一个Service

apiVersion: v1

kind: Service

metadata:

name: canary-test

namespace: default

spec:

selector:

app: my-project

type: NodePort  ### 浏览器可以直接访问

ports:

– name: canary-test

port: 80   ###

targetPort: 80  ### Pod的访问端口

protocol: TCP

nodePort: 31666  ### 机器上开的端口,浏览器访问

然后准备两个Deployment

apiVersion: apps/v1

kind: Deployment

metadata:

name:  canary-dep

namespace: default

labels:

app:  project-depolyment

spec:

selector:

matchLabels:

app: my-project

version: v1.0

replicas: 2

template:

metadata:

labels:

app: my-project

v: v1.0

spec:

containers:

– name:  container01

image:  my-container:v1.0

apiVersion: apps/v1

kind: Deployment

metadata:

name:  canary-dep

namespace: default

labels:

app:  project-depolyment

spec:

selector:

matchLabels:

app: my-project

version: v2.0

replicas: 1

template:

metadata:

labels:

app: my-project

v: v2.0

spec:

containers:

– name:  container01

image:  my-container:v1.0

然后我们可以进行相关的测试

不断的修改两个Deployment的Replicas

以至于在新的上线完成后,将之前的测试删除

发表评论

邮箱地址不会被公开。 必填项已用*标注