kruise-rollout
Kruise Rollout addon provides canary release capabilities for Kubernetes Deployment, Statefulset and OpenKruise CloneSet. For more details, please refer to: Kruise Rollout.
Installation
$ vela addon enable kruise-rollout
Addon: kruise-rollout enabled Successfully.
Uninstallation
$ vela addon disable kruise-rollout
Usage
Kurise rollout addon help to canary rollout your workload no matter defined with webservice or contained in a helm.
If your workload is in a helm chart please refer to doc for more usage info, otherwise please refer to usage of webservice component.
Properties
Name | Description | Type | Required | Default |
---|---|---|---|---|
canary | Configuration for canary rollout strategy | Canary | true | |
workloadType | Specify the target worklaod type | WorkloadType | false |
Canary
Name | Description | Type | Required | Default |
---|---|---|---|---|
steps | Defines the entire rollout process in steps | CanaryStep | true | |
trafficRoutings | Define traffic routing related service, ingress information | []TrafficRouting | true |
CanaryStep
Name | Description | Type | Required | Default |
---|---|---|---|---|
weight | Define the percentage of traffic routing to the new version in each step, e.g., 20%, 40%... | int | false | |
replicas | Define the replicas of release to the new version in each step, e.g., 5, 10... | int | false | |
duration | Define the behavior after release each step, if not filled, the default requires manual determination. If filled, it indicates the time to wait in seconds, e.g., 60 | int | false |
TrafficRouting
Name | Description | Type | Required | Default |
---|---|---|---|---|
service | Define service name | stirng | false | context.name |
ingressName | Define ingress name | string | false | context.name |
WorkloadType
Name | Description | Type | Required | Default |
---|---|---|---|---|
apiVersion | Target workload's apiVersion | string | true | |
kind | Target workload's kind | string | true |
Example
cat <<EOF | vela up -f -
apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
name: canary-demo
annotations:
app.oam.dev/publishVersion: v1
spec:
components:
- name: canary-demo
type: webservice
properties:
image: barnett/canarydemo:v1
ports:
- port: 8090
traits:
- type: scaler
properties:
replicas: 5
- type: gateway
properties:
domain: canary-demo.com
http:
"/version": 8090
- type: kruise-rollout
properties:
canary:
steps:
# The first batch of Canary releases 20% Pods, and 20% traffic imported to the new version, require manual confirmation before subsequent releases are completed
- weight: 20
# The second batch of Canary releases 90% Pods, and 90% traffic imported to the new version.
- weight: 90
trafficRoutings:
- type: nginx
EOF