Installation Guide

December 16, 2020 · View on GitHub

Cyclone has been tested with Kubernetes 1.12, 1.13 and 1.14.

Install With Helm

Prerequisites

Cyclone can be easily installed with Helm with a version higher than 2.10, refer to helm install guide for Helm installation.

You can use helm template to generate Kubernetes manifests for Cyclone and then install it using kubectl apply, or you can use helm install to manage Cyclone installation by Tiller. You can install Tiller after Helm is ready with command:

$ helm init --history-max 200

Customizable Installation

The simplest way to install Cyclone is using Helm chart. By default, images are pulled from DockerHub, so make sure DockerHub is accessible from your cluster.

$ helm install --name cyclone --namespace cyclone-system ./helm/cyclone

If you want to use your own private registry, you can configure it as:

$ helm install --name cyclone --namespace cyclone-system --set imageRegistry.registry=cargo.caicloud.xyz,imageRegistry.project=release ./helm/cyclone

For more detailed configuration, please use values file, default values file is a good reference on how to write it.

$ helm install --name cyclone --namespace cyclone-system -f <path-to-your-values-file> ./helm/cyclone

If you want to release after change charts, you can upgrade with command:

$ helm upgrade cyclone ./helm/cyclone

If you want to uninstall Cyclone, you can clean up it with command:

$ helm delete --purge cyclone

Configuration

Common Configurations

ParameterDescriptionDefault
imageRegistry.registryImage registry where to pull imagesdocker.io
imageRegistry.projectProject in the registry where to pull Cyclone component imagescaicloud
imageRegistry.libraryProjectProject in the registry where to pull common images, like busyboxlibrary
serverAddressAddress of the Cyclone Server (provides Restful APIs)cyclone-server.default.svc.cluster.local::7099
systemNamespaceNamespace where Cyclone will be installeddefault

Workflow Engine Configurations

ParameterDescriptionDefault
engine.imagesImages used in workflow engine, for example, engine.images.gc (default alpine:3.8) defines image used for garbage collection.alpine:3.8 for engine.images.gc, docker:18.03-dind for dind
engine.gc.enabledWhether enable garbage collectiontrue
engine.gc.delaySecondsTime to wait before cleaning up execution of a workflow. It gives users chance to check the execution details (for example, pods, data on PVC) when execution finished300
engine.gc.retryHow many times to retry (include the initial one, so 1 means no retry) when performing GC1
engine.limits.maxWorkflowRunsMaximum number of execution records to keep for each workflow50
engine.resourceRequirementDefault resource requirements that would be applied to each stage, if non specified when execute a workflowCPU: 50m/100m, Memory: 128Mi/256Mi
engine.notification.urlURL where to notify workflow execution result, it's Cyclone server by defaulthttp://cyclone-server.default.svc.cluster.local::7099/apis/v1alpha1/notifications
engine.developModeWhether it's in develop mode, in develop mode, ImagePullPolicy would be Always in the enginetrue
engine.executionContext.namespaceIf no execution context(cluster, namespace, PVC) specified when run workflow, use this namespace in control clustercyclone-system
engine.executionContext.pvcIf no execution context specified when run workflow, use this PVCcyclone-pvc-system

Cyclone Server Configurations

ParameterDescriptionDefault
server.listenAddressAddress where Cyclone server will serve0.0.0.0
server.listenPortPort that Cyclone server will serve on7099
server.nodePortNode port that Cyclone server will expose its service from the cluster30011
server.init.defaultTenantWhether init default tenant system in the installationtrue
server.init.templatesWhether init stage templatestrue
server.openControlClusterWhen a tenant created, whether to open control cluster for the tenant to run workflow, to open control cluster, PVC would be createdtrue
server.pvc.storageClassDefault StorageClass used to create PVCEmpty string
server.pvc.sizeDefault PVC size if not specified10Gi
server.resourceRequirementResource quota applied to namespace create for tenant to run workflowCPU: 1/2, Memory: 2Gi/4Gi
server.storageWatcher.reportUrlURL to report PVC usage, it's Cyclone server by defaulthttp://cyclone-server.default.svc.cluster.local::7099/apis/v1alpha1/storage/usages
server.storageWatcher.intervalSecondsTime interval to report PVC usage30
server.storageWatcher.resourceRequirementsResource requirements applied to the storage watcher podCPU: 50m/100m, Memory: 32Mi/64Mi

Cyclone Web Configurations

ParameterDescriptionDefault
web.replicasReplicas of cyclone web1
web.listenPortPort Cyclone web will listen on80
web.nodePortNode port that Cyclone web will expose its service30022

Build Images

If you'd like to build images from the source code, please do it as:

$ docker login <registry> -u <user> -p <pwd>
$ make push REGISTRIES=<registry>/<project>

Here / specifies the registry and project where to push your images, for example, cargo.caicloud.xyz/release.

Then install Cyclone with Helm.

$ helm install --name cyclone --namespace cyclone-system --set imageRegistry.registry=<registry>,imageRegistry.project=<project> ./helm/cyclone