如何将项目发布至集群
将项目最终发布至集群需要历经多少个步骤?本文将通过示例项目,演示如何从代码仓库开始,最终将项目自动化发布至集群中。你可以点击下方索引进行页面快速跳转。
1. 导入示例代码仓库
2. 创建持续集成任务
3. 配置目标制品仓库
4. 创建云端容器服务
5. 自动化发布至集群
1. 导入示例代码仓库
先在团队创建全功能 DevOps 项目。
在“代码仓库”中导入开源示例代码仓库。
2. 创建持续集成任务
点击项目内左侧产品栏「持续集成」,右上角创建构建计划,选择「部署」分类下的「推送到 Kubernetes」模板。
示例仓库中已含有 Dockerfile
文件,因此仅需自定义镜像名称。若制品仓库中没有 Docker 类型仓库,可以在第三步点击页面上的“创建新的制品库”按钮。
创建完成后,前往持续集成设置的触发规则,勾选代码源触发。当 master 分支有代码变更时将自动触发持续集成任务,你也可以配合团队工作流,自定义多种自动触发方式。
3. 配置目标制品仓库
软件制品是指由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件,这些文件通常可以直接运行在服务器上,用以支撑应用运行。持续集成任务运行成功后,前往制品仓库中就可以查看已推送的制品,你可以参考此文档在本地进行镜像推拉。
获取制品仓库的拉取链接。
将制品的拉取地址填写至代码仓库中 /k8s/deployment.yaml
中的 image
参数中。
4. 创建云端容器服务
前往腾讯云控制台,点击开通容器服务。在集群中新建命名空间(Namespace)用于存储自动生成的制品仓库访问凭证,本文中所使用的集群命名为: cd-demo。
新建命名空间后,返回 CODING 站点,点击首页左侧的「设施」,在「云账号」中绑定腾讯云账号。
成功添加云账号后,在首页左侧的「应用」中点击「创建应用」,填写应用名与选择部署方式。
选择「部署到 Kubernetes 集群」模板,填写名称与描述后完成创建。
接下来需导入云账号的 imagePullSecrets
至代码仓库中。在「基础设施——云账号」中点击查看详情后,复制名称。
粘贴至代码仓库中的 deployment.yaml
文件中,同时在 namespace
参数一栏中填写在上文中所创建的命名空间 cd-demo
。
同一层级的 service.yaml
文件中的 namespace
内容也需保持一致。
5. 自动化发布至集群
进入部署流程配置页面,可以为此流程设定:
- 流程的执行选项(在此示例中保持默认即可)
- 部署 Deployment 阶段以及部署 Service 阶段所需制品
- 设置滚动更新策略
- 手动或自动触发
首先配置部署(Manifest)阶段。基础设置选择已绑定的云账号,在 Manifest 来源选择「CODING 代码库」,填写相应的路径。
配置部署 Service 阶段时步骤同上,但在文件路径处需选择 k8s/service.yaml
文件。
镜像版本配置默认选择自动获取镜像来源。若设置自定义版本规则,将仅传送特定的 image 版本信息号至集群中。
设置滚动更新策略:在 Kubernetes 中,Rolling Updates 是一种逐步更新应用程序或底层容器的机制。这种机制允许在不中断服务的前提下,对 Kubernetes 集群中的容器进行更新。以下是关于 Rolling Updates 的详细使用说明:
在 Kubernetes 中,通过设置 spec.strategy.type 属性来启用滚动更新策略。这个属性可以设置在 Deployment、Statefulset 等资源上。例如:
apiVersion: apps/v1
kind: Deployment
metadata:
name: rollingupdate-strategy
version: nanoserver-1709
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
selector:
matchLabels:
app: web-app-rollingupdate-strategy
version: nanoserver-1709
replicas: 3
template:
metadata:
labels:
app: web-app-rollingupdate-strategy
version: nanoserver-1709
spec:
containers:
- name: web-app-rollingupdate-strategy
image: hello-world:nanoserver-1709apiVersion: apps/v1
kind: Deployment
metadata:
name: rollingupdate-strategy
version: nanoserver-1709
spec:
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 2
maxUnavailable: 1
selector:
matchLabels:
app: web-app-rollingupdate-strategy
version: nanoserver-1709
replicas: 3
template:
metadata:
labels:
app: web-app-rollingupdate-strategy
version: nanoserver-1709
spec:
containers:
- name: web-app-rollingupdate-strategy
image: hello-world:nanoserver-1709
在上述示例中,spec.strategy.type 设置成了 RollingUpdate,则这个 deployment 在部署时会被滚动更新。
完成部署阶段配置后,你可以在「基础配置」中点选触发器类型,选择 Docker 仓库触发器。当开发人员更新代码仓库并使用 CI 将镜像打包推送至制品库后,Docker 镜像的更新将自动触发部署流程,并将应用发布至 Kubernetes(TKE) 集群,完成后可以在基础设施页面查看并确认应用是否发布成功。
6. 发布成功
发布成功后,可以查看发布的制品及启动参数及阶段执行详情等信息。
当需要查看某个资源在集群中的运行状态时,点击「集群」下的工作负载即可查看详情(如工作负载的 Pod 实例,日志等信息)。
在腾讯云的容器服务中查看工作负载。
在阅读中是否遇到以下问题?*
您希望我们如何改进?*
如果您希望得到回复,请留下您的邮箱地址。