Enabling contrail-ansible-deployer to schedule Contrail controller and vrouter-agent PODs with Kubernetes

Registered by Ato

So far, contrail-ansible-deployer uses docker compose to deploy Contrail controller and vrouter-agent containers. Although this option needs to remain for backwards compatibility, docker compose has limitations when it comes to orchestrating and scheduling in a distributed environment:

1. The provisioning logic individually pushes docker compose manifests to each node.
2. docker compose has restart policy options but they are rudimentary.
3. docker compose does not provide any easy way to reassign roles to a node.

These limitations are nicely addressed by kubernetes:

1. manifests only reside in the kubernetes master
2. kubernetes have a native and advanced scheduling feature set
3. kubernetes node labels are easy to use and operate

For these and more reasons, it makes sense to provide the option of scheduling contrail as kubernetes POD. This is already available with the single YAML approach, but not with contrail-ansible-deployer. The single YAML approach is very rudimentary and based on a shell script whereas using the contrail-ansible-deployer to resolve the manifest gives much more control. The contrail-ansible-deployer will use a strategy based on smaller manifests per role, which are easier to maintain and evolve. That said, the single YAML approach was a very valuable effort and some of it will be reused for and adapted to this new feature.

In terms of deployment, initial discussions favor the creation of another playbook called install_contrail_over_k8s.yml as opposed to install_contrail.yml. The deployment strategies (centralized vs distributed) are so different for k8s vs compose that it does not make sense to support all through the same playbook.

Only linux will be supported. Deployment of vRouter on Windows is out of the scope.

Blueprint information

Status:
Not started
Approver:
Michael Henkel
Priority:
Undefined
Drafter:
Ato
Direction:
Needs approval
Assignee:
Ato
Definition:
Approved
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.