资讯详情

KubeVela 1.4.x 官方文档

KubeVela 简介

什么是 KubeVela?

KubeVela 它是一个开箱即用的现代应用交付理平台,使应用在混合云环境中的交付更加简单快捷。 KubeVela 软件开发团队可发展和业务场景的变化,软件开发团队可以随着团队规模的发展和业务场景的变化,其功能可以一次构建应用程序并随处可见。

在这里插入图片描述

为什么要用 KubeVela?

云原生技术的发展趋势正在向利用方向发展 Kubernetes 实现高度一致、跨云、跨环境的应用交付,作为公共抽象层不断前进。然而,尽管 Kubernetes 它在统一的底层基础设施细节方面表现出色,在混合的分布式部署环境中没有提供软件交付模型和抽象的应用层。我们已经看到,这种缺乏统一上层抽象的软件交付过程,不仅降低了生产力,影响了用户体验,还导致了生产中的错误和故障。

然而,建模现代微服务应用的交付过程是一件高度碎片化和具有挑战性的事情。到目前为止,绝大多数试图解决上述问题的技术解决方案要么太简单,无法覆盖实际生产和使用中的问题,要么太复杂,难以使用。云原生带来的基础设施能力爆炸式增长也决定了新一代应用管理平台无法通过硬编码集成能力 UI 除了满足基本功能和场景外,平台本身的扩展能力已成为新时代应用管理平台的核心需求。这意味着该平台不仅应该简单易用,而且可以随着应用交付和管理需求的复杂性的提高而不断扩大,使开发者可以自助访问和使用,充分享受云原生态的红利。

这也是 KubeVela 核心价值:简化混合环境(多集群/多云/混合云/分布式云)的应用和交付过程;同时,它足够灵活,可以随时满足业务快速变化带来的迭代压力。它本身是一个面向混合交付环境和高可扩展性的应用交付引擎,以满足平台构建者的扩展和自建需求;同时,还增加了一系列开箱即用的扩展组件,可以让开发者自助开发和交付云本地应用。

KubeVela 核心功能

  • KubeVela 通过创新 开放应用模型(OAM)作为应用交付的顶层抽象,这样你就可以用声明的方式描述整个应用交付过程,并自动集成 CI/CD 及 GitOps 体系,通过 CUE 轻松扩展或重写您的交付过程。没有难以维护的脚本和复杂的连接代码,重用社区丰富的功能模块,不需要关注任何基础设施细节,专注于定义和部署应用程序,安排,到处运行!

  • KubeVela 自然支持多集群安全 RBAC 集成,还可以从社区插件中心找到一系列开箱即用的平台扩展,包括各种用户系统(LDAP 等)集成、多租户权限控制、安全验证扫描、应用可观测性等大量企业级能力。根据需求和场景轻松设计和定制您的平台扩展能力,满足业务快速增长的需求,并继续确保生产环境的稳定和安全。

  • KubeVela 本土支持金丝雀、蓝绿、多环境差异化配置等丰富的多集群/混合环境连续交付策略,也支持跨环境交付。这些交付策略为您的分布式交付过程提供了充分的效率和安全保障。KubeVela 集中控制能力也减轻了每个集群(云)调查问题的负担,为不同的平台提供统一的体验,让您享受自动交付的便利。

KubeVela 比较其它软件形式

KubeVela vs. CI/CD 系统(如 GitHub Actions,GitLab,Jenkins 等)

KubeVela 是工作 CI 流程下游的 CD 控制平面(Continuous Delivery Control Plane)。所以 KubeVela 希望你保持现有的 CI 流程,当需要开始产品部署时 KubeVela 接管 CD 流程。KubeVela 会给你的 CD 流程带来了大量现代应用交付的最佳实践,如声明交付工作流、可编程工作流步骤、Pull 模型、多云/多集群交付流程、统一云服务部署绑定等。

假如你已经在了 CD 采用了环节 GitOps 实践,KubeVela 和你在一起会更容易 CI/CD 因为 KubeVela 完全声明。只需要把 KubeVela 所有的应用部署描述文件都放在你的配置仓库里 KubeVela 特征(包括声明交付工作流、多云/多集群交付流程等。)会立即在你身上 的 GitOps 出现在过程中。

