CNI with canal

“Canal” is a shorthand for saying “Calico and Flannel”, a common practise which sets up Calico to handle policy management and Flannel to manage the network itself. This combination brings in Calico’s support for the NetworkPolicy feature of Kubernetes, while utilizing Flannel’s UDP-based network traffic to provide for an easier setup experience that works in a wider variety of host network environments without special configuration.

Deploying Charmed Kubernetes with Canal

To deploy a cluster with Canal, deploy the kubernetes-canal bundle:

juju deploy cs:bundle/canonical-kubernetes-canal

The canal bundle is identical to the standard charmed-kubernetes bundle with the exception of replacing flannel with canal. You can apply any customisation overlays that would apply to charmed-kubernetes to this bundle also.

Canal configuration options

Name Type Default Description
calico-node-image string docker.io/calico/node:v3.6.1 The image id to use for calico/node.
calico-policy-image string docker.io/calico/kube-controllers:v3.6.1 The image id to use for calico/kube-controllers.
cidr string 10.1.0.0/16 Network CIDR to assign to Flannel
iface string   The interface to bind flannel overlay networking. The default value is the interface bound to the cni endpoint.
nagios_context string juju Used by the nrpe subordinate charms. A string that will be prepended to instance name to set the host name in nagios. So for instance the hostname would be something like: juju-myservice-0 If you’re running multiple environments with the same services in them this allows you to differentiate between them.
nagios_servicegroups string   A comma-separated list of nagios servicegroups. If left empty, the nagios_context will be used as the servicegroup
       

Checking the current configuration

To check the current configuration settings for Canal, run the command:

juju config canal

Setting a config option

To set an option, simply run the config command with and additional <key>=<value> argument. For example, to set a specific network CIDR:

juju config canal cidr="10.5.0.0/16"

Troubleshooting

If there is an issue with connectivity, it can be useful to inspect the Juju logs. To see a complete set of logs for canal:

juju debug-log --replay --include=canal

For additional troubleshooting pointers, please see the dedicated troubleshooting page.