This section will introduce how to use Rollout Trait to perform a rolling update on Component.
The component supported for rollout is:
Before using this trait you must enable the
rollout addon by this command.
Apply the Application YAML below which includes a webservice-type workload with Rollout Trait, and control version of component name to be express-server-v1.
This Rollout Trait has target size of 5 and two rollout batches. The first batch has 2 replicas and second batch has 3. Only after all replicas in the first batch are ready, it will start to rollout the second batch.
Check the Application status whether the rollout is successful:
Check the status of Rollout Trait. The rollout is successful only if
rolloutSucceed, and all replicas are ready only if
READY indicates target size of replicas is 5, updated number of replicas is 5 and all 5 replicas are ready.
Check Workload Status (Underlying resource behind the workload is deployment)
Apply the YAML below to modify the image of the container. It will generate a new ControllerRevision.
This Rollout Trait represents the target size of replicas is 5 and update will be performed in 2 batches. The first batch will update 2 replicas and the second batch will update 3 replicas. Only 2 replicas in first batch will be updated by setting
batchPartition to 0.
Check controllerRevision and there is a new controllerRevision express-server-v2.
Check the status of Rollout Trait after a while when first batch has been upgraded successfully.
READY indicates the target size of replicas for this revision is 5, there are 2 replicas sucessfully upgraded and they are ready. batchReady means replicas in the first rolloutBatch are all ready, rollingInBatches means there are batches still yet to be upgraded.
Check Workload status to verify, we can see there are 2 replicas of new Workload express-server-v2 have been upgraded and old version of Workload express-server-v1 still has 3 replicas.
Apply the YAML below without
batchPartition field in Rollout Trait to upgrade all replicas to latest revision.
Check Rollout Trait, we can see rollout is succeed.
Check Workload status, all replicas of Workload has been upgraded to a new revision and old workload has been deleted.
Apply the YAML below to make controllerRevision roll back to express-server-v1 by assigning
targetRevision field to express-server-v1 in Rollout Trait.
Check Rollout Trait status after rollback has been succeed.
Check Workload status, we can see Workload has rolled back to express-server-v1.
Rollout Trait also be able to scale up a Workload, apply the YAML below to modify the
targetSize, in order to increase the number of replicas from 5 to 7.
This Rollout Trait represents it will scale workload up to 7. You also can set every batch's number by setting
Notice: A known issue exists if you scale up/down the workload twice or more times by not setting the
rolloutBatches.So please set the
rolloutBatches when scale up/down.
Check the status after expansion has been succeed.
Apply the YAML below to scale down the size of replicas from 7 to 3.
This Rollout Trait scale workload down to 5.
Check the status after scale up has been succeed.
You need to enable kruise addon。
Check types of components.
Apply the YAML below to create an Application, this Application includes a Workload of type cloneset with a Rollout Trait.
Check the status of related resources.
Check the status of Workload. As cloneset Workload supports in-place upgrade, the most noticeable difference between it and webservice/worker is that the name of underlying Workload's name is exactly the component's name.
Check the image.
Apply the YAML below to upgrade the image.
Check the status of related resources after upgrade has been succeed.
Check the status of the Workload, we can see the name after upgrade is still cloneset-server.
Verify the rollout by checking the image.
Other operations such as Scale up, Scale down, Rollback are the same as the operations on webservice/worker.
Rollout Trait supports following workload types: webservice,worker and cloneset.
When using webservice/worker as Workload type with Rollout Trait, Workload's name will be controllerRevision's name. And when Workload's type is cloneset, because of clonset support in-place update Workload's name will always be component's name.