欢迎查阅用户手册了解更多信息 KubeVela 与各类 CI/CD 系统以及 GitOps 实践模式协作.

KubeVela vs. GitOps ( 如 ArgoCD,FluxCD 等)

KubeVela 可以基于你的 GitOps 增加跨云、跨环境的能力:

  • KubeVela 用户友好可编程的工作流可以让您集成现有的交付工具,包括通知和审批系统。
  • KubeVela 它能为您提供跨环境交付能力,让您在一个应用程序中描述多集群的差异化配置,并统一检查状态。

KubeVela vs. PaaS 平台 ( 如 Heroku,Cloud Foundry 等 )

传统 PaaS 旨在提高开发人员的体验和效率,提供完整的应用程序部署和管理功能。在这种情况下,KubeVela 目标也一样。

不过,KubeVela 最大的区别在于它们

KubeVela 可编程。其交付工作流甚至整个应用交付和管理能力集都由独立的可插拔模块组成,可以随时编写 CUE 添加/删除/重定义模板,变更将立即生效。与这种机制相比,传统的 PaaS 系统有很多限制:它们需要限制应用程序类型和提供的能力,以实现更好的用户体验,但随着应用程序交付需求的增长,用户需求将超过 PaaS 系统的能力边界。这种情况在 KubeVela 平台永远不会发生。

此外,KubeVela 它是一个独立于运行时集群的应用交付控制平面(这是我们认为的下一代 PaaS 合理形式的系统),现有的 PaaS 在运行过程中,集群通常以插件的形式部署。

KubeVela vs. Helm

Helm 是 Kubernetes 包管理器,它可以 Chart 为单位提供一组包装、安装和升级 YAML 文件的能力。

KubeVela 应用交付系统自然可以部署各种产品类型,Kustomize、Kubernetes Yaml 等等,当然也包括 Chart。Helm 可便把手 Chart 交付到集群,KubeVela 可以帮你把 Chart 多个集群交付。

当然,KubeVela 还支持其他产品格式,如其他产品格式,如 Kustomize。

KubeVela vs. Kubernetes

KubeVela 基于云原生技术栈构建的现代应用交付系统。采用开放应用模型(Open Application Model)和 Kubernetes 解决一个旷日持久的问题作为一个控制平面——如何使应用交付更加轻松愉快。

快速安装

  • 在 Kubernetes 请参考集群安装 高级安装.
  • 升级 KubeVela 请参考 升级文档.

1. 安装 elaD

VelaD 作为 KubeVela 的快速安装工具,帮助你在具有 Docker 的环境中快速一键完成安装。

  • VelaD 继承了 K3s 和 k3d 的能力,同时将 KubeVela 所需的制品整体打包。
  • VelaD 可以帮助你在离线环境中完成安装。
  • VelaD 目前仅适用于快速体验和测试开发, 生成环境安装请参考高级安装文档。

前提条件

  • Docker v20.10.5+ (runc >= v1.0.0-rc93) Linux system

下载 VelaD

curl -fsSl https://static.kubevela.net/script/install-velad.sh | bash -s 1.4.6
powershell -Command "iwr -useb https://static.kubevela.net/script/install.ps1 | iex"

veladvela 命令行工具将存储于 /usr/local/bin/,对于 Windows,存储于 C:\vela\

一键安装

velad install

查看到以下输出则代表安装成功:

Preparing K3s images...
Successfully prepare k3s image:  /Users/sunjianbo/.vela/velad/k3s/k3s-airgap-images-amd64.tgz
Successfully prepare k3d images

...snip...

KubeVela control plane has been successfully set up on your cluster.
If you want to enable dashboard, please run "vela addon enable /Users/sunjianbo/.vela/addons/velaux"

Keep the token below if you want to restart the control plane
K1075e7f6c77555e6ebdaf4854e4a2f39ae4287cfad23f27cdac5b33608d44633fe::server:zSpzbdbGzVxOwfBvvjgT

🚀  Successfully install KubeVela control plane
🔭  See available commands with `vela help`

设置 KubeConfig

export KUBECONFIG=$(velad kubeconfig --host)
vela comp

2. 安装 VelaUX

VelaUX 是面向企业的应用交付控制台和可视化平台。

vela addon enable ~/.vela/addons/velaux

