Bootstrap

蓝/绿部署 VS 金丝雀部署

在这里插入图片描述

在云端或数据中心部署新版本的最佳方式

在生产环境中更新和配置应用程序通常是件令人望而生畏的事。面对如此多的可用选项,应如何选择最适合你的用例的部署策略?

部署策略用于升级或配置正在运行的应用程序。在下文中,我们将讨论三种部署策略:

  • 重建部署:在部署新版本之前,终止当前版本。
  • 蓝/绿部署:当前版本和新版本并行运行,然后将所有流量切换到新版本。
  • 金丝雀部署:新版本逐步向一小部分用户推出,之后发布供所有用户使用。

值得注意的是,还可通过许多其他方式来发布应用程序的新版本。你可点击此处,查看针对其中一部分方式进行的讨论。

在整篇文章中,我们将使用本地 Kubernetes 环境来演示所讨论的各种部署策略。

如果可以的话,你也可以使用云环境。

下文提到了演示所需的所有文件和命令,也可以在该项目的 Github 存储库中找到。

顺带一提,Ori Hoch 撰写的一篇博文已探讨了使用 Kubernetes 来支持 CI 构建(见第 1 部分第 2 部分)。在这篇文章中,我们将更多地关注 CI/CD 的 CD 部分,也就是部署。

来看看我们的 Kubernetes YAML 文件:

version1-deployment.yml
——部署 6 个副本,运行一个简单的 Web 应用程序,呈现“版本 1

# version2-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-2
spec:
  selector:
      matchLabels:
      app: nginx 
      version: 'v1.1'
  replicas: 6
  template:
      metadata:
      labels:
      app: nginx
      version: 'v1.1'
      spec:
      containers:
      - name: nginx
      image: my_project/web-app:version2
      ports:
      - containerPort: 80

version2-deployment.yml
部署
——部署 6 个副本,运行一个简单的 Web 应用程序,呈现“版本 2”

# version2-deployment.yml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-2
spec
;