在云端或数据中心部署新版本的最佳方式
在生产环境中更新和配置应用程序通常是件令人望而生畏的事。面对如此多的可用选项,应如何选择最适合你的用例的部署策略?
部署策略用于升级或配置正在运行的应用程序。在下文中,我们将讨论三种部署策略:
- 重建部署:在部署新版本之前,终止当前版本。
- 蓝/绿部署:当前版本和新版本并行运行,然后将所有流量切换到新版本。
- 金丝雀部署:新版本逐步向一小部分用户推出,之后发布供所有用户使用。
值得注意的是,还可通过许多其他方式来发布应用程序的新版本。你可点击此处,查看针对其中一部分方式进行的讨论。
在整篇文章中,我们将使用本地 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