FluxCD

该插件基于 Fluxcd

安装

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

  1. 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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: helm-redis
  5. spec:
  6. components:
  7. - name: redis
  8. type: helm
  9. properties:
  10. repoType: "helm"
  11. url: "https://charts.bitnami.com/bitnami"
  12. chart: "redis"
  13. version: "16.8.5"
  14. values:
  15. master:
  16. persistence:
  17. size: 16Gi
  18. replica:
  19. persistence:
  20. size: 16Gi

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: bucket-app
  5. spec:
  6. components:
  7. - name: bucket-comp
  8. type: helm
  9. properties:
  10. repoType: oss
  11. # required if bucket is private
  12. secretRef: bucket-secret
  13. chart: ./chart/podinfo-5.1.3.tgz
  14. url: oss-cn-beijing.aliyuncs.com
  15. oss:
  16. bucketName: definition-registry

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

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: app-delivering-chart
  5. spec:
  6. components:
  7. - name: terraform-controller
  8. type: helm
  9. properties:
  10. repoType: git
  11. url: https://github.com/oam-dev/terraform-controller
  12. chart: ./chart
  13. git:
  14. 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必填镜像地址oamdev/vela-core
secretRef选填镜像的拉取密钥my-secret
policy选填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 需要权限验证,你需要先通过下面的命令创建访问密钥:

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

创建应用:

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