使用阿里云容器服务-k8s实现灰度发布

涉及到的概念问题自行百度,下面开始实操。

准备工作:

阿里云镜像服务中有nginx镜像,tag为new,old

使用阿里云容器服务-k8s实现灰度发布_第1张图片

第一步:使用tag为old的镜像创建名为nginx的service

在容器服务中创建如下service模板,yaml文件如下:

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  selector:
    app: nginx #TODO: change label selector to match your backend pod
  ports:
  - port: 30180
    protocol: TCP
    targetPort: 80
  type: NodePort
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
  annotations: {}
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: registry.cn-shenzhen.aliyuncs.com/tryrus/nginx:old
        imagePullPolicy: Always
        name: nginx
        ports:
        - containerPort: 80
          protocol: TCP
      restartPolicy: Always

使用阿里云容器服务-k8s实现灰度发布_第2张图片

 第二步:创建service,在编排模板详情的右边选好命名空间,点创建即可

创建速度很快,创建好后可以在集群的无状态负载中看到刚刚创建Deployment

使用阿里云容器服务-k8s实现灰度发布_第3张图片 

 以及在网络-服务中可以看到刚刚创建的service

使用阿里云容器服务-k8s实现灰度发布_第4张图片

第三步:创建ingress,打通外部访问功能

使用阿里云容器服务-k8s实现灰度发布_第5张图片 

名称:随意

规则--域名:这个域名解析后的IP必须是Ingress的外网IP

规则--路径:service提供服务的路径

规则--服务:第二步创建的service

其它可不填。 

创建后就可以通过域名加路径的方式访问到第二步创建的名为nginx的service了。

使用阿里云容器服务-k8s实现灰度发布_第6张图片

第四步:创建灰度发布

使用阿里云容器服务-k8s实现灰度发布_第7张图片 

 参数选择前面步骤创建好的deployment,service,ingress,待初始化完成后就可以进入到灰度发布任务详细界面了。

使用阿里云容器服务-k8s实现灰度发布_第8张图片

修改配置。修改发布对象的nginx版本为new。权重为100。新版本副本为1,旧版本副本为2。

使用阿里云容器服务-k8s实现灰度发布_第9张图片 

 成功后如下状态

使用阿里云容器服务-k8s实现灰度发布_第10张图片

 

 此时k8s会创建相对应的deployment,service,ingress

使用阿里云容器服务-k8s实现灰度发布_第11张图片

使用阿里云容器服务-k8s实现灰度发布_第12张图片 

使用阿里云容器服务-k8s实现灰度发布_第13张图片 

 这里要清楚一点,service名称为nginx跟nginx-primary的是旧版本,nginx-canary是新版本

然后变更我们自己创建的ingress,增加新版本的service,并新建一个灰度发布策略。这里发布策略选择的是Header

使用阿里云容器服务-k8s实现灰度发布_第14张图片

 这个时候再来访问,带Header的就会访问到新版本,不带Header的就会访问到旧版本。

使用阿里云容器服务-k8s实现灰度发布_第15张图片

 

 

你可能感兴趣的:(kubernetes,运维)