You need to enable JavaScript to run this app.
文档中心
镜像仓库

镜像仓库

复制全文
下载 pdf
DevOps 交付
基于持续交付的云原生 DevOps
复制全文
下载 pdf
基于持续交付的云原生 DevOps
容器化场景下的一站式 DevOps 可以有效的实现持续集成和持续部署,显著提升业务应用创建和交付效率。本文通过 Python 容器应用部署的流程,为您介绍如何在火山引擎生态中实现容器化 DevOps。
场景介绍
使用容器镜像的方式交付 Python 应用,并将其部署在 Kubernetes 集群中,并当代码变更后自动触发应用部署。
操作流程
alt
相关产品
  • 持续交付:持续交付(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 等代码仓库托管的代码源,同时也指手动输入代码作为代码源。
  1. 注册 Gitee 账号,详情参见 Gitee 官网
  1. 在新建 Gitee 仓库。
  • alt
  1. 在新建仓库页面填写仓库名称、路径,完成后单击 创建。本示例仓库名称和路径均为 projects-zhangsan2022
  • alt
  1. 单击 初始化 readme 文件 创建项目的 Readme 文件。
  • alt
  1. 单击 文件 > 新建文件,新建代码文件。
  • alt
  1. 新建 Python 文件 app.py,完成后单击页面底部的 提交。示例代码如下。
  • from flask import Flask
    app = Flask(__name__)
    @app.route('/')
    def hello_world():
    return 'Hello, World!'
    if __name__ == '__main__':
    app.run(host="0.0.0.0", port=5050)
  1. 获取代码源的 HTTPS 地址。
  • alt
  1. 设置 > 私人令牌 > 创建私人令牌 创建并获取私人令牌(Token)。
  • alt
注意
必须选择 user_info、projects、hook。
步骤二:获取 OCI 制品仓库的地址
持续交付产品的流水线输出的最终产物为符合 OCI 规范容器镜像,需要保存到镜像仓库的 OCI 制品仓库中。镜像仓库提供了对原生 OCI 制品仓库的全生命周期管理能力。
  1. 创建标准版实例。操作详情参见 创建标准版实例
  • alt
  1. 创建命名空间。操作详情参见 命名空间管理
  • alt
  1. 创建 OCI 制品仓库。操作详情参见 OCI 制品仓库管理
  • alt
  1. 获取 OCI 制品仓库的网络地址。
  • alt
步骤三:创建部署资源的容器集群
镜像完成构建后,需要创建部署环境,即容器服务 VKE 集群,部署流水线中的应用。
  1. 创建 VPC。操作详情参见 创建私有网络
  • alt
  1. 创建集群,操作详情参见 创建集群
  • alt
  1. 运维管理 > 组件管理 中安装容器镜像免密组件 cr-credential-controller
说明
镜像仓库中的 OCI 制品可以被设置成为私有或公开。处于私有状态时,拉取需要提供认证。cr-credential-controller 组件可以为当前集群自动配置拉取对应镜像仓库的认证信息,实现私有镜像免密拉取。
  • alt
步骤四:创建持续交付流水线
  1. 创建持续交付工作区。操作详情参加 创建工作区
  • alt
  1. 创建持续交付代码源。操作详情参见 创建代码源
说明
支持交付代码源配置页面,填写 Gitee 中已获取的代码仓库 HTTPS 地址和 Token。
  • alt
  1. 创建 Python-镜像构建推送至镜像仓库服务 流水线。操作详情参见 创建流水线
  • alt
  1. 配置输入源,选择已配置的代码源。操作详情参见 配置代码源
说明
在 Webhook 设置中开启 代码提交 事件触发,当 Gitee 中代码源有变更提交后,即可触发流水线的自动运行。
  • alt
  1. 编辑任务。其中 镜像打包推送至镜像仓库服务 区域中的 镜像版本dockfile 填写说明如下,其他配置保持默认或者选择前置步骤中已创建的资源。
  • alt
  • 镜像版本 本示例填写 v1。
  • dockfile:选择 自定义文件,本示例中代码如下。
  • FROM python:3
    RUN mkdir app
    ADD app.py /app/app.py
    WORKDIR app
    #Install other libs
    RUN pip3 install flask -i https://pypi.org/simple
    EXPOSE 5050
    CMD ["python3", "-m", "flask", "run", "--host=0.0.0.0", "--port=5050"]
  1. 添加 Kubectl 发布。操作详情参见 Kubectl 发布
  • alt
  • 部署资源:将已创建的容器集群设置为部署资源,部署资源的创建方法参见 接入容器服务集群
  • YAML 文件:选择 自定义文件 的方式。示例代码如下,需要将示例代码中镜像地址 cr-zhangsan2022-cn-beijing.cr.volces.com/namespace-zhangsan2022/oci-zhangsan2022:v1 替换为 {已获取的 OCI 制品仓库的地址}:v1
  • apiVersion: v1
    kind: Service
    metadata:
    name: demo
    namespace: default
    spec:
    externalTrafficPolicy: Cluster
    ports:
    - name: port1
    port: 5050
    protocol: TCP
    targetPort: 5050
    selector:
    app: demo
    sessionAffinity: None
    type: LoadBalancer
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
    name: demo
    namespace: default
    spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
    matchLabels:
    app: demo
    strategy:
    rollingUpdate:
    maxSurge: 25%
    maxUnavailable: 25%
    type: RollingUpdate
    template:
    metadata:
    annotations:
    kubectl.kubernetes.io/restartedAt: "2022-03-30T14:37:35Z"
    creationTimestamp: null
    labels:
    app: demo
    spec:
    containers:
    - image: cr-zhangsan2022-cn-beijing.cr.volces.com/namespace-zhangsan2022/oci-zhangsan2022:v1
    imagePullPolicy: IfNotPresent
    name: demo
    ports:
    - containerPort: 5050
    protocol: TCP
    resources:
    limits:
    cpu: 300m
    memory: 64Mi
    requests:
    cpu: 300m
    memory: 64Mi
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File
    dnsPolicy: ClusterFirst
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    terminationGracePeriodSeconds: 30
  1. 单击 保存,完成流水线创建。
步骤五:发布应用
运行流失水后即可实现应用的发布。
  1. 在已创建的流水线页面,单击 运行
  • alt
  1. 选择运行目标为 master 分支。
  1. 运行完成后,即完成了应用发布。
  • alt
操作结果
完成应用部署后,即可通过外网地址访问应用。
  1. 在 VKE 集群 服务 列表中查看已部署的服务的外网地址。
  • alt
  1. 在浏览器输入外网地址即可访问应用。
  • alt
步骤六:持续发布
本示例在持续交付代码源的 Webhook 设置中开启 代码提交 事件触发,即在 Gitee 代码源中更新代码后,会自动触达流水钱的运行,部署更新后的应用。
  1. 在 Gitee 中更新代码源。
  • alt
  1. 流水线自动触发运行,部署更新后的应用。刷新浏览器即可查看新的应用。
  • alt
相关文档
更多容器 DevOps 相关内容请参见 持续交付帮助文档 中的 最佳实践 章节。
最近更新时间:2026.07.08 10:45:38
这个页面对您有帮助吗?
有用
有用
无用
无用