查看到以下输出则代表安装成功:

Addon: velaux enabled Successfully.

如果你是在本地执行安装,你可以通过以下方式快速访问到 VelaUX:

vela port-forward -n vela-system addon-velaux 9082:80

或者也可以自定义端口:
vela port-forward addon-velaux -n vela-system 8080:80

Choose > Cluster: local | Namespace: vela-system | Component: velaux | Kind: Service for visit.

实际操作过程中,选择如下选项有效:

Cluster: local | Namespace: vela-system | Kind: Deployment | Name: velaux

如果你是在远程主机安装或希望使用更稳固的访问方式,请参考 VelaUX 高级安装说明。

VelaUX 是需要登陆认证的,默认管理员账号为 admin 密码为 。请首次登陆成功后修改管理员密码并谨记。

3. 卸载

velad uninstall

此命令将删除 VelaD 安装的环境, 其他自定义方式安装的请参考 KubeVela 卸载文档。

交付第一个应用

开始之前,请确认你已完成 KubeVela 的安装,参考 安装指导文档

欢迎使用 KubeVela, 在该章节中你可以学习到使用 KubeVela 部署一个基础的应用。

通过 CLI 部署应用

下面给出了一个经典的 OAM 应用定义,它包括了一个无状态服务组件和运维特征,三个部署策略和工作流步骤。此应用描述的含义是将一个服务部署到两个目标命名空间,并且在第一个目标部署完成后等待人工审核后部署到第二个目标,且在第二个目标时部署2个实例。

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: first-vela-app
spec:
  components:
    - name: express-server
      type: webservice
      properties:
        image: oamdev/hello-world
        ports:
         - port: 8000
           expose: true
      traits:
        - type: scaler
          properties:
            replicas: 1
  policies:
    - name: target-default
      type: topology
      properties:
        # local 集群即 Kubevela 所在的集群
        clusters: ["local"]
        namespace: "default"
    - name: target-prod
      type: topology
      properties:
        clusters: ["local"]
        # 此命名空间需要在应用部署前完成创建
        namespace: "prod"
    - name: deploy-ha
      type: override
      properties:
        components:
          - type: webservice
            traits:
              - type: scaler
                properties:
                  replicas: 2
  workflow:
    steps:
      - name: deploy2default
        type: deploy
        properties:
          policies: ["target-default"]
      - name: manual-approval
        type: suspend
      - name: deploy2prod
        type: deploy
        properties:
          policies: ["target-prod", "deploy-ha"]
  • 开始应用部署
# 此命令用于在管控集群创建命名空间
$ vela env init prod --namespace prod
$ vela up -f https://kubevela.net/example/applications/first-app.yaml

需要注意的是需要你的部署环境可以正常获取 oamdev/hello-world 镜像

  • 查看部署状态
$ vela status first-vela-app

正常情况下应用完成第一个目标部署后进入暂停状态。

  • 人工审核,批准应用进入第二个目标部署
$ vela workflow resume first-vela-app
  • 通过下述方式来访问该应用
