Skip to main content
版本:预览版

FluxCD

该插件基于 Fluxcd

安装

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

vela addon enable fluxcd

如果你只想利用 fluxcd addon 部署 helm 应用,你可以执行下面的命令启只启用 helm 相关的组件:

$ vela addon enable fluxcd onlyHelmComponents=true

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}}"