- 文档首页
镜像仓库
镜像仓库 CR
最佳实践
DevOps 交付
基于持续交付的云原生 DevOps
DevOps 交付
基于持续交付的云原生 DevOps
基于持续交付的云原生 DevOps
容器化场景下的一站式 DevOps 可以有效的实现持续集成和持续部署,显著提升业务应用创建和交付效率。本文通过 Python 容器应用部署的流程,为您介绍如何在火山引擎生态中实现容器化 DevOps。
场景介绍
使用容器镜像的方式交付 Python 应用,并将其部署在 Kubernetes 集群中,并当代码变更后自动触发应用部署。
操作流程
相关产品
- 持续交付:持续交付(Code Pipeline,CP)提供开发者友好的云原生应用交付平台和灵活易用的一站式流水线,帮助企业打通研发运维工程的各个环节,高质量、高效率完成业务的持续集成、持续验证和持续发布。产品详情参见 持续交付。
- 镜像仓库:火山引擎镜像仓库(Container Registry,CR)提供安全高可用的容器镜像、Helm Chart 等符合 OCI 标准的云原生制品托管服务,方便企业用户管理容器镜像和 Helm Chart 的全生命周期。产品详情参见 镜像仓库。
- 容器服务:容器服务(Volcengine Kubernetes Engine,VKE)通过深度融合新一代云原生技术,提供以容器为核心的高性能 Kubernetes 容器集群管理服务,助力用户快速构建容器化应用。产品详情参见 容器服务。
操作步骤
步骤一:获取代码仓库 HTTPS 地址和 Token
使用代码仓库存储代码源并使用持续交付实现 DevOps,首先您需要在代码仓库中准备一份代码源。本文以 Gitee 代码仓库为例为您介绍。
说明
持续交付支持 Gitee、Gitlab、Github、Codeup、Gerrit 等代码仓库托管的代码源,同时也指手动输入代码作为代码源。
-
- 在新建仓库页面填写仓库名称、路径,完成后单击 创建。本示例仓库名称和路径均为 projects-zhangsan2022。
-
- 单击 初始化 readme 文件 创建项目的 Readme 文件。
-
-
- 新建 Python 文件 app.py,完成后单击页面底部的 提交。示例代码如下。
if __name__ == '__main__':
app.run(host="0.0.0.0", port=5050)
-
- 在 设置 > 私人令牌 > 创建私人令牌 创建并获取私人令牌(Token)。
-
注意
必须选择 user_info、projects、hook。
步骤二:获取 OCI 制品仓库的地址
持续交付产品的流水线输出的最终产物为符合 OCI 规范容器镜像,需要保存到镜像仓库的 OCI 制品仓库中。镜像仓库提供了对原生 OCI 制品仓库的全生命周期管理能力。
-
-
-
-
步骤三:创建部署资源的容器集群
镜像完成构建后,需要创建部署环境,即容器服务 VKE 集群,部署流水线中的应用。
-
-
- 在 运维管理 > 组件管理 中安装容器镜像免密组件 cr-credential-controller。
说明
镜像仓库中的 OCI 制品可以被设置成为私有或公开。处于私有状态时,拉取需要提供认证。cr-credential-controller 组件可以为当前集群自动配置拉取对应镜像仓库的认证信息,实现私有镜像免密拉取。
-
步骤四:创建持续交付流水线
-
说明
支持交付代码源配置页面,填写 Gitee 中已获取的代码仓库 HTTPS 地址和 Token。
-
- 创建 Python-镜像构建推送至镜像仓库服务 流水线。操作详情参见 创建流水线。
-
- 配置输入源,选择已配置的代码源。操作详情参见 配置代码源。
说明
在 Webhook 设置中开启 代码提交 事件触发,当 Gitee 中代码源有变更提交后,即可触发流水线的自动运行。
-
- 编辑任务。其中 镜像打包推送至镜像仓库服务 区域中的 镜像版本 和 dockfile 填写说明如下,其他配置保持默认或者选择前置步骤中已创建的资源。
-
- dockfile:选择 自定义文件,本示例中代码如下。
RUN pip3 install flask -i https://pypi.org/simple
CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0", "--port=5050"]
-
- 部署资源:将已创建的容器集群设置为部署资源,部署资源的创建方法参见 接入容器服务集群。
- YAML 文件:选择 自定义文件 的方式。示例代码如下,需要将示例代码中镜像地址 cr-zhangsan2022-cn-beijing.cr.volces.com/namespace-zhangsan2022/oci-zhangsan2022:v1 替换为 {已获取的 OCI 制品仓库的地址}:v1。
externalTrafficPolicy: Cluster
progressDeadlineSeconds: 600
revisionHistoryLimit: 10
kubectl.kubernetes.io/restartedAt: "2022-03-30T14:37:35Z"
- image: cr-zhangsan2022-cn-beijing.cr.volces.com/namespace-zhangsan2022/oci-zhangsan2022:v1
imagePullPolicy: IfNotPresent
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
schedulerName: default-scheduler
terminationGracePeriodSeconds: 30
步骤五:发布应用
运行流失水后即可实现应用的发布。
-
-
操作结果
完成应用部署后,即可通过外网地址访问应用。
- 在 VKE 集群 服务 列表中查看已部署的服务的外网地址。
-
-
步骤六:持续发布
本示例在持续交付代码源的 Webhook 设置中开启 代码提交 事件触发,即在 Gitee 代码源中更新代码后,会自动触达流水钱的运行,部署更新后的应用。
-
- 流水线自动触发运行,部署更新后的应用。刷新浏览器即可查看新的应用。
-
相关文档
更多容器 DevOps 相关内容请参见 持续交付帮助文档 中的 最佳实践 章节。 最近更新时间:2026.07.08 10:45:38