$ vela port-forward first-vela-app 8000:8000
<xmp>
Hello World


                                       ## .
                                 ## ## ## ==
                              ## ## ## ## ## ===
                           /""""""""""""""""\___/ ===
                      ~~~ { 
        ~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
                           \______ o          _,/
                            \      \       _,' `'--.._\..--''
</xmp>

到这里,你已完成了第一个应用的部署。

目前,通过 CLI 创建的应用会同步到 UI 进行可视化,但它是只读的。

通过 UI 部署应用

登陆到 KubeVela UI 控制后,默认你将进入应用管理页面。点击页面右上方的 新建应用 按钮,输入应用基础信息:

  1. 应用名称、别名等基础信息;
  2. 选择一个应用所属项目,平台默认生成了 Default 项目,你可以根据需要创建新的项目;
  3. 选择主组件类型,这里我们选择默认的 webservice 类型。
  4. 选择部署环境,部署环境选项由不同的项目决定。

设置部署参数

设置完应用基础信息后进入第二步,设置主组件的部署参数,我们需要设置的参数包括:

  • 镜像地址: oamdev/hello-world
  • 端口信息:将默认的 80 端口变更为 8080 端口。

确认创建后即可完成应用配置,控制台创建的应用默认会根据所选环境生成 工作流 和一个设置副本数的 运维特征。

执行工作流部署应用

点击应用详情页右上方的 部署 按钮,选择指定环境的工作流即可开始部署应用,开始部署后可以切换到环境视图下打开应用资源拓扑图观测资源状态。

删除应用

如果在你测试完成后需要删除该应用,操作方式如下:

  1. 进入应用环境页面,点击 回收 按钮完成所有环境的资源回收。
  2. 回到应用列表页面,点击卡片中的操作按钮,点击删除选项确认删除即可。

到此,你完成了 KubeVela 的初体验。

核心概念

KubeVela 围绕着云原生应用交付和管理场景展开,背后的应用交付模型是 Open Application Model,简称 OAM 。

应用部署计划

KubeVela 的核心是将应用部署所需的所有组件和各项运维动作,描述为一个统一的、与基础设施无关的“部署计划”,进而实现在混合环境中标准化和高效率的应用交付。这使得最终用户无需关注底层细节,就可以使用丰富的扩展能力,并基于统一的概念自助式操作。

每一个应用部署计划都由四个部分组成,分别是组件、运维能力、部署策略和工作流。其格式如下:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: <name>
spec:
  components:
    - name: <component name>
      type: <component type>
      properties:
        <parameter values>
      traits:
        - type: <trait type>
          properties:
            <traits parameter values>
    - name: <component name>
      type: <component type>
      properties:
        <parameter values>
  policies:
  - name: <policy name>
    type: <policy type>
    properties:
      <policy parameter values>
  workflow:
    - name: <step name>
      type: <step type>
      properties:
        <step parameter values>   

这个 Application 对象会引用 componenttraitpolicy 以及 workflow step 的类型,这些类型背后是平台构建者(运维团队)维护的可编程模块。可以看到,这种抽象的方式是高度可扩展、可定制的。

  • : 组件定义一个应用包含的待交付制品(二进制、Docker 镜像、Helm Chart…)或云服务。我们认为一个应用部署计划部署的是一个微服务单元,里面主要包含一个核心的用于频繁迭代的服务,以及一组服务所依赖的中间件集合(包含数据库、缓存、云服务等),一个应用中包含的组件数量应该控制在约 15 个以内。
  • : 运维特征是可以随时绑定给待部署组件的、模块化、可拔插的运维能力,比如:副本数调整(手动、自动)、数据持久化、 设置网关策略、自动设置 DNS 解析等。
  • : 应用策略负责定义指定应用交付过程中的策略,比如多集群部署的差异化配置、资源放置策略、安全组策略、防火墙规则、SLO 目标等。
  • : 工作流由多个步骤组成,允许用户自定义应用在某个环境的交付过程。典型的工作流步骤包括人工审核、数据传递、多集群发布、通知等。

以上这些概念的背后都是由一组称为模块定义(Definitions)的可编程模块提供具体功能。KubeVela 会像胶水一样基于 Kubernetes API 定义基础设施定义的抽象并将不同的能力组合起来。下图描述了概念间的关系:

插件(Addon):可编程能力及其实现构成的包

插件包是由 OAM 的模块定义和背后的 Kubernetes CRD 控制器组成的集合。KubeVela 社区已经有一个完善的且在不断扩大的插件目录,比如 terraform 插件 提供了云资源的供给,fluxcd 插件 提供了 GitOps 能力等等。

不再配置漂移

除了扩展性和效率以外,许多围绕 IaC 的工具都会引发生产环境和配置中心数据不一致的问题,业界称之为“配置漂移”,引起配置漂移的核心原因往往来自于生产环境的配置修改有多个来源、平台对配置的覆盖不完整等。KubeVela 通过一个 Application 对象涵盖了所有应用涉及的配置、并通过 Kubernetes 控制循环 来维护状态,并基于此始终面向终态维护配置的一致性、消除配置漂移的问题,且保留基于 IaC 模式的扩展性和灵活性。

模块定义

模块定义是组成 KubeVela 平台的基本扩展能力单元,一个模块定义就像乐高积木,它将底层的能力封装成抽象的模块,使得这些能力可以被最终用户快速理解、使用并和其他能力组装、衔接,最终构成一个具有丰富功能的业务应用。模块定义最大的优势是可以被,在不同的业务应用中重复使用,在基于 KubeVela 的不同平台上均能执行。

目前 KubeVela 一共有四种不同类型的模块定义,分别是组件定义(ComponentDefinition)、运维特征定义(TraitDefinition)、策略定义(PolicyDefinition)以及工作流步骤定义(WorkflowStepDefinition),对应了构成应用的四个基本概念。

如何获取现成的模块定义?

除了自己编写模块定义以外,你可以通过以下两大途径获得社区已有的模块定义:

  • KubeVela 安装时自动就会安装内置的模块定义,你可以在下面这些参考文档中查看有哪些现成的能力:

    • 组件定义列表
    • 运维特征定义列表
    • 策略定义列表
    • 工作流步骤定义列表
  • 扩展插件列表

    ,作为 KubeVela 的扩展,每一个插件都包含一组模块定义以及支撑其功能的 CRD Controller。

    • 社区有一个插件注册中心包含了大量开箱即用的插件,由 KubeVela 核心维护者负责认证和维护。

模块定义的生命周期

一个模块定义通常有三个生命周期阶段:

发现

当模块定义被安装到 KubeVela 控制平面以后,最终用户就可以立即发现和查看它们。

  • 查看模块定义列表
$ vela def list
NAME                            TYPE                    NAMESPACE   DESCRIPTION
webservice                      ComponentDefinition     vela-system Describes long-running, scalable, containerized services
                                                                    that have a stable network endpoint to receive external
                                                                    network traffic from customers.
gateway                         TraitDefinition         vela-system Enable public web traffic for the component, the ingress API
                                                                    matches K8s v1.20+.
health                          PolicyDefinition        vela-system Apply periodical health checking to the application.
notification                    WorkflowStepDefinition  vela-system Send message to webhook
...snip...
  • 查看模块定义的参数
$ vela show webservice
# Properties
+------------------+-------------------------------------------------------------------------------------------+-----------------------------------+----------+---------+
|       NAME       |                                        DESCRIPTION                                        |               TYPE                | REQUIRED | DEFAULT |
+------------------+-------------------------------------------------------------------------------------------+-----------------------------------+----------+---------+
| cmd              | Commands to run in the container                                                          | []string                          | false    |         |
| env              | Define arguments by using environment variables                                           | [[]env](#env)                     | false    |         |
| labels           | Specify the labels in the workload                                                        | map[string]string                 | false    |         |
| annotations      | Specify the annotations in the workload                                                   | map[string]string                 | false    |         |
| image            | Which image would you like to use for your service                                        | string                            | true     |         |
| ports            | Which ports do you want customer traffic sent to, defaults to 80                          | [[]ports](#ports)                 | false    |         |
+------------------+-------------------------------------------------------------------------------------------+-----------------------------------+----------+---------+
...snip...

你也可以通过命令行打开一个网页查看这些参数:

vela show webservice --web
  • 在 KubeVela 的 UI 控制台(需安装 velaux 插件)也可以看到

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8dLBXsV0-1658985122974)(https://kubevela.io/zh/assets/images/definition-ui-f31ec9429ed15274d572b04c3ea04e22.png)]

模块定义在 UI 控制台上可以比较方便的查看,更重要的是会有一个比较好的用户体验,你还可以自定义 UI 展示来优化 UI 控制台上模块定义的参数展示。

使用

在 KubeVela 的 UI 控制台上使用模块定义是非常自然的,整个流程紧紧围绕应用部署计划展开,你只要跟着界面操作指引一步步点击即可使用。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zgx4WDDp-1658985122975)(https://kubevela.io/zh/assets/images/usage-of-def-6375cae19dcc6b316c5379ddf6bebb90.png)]

分为如下几步:

  1. 创建应用选择组件类型,这个过程就是选择使用某个组件定义。
  2. 填写组件的参数则会根据组件定义的不同出现不同的待填写参数。
  3. 运维特征、策略、工作流步骤的使用也是如此,分别在不同的应用部署计划业务流程中体现。

最终 UI 控制台会组装成一个符合 OAM 模型定义的完整应用部署计划,然后 KubeVela 控制器会自动化处理剩下的事情:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: first-vela-app
spec:
  components:
    - name: express-server
      type: webservice
      properties:
        image: oamdev/hello-world
        ports:
         - port: 8000
           expose: true
      traits:
        - type: scaler
          properties:
            replicas: 1
  policies:
    - name: target-default
      type: topology
      properties:
        clusters: ["local"]
        namespace: "default"
    - name: target-prod
      type: topology
      properties:
        clusters: ["local"]
        namespace: "prod"
    - name: deploy-ha
      type: override
      properties:
        components:
          - type: webservice
            traits:
              - type: scaler
                properties:
                  replicas: 2
  workflow:
    steps:
      - name: deploy2default
        type: deploy
        properties:
          policies: ["target-default"]
      - name: manual-approval
        type: suspend
      - name: deploy2prod
        type: deploy
        properties:
          policies: ["target-prod", "deploy-ha"]

使用 KubeVela 命令行工具来使用模块定义也是如此,只要编写上述 Application 对象的 YAML 文件即可,可以使用 vela 命令如下:

vela up -f https://kubevela.net/example/applications/first-app.yaml

Application 也是一种 Kubernetes 的 CRD,你可以通过 kubectl 工具,或者直接调用 Kubernetes API 集成 KubeVela 功能。

自定义

KubeVela 使用 CUE 配置语言来编写自定义模块,如果你对 CUE 语言还不熟悉也不必担心,可以查看 CUE 入门指南,花 15 分钟即可了解基本的实用操作。

一个模块定义包含输入、输出、操作以及这三者之间的衔接关系,一个简单的组件模块定义如下所示:

webserver: { 
        
    type: "component"
    attributes: { 
        }
}

template: { 
        
    parameter: { 
        
        name:  string
        image: string
    }
    output: { 
        
        apiVersion: "apps/v1"
        kind:       "Deployment"
        spec: { 
        
            containers: [{ 
        
                name:  parameter.name
                image: parameter.image
            }]
        }
    }
}

type 字段定义了这个模块是哪种类型(组件、运维特征、策略或者工作流步骤), parameter 定义了模块的输入,output 定义了模块的输出。还有一些高级的操作你可以通过了解如何管理、编写模块定义以及模块定义与 Kubernetes 的交互协议 等章节文档了解更多细节。

系统架构

KubeVela 的整体架构如下所示:

KubeVela 是一个控制平面系统

KubeVela 本身是一个的应用交付与管理控制平面,它架在 Kubernetes 集群、云平台等基础设施之上,通过开放应用模型来对组件、云服务、运维能力、交付工作流进行统一的编排和交付。KubeVela 这种与基础设施本身完全解耦的设计,很容易就能帮助你面向混合云/多云/多集群基础设施进行应用交付与管理。

而为了能够同任何 CI 流水线或者 GitOps 工具无缝集成,KubeVela 的 API(即开放应用模型)被设计为是声明式、完全以应用为中心的,它包括:

  • 帮助用户定义应用交付计划的 Application 对象
  • 帮助平台管理员通过 CUE 语言定义平台能力和抽象的X-Definition 对象
    • 比如 ComponentDefinitionTraitDefinition

在具体实现上,KubeVela 依赖一个独立的 Kubernetes 集群来运行。这其实是一个“有意为之”的设计:云原生社区中大量的实践已经证明“构建一个科学的、健壮的控制平面系统”,正是 Kubernetes 项目最擅长的工作。所以,依赖 Kubernetes 作为控制平面集群这个选择,虽然会增加一定的部署难度,却能够让我们以最原生的方式为大规模应用交付带来至关重要的“确定性”、“收敛性”和“自动化能力”。

具体来说,KubeVela 本身主要由如下几个部分组成:

  • 为整个系统提供核心控制逻辑,完成诸如编排应用和工作流、修订版本快照、垃圾回收等等基础逻辑
  • 负责对 X-Definitions 对象进行注册和管理。
  • 负责注册和管理 KubeVela 运行所需要的第三方插件,比如 VelaUX、 Flux、Terraform 组件等等。
  • UI 控制台服务于希望开箱即用的开发者用户,CLI 适用于集成 KubeVela 和终端管理的用户。

运行时基础设施

运行时基础设施是应用实际运行的地方。KubeVela 本身是完全与这些基础设施无关的,因此它允许你面向任何环境(包括 Kubernetes 环境,也包括非 Kubernetes 环境比如云平台和边缘设备等)去交付和管理任何类型的应用。

KubeVela 是可编程的

现实世界中的应用交付,往往是一个比较复杂的过程。哪怕是一个比较通用的交付流程,也会因为场景、环境、用户甚至团队的不同而千差万别。所以 KubeVela 从第一天起就采用了一种“可编程”式的方法来实现它的交付模型,这使得 KubeVela 可以以前所未有的灵活度适配到你的应用交付场景中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPQPH1Kv-1658985122975)(https://kubevela.io/zh/assets/images/kernel-a3960044e36db96e8153efe4f1051ce8.png)]

如果要详细学习 KubeVela 的可编程文档,欢迎查看文档网站中 自定义扩展 部分。

谁会使用 KubeVela?

  • 云原生应用平台的构建者、PaaS、Serverless 平台工程师、基础设施平台管理员:
    • KubeVela 是一个普适的、高可扩展的应用交付引擎与内核,它以极简的架构实现了原生 Kubernetes 多集群控制平面的能力,能够将 OAM 应用引擎直接植入企业已有的 PaaS 平台之中并不破坏已有的能力,从而实现标准化应用交付。
  • 第三方软件供应商(ISV)、垂直领域软件开发者、架构师:
    • KubeVela 提供的充分的可扩展和集成能力,可以允许你自定义插件 完成复杂应用的构建和分发,是一个 Kubernetes 和云平台之上的应用商店(App Store)。
  • 云原生时代的应用研发、运维人员、DevOps 工程师:
    • VelaUX 是一个基于 Vela Addon 机制构建的扩展能力集,安装这个插件后,你就拥有了一个开箱即用的现代化持续交付(CD)和应用管理平台。

总结

  • OAM(Open Application Model) 是 KubeVela 背后的模型,它提供了一组平台无关的最佳实践和方法论,能够为不同的公司和厂商构建应用平台提供理论指导,共同提供标准化应用支撑,让应用可以在不同的平台顺畅的运行、平滑的迁移。当前 OAM 模型的演进主要基于 KubeVela 的实践。
  • KubeVela 是基于 Kubernetes 的混合云应用交付和管理控制平面,它以 CRD 控制器 的形式运行,可以很轻量的安装到企业现有的 PaaS 体系中,并带来 OAM 的标准化模型和基于模型高可扩展功能的丰富社区插件。
  • VelaUX 是 KubeVela 的众多插件之一,这个插件为应用开发者提供了开箱即用的应用交付和管理能力,包括一组

KubeVela 团队将主要聚焦在核心控制器层面,面向所有用户提供可靠、易用的核心框架和能力。另一方面,我们通过构建 VelaUX 插件为中小型企业提供开箱即用的应用交付和管理功能,不仅可以扩大 OAM 模型的受众,也能吃自己的狗粮打磨 KubeVela 核心框架的可扩展性和插件体系。我们将在打磨核心控制器的同时,持续提供开箱即用的插件能力,并与开源社区的优质项目做更多更好的集成。

容器镜像

本文介绍企业基于 KubeVela 通过容器镜像交付业务应用的操作方式,通过该方式交付应用无需你学习过多的 Kubernetes 领域知识。

开始之前

  • 完成你的业务容器化,无论你的业务使用何种开发语言,请先将其通过 CI 系统或在本地完成运行镜像打包。
  • 将你的业务镜像存放于镜像仓库中,KubeVela 管理的集群可以正常获取该镜像。
  • 启用了 VelaUX 插件,如果你仅是 CLI 用户,直接参考 通过 CLI 部署

创建应用

进入应用管理页面,点击右上方的 新建应用 按钮,进入应用创建弹窗页面,输入应用名称等基础信息,选择 webservice 主组件类型,并选择需要部署的环境。点击下一步进入组件部署属性配置页面,如图所示,填写镜像名称、启动命令,端口等信息。根据你的集群支持情况选择合适的服务暴露方式。

如果你需要部署来自私有镜像仓库的镜像,请先进行镜像仓库配置,参考:私有镜像仓库配置

当你输入完镜像名称后,系统将自动开始加载镜像信息。如果你输入的镜像属于已配置的私有镜像仓库

标签: bc40no光电传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台