Skip to main content
版本:v1.5

FluxCD

该插件基于 Fluxcd

安装

你可以通过 vela 的命令行工具,执行以下命令安装该插件。

vela addon enable fluxcd

Definitions

安装插件之后,这些 definition 将会被启用。

名称类型描述
helmComponentDefinition交付一个存储在 helm 仓库、OSS bucket 或者 git 当中 helm chart
kustomizeComponentDefinition交付一个存储在 helm 仓库、OSS bucket 或者 git 当中 的 kustomize 格式的制品包
kustomize-json-patchTraitDefinition为工作负载配置多个 JSON6902 patch
kustomize-patchTraitDefinition为工作负载配置多个 StrategicMerge or JSON6902 patch
kustomize-strategy-mergeTraitDefinition为工作负载配置多个 patchesStrategicMerge patch

helm

参数

参数描述示例
repoType必填,仓库类型:"helm","git" 或者 "oss"Helm
pullInterval选填,仓库同步时间周期, 默认为 5m5m
url必填,仓库的访问地址,git 或者 helm 仓库的 URL 或者 OSS 的 endpointhttps://charts.bitnami.com/bitnami
secretRef选填,访问仓库的 Secret 名称sec-name
timeout选填,从仓库下载制品包的超时时间60s
chart必填,对于 git/oss 的仓库这个参数用来指定 chart 的相对路径。对于 helm 仓库用来指定 chart 名称redis-cluster
version选填,chart 的版本6.2.7
targetNamespace选填,chart 的安装的命名空间your-ns
releaseName选填,chart 的安装名称your-rn
values选填,覆盖定义在 chart 包中 Values.yaml 的参数
installTimeout选填,执行安装操作的超时时间,默认配置是 10 分钟20m
interval选填,同步的时间间隔,默认是 30s1m
oss选填, The oss 的仓库配置
git选填, The git 的仓库配置
OSS
参数描述示例
bucketName必填, bucket 名称your-bucket
provider选填, generic 或 aws, 如果你的 OSS 验证信息需要从 EC2 中获取,请填 AWS 默认是 generic.generic
region选填, bucket region
Git
参数描述示例
branch选填, Git 分支, 默认是 masteryour-branch

例子

如果你的 chart 存贮在 helm repository 中,你可以通过创建以下的应用去交付这个 chart

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: helm-redis
spec:
components:
- name: redis
type: helm
properties:
repoType: "helm"
url: "https://charts.bitnami.com/bitnami"
chart: "redis"
version: "16.8.5"
values:
master:
persistence:
size: 16Gi
replica:
persistence:
size: 16Gi

如果你的 chart 存贮在 OSS 中,你可以通过创建以下的应用去交付这个 chart

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: bucket-app
spec:
components:
- name: bucket-comp
type: helm
properties:
repoType: oss
# required if bucket is private
secretRef: bucket-secret
chart: ./chart/podinfo-5.1.3.tgz
url: oss-cn-beijing.aliyuncs.com
oss:
bucketName: definition-registry

如果你的 chart 存贮在 git 中,你可以通过创建以下的应用去交付这个 chart

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: app-delivering-chart
spec:
components:
- name: terraform-controller
type: helm
properties:
repoType: git
url: https://github.com/oam-dev/terraform-controller
chart: ./chart
git:
branch: master

kustomize

参数

参数描述示例
repoType必填,仓库类型:"helm","git" 或者 "oss"oss
pullInterval选填,仓库同步时间周期, 默认为 5m10m
url必填,仓库的访问地址,git 或者 helm 仓库的 URL 或者 OSS 的 endpointoss-cn-beijing.aliyuncs.com
secretRef选填,访问仓库的 Secret 名称sec-name
timeout选填,从仓库下载制品包的超时时间60s
path必填,包含 kustomization.yaml 目录路径./prod
oss选填,oss 源的配置
git选填,git 源的配置
imageRepository选填,[repository](#Image Repository) 镜像自动更新相关配置
Image Repository
参数是否必填描述示例
image必填镜像地址oamdev/vela-core
secretRef选填镜像的拉取密钥my-secret
policy选填[Policy](#Image policy) 镜像更新策略
filterTags选填FilterTags 镜像标签的过滤策略$timestamp
commitMessage选填提交信息
Image policy
参数是否必填描述示例
alphabetical.order选填字母表顺序排序asc
numerical.order选填依据数字顺序排序asc
semver.range选填根据 semver 排序,选择符合规则的最新版本'>=1.0.0 <2.0.0'
FilterTags
参数是否必填描述示例
extract选填镜像 tag 提取策略$timestamp
pattern选填镜像过滤策略模版'^master-[a-f0-9]'

示例

  1. 如果你的 kustomize 制品包存储在 OSS 中,你可以通过一下步骤部署它:

(非必须) 如果你的 OSS bucket 需要权限验证,你需要先通过下面的命令创建访问密钥:

$ kubectl create secret generic bucket-secret --from-literal=accesskey=<your-ak> --from-literal=secretkey=<your-sk>
secret/bucket-secret created

创建应用:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: bucket-app
spec:
components:
- name: bucket-comp
type: kustomize
properties:
repoType: oss
# If the bucket is private, you will need to provide
secretRef: bucket-secret
url: oss-cn-beijing.aliyuncs.com
oss:
bucketName: definition-registry
path: ./app/prod/
  1. 如果你的制品包存储在 git 中,你可以创建以下应用来部署它:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: git-app
spec:
components:
- name: git-comp
type: kustomize
properties:
repoType: git
url: https://github.com/<path>/<to>/<repo>
git:
branch: master
provider: GitHub
path: ./app/dev/
  1. 如果你希望你的应用能够跟随镜像变更自动更新,你可以通过创建下面的应用:
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: image-app
spec:
components:
- name: image
type: kustomize
properties:
imageRepository:
image: <your image>
secretRef: imagesecret
filterTags:
pattern: '^master-[a-f0-9]+-(?P<ts>[0-9]+)'
extract: '$ts'
policy:
numerical:
order: asc
commitMessage: "Image: {{range .Updated.Images}}{{println .}}{{end}}"