---
title: Charmhub | Deploy Kubernetes Core using Charmhub - The Open Operator Collection
description: Deploy the latest version of Kubernetes Core on any cloud.
url: https://charmhub.io/kubernetes-core/configurations/calico
---

##### We've discontinued the registration of new Bundles

New Bundle registrations are no longer accepted. Existing bundles remain functional. We recommend using the Juju Terraform Provider for new deployments.

[Learn more](https://discourse.charmhub.io/t/discontinuing-new-charmhub-bundle-registrations/15344)

# Kubernetes Core

[Canonical Kubernetes](https://charmhub.io/publisher/containers "View all packages from Canonical Kubernetes")
| bundle

* [Canonical Kubernetes](https://charmhub.io/publisher/containers "View all packages from Canonical Kubernetes")
  | bundle
* [Cloud](https://charmhub.io/?filter=cloud)

Platform:

stable 1886

```
juju deploy kubernetes-core
```

[Learn to deploy on juju >](https://juju.is/docs/juju/manage-applications)

* [Calico](https://charmhub.io/kubernetes-core/configurations/calico)
* [Containerd](https://charmhub.io/kubernetes-core/configurations/containerd)
* [Easyrsa](https://charmhub.io/kubernetes-core/configurations/easyrsa)
* [Etcd](https://charmhub.io/kubernetes-core/configurations/etcd)
* [Kubernetes Control Plane](https://charmhub.io/kubernetes-core/configurations/kubernetes-control-plane)
* [Kubernetes Worker](https://charmhub.io/kubernetes-core/configurations/kubernetes-worker)

[Learn about configurations >](https://juju.is/docs/juju/configuration#heading--application-configuration)

* bgp-service-cluster-ips | string

  Space-separated list of service cluster CIDRs to advertise over BGP.
  These will be passed to the .spec.serviceClusterIPs field of the default
  BGPConfiguration in Calico.
  Example value: ”10.0.0.0/24 10.0.1.0/24”
* bgp-service-external-ips | string

  Space-separated list of service external CIDRs to advertise over BGP.
  These will be passed to the .spec.serviceExternalIPs field of the default
  BGPConfiguration in Calico.
  Example value: ”10.0.0.0/24 10.0.1.0/24”
* bgp-service-loadbalancer-ips | string

  Space-separated list of service load-balancer CIDRs to advertise over BGP.
  These will be passed to the .spec.serviceLoadBalancerIPs field of the default
  BGPConfiguration in Calico.
  Example value: ”10.0.0.0/24 10.0.1.0/24”
* cidr | string

  Default: 192.168.0.0/16

  Network CIDR assigned to Calico. This is applied to the default Calico
  pool, and is also communicated to the Kubernetes charms for use in
  kube-proxy configuration.
  Calico assigns IP addresses to Kubernetes nodes in blocks of 64 addresses.
  It is recommended to make the Calico network large enough to assign at
  least one 64 address block to each kubernetes-control-plane and
  kubernetes-worker unit.
* disable-vxlan-tx-checksumming | boolean

  Default: True

  When set to true, if VXLAN encapsulation is in use, then the charm will
  disable TX checksumming on the vxlan.calico network interface. This works
  around an upstream issue in Calico:
  https://github.com/projectcalico/calico/issues/3145
* global-as-number | int

  Default: 64512

  Global AS number.
* global-bgp-peers | string

  Default: []

  List of global BGP peers. Each BGP peer is specified with an address and
  an as-number.
  Example value: "[{address: 10.0.0.1, as-number: 65000}, {address: 10.0.0.2, as-number: 65001}]"
* ignore-loose-rpf | boolean

  Enable or disable IgnoreLooseRPF for Calico Felix. This is only used
  when rp\_filter is set to a value of 2.
* image-registry | string

  Default: rocks.canonical.com:443/cdk

  Source registry of Calico images.
  By setting to a value, each image listed in the releases manifest
  has its image-registry replaced.
* ipip | string

  Default: Never

  IPIP encapsulation mode. Must be one of "Always", "CrossSubnet", or "Never".
  This is incompatible with VXLAN encapsulation. If VXLAN encapsulation is
  enabled, then this must be set to "Never".
* manage-pools | boolean

  Default: True

  If true, a default pool is created using the cidr and ipip charm
  configuration values.
  Warning: When manage-pools is enabled, the charm will delete any pools
  that are unrecognized.
* nat-outgoing | boolean

  Default: True

  NAT outgoing traffic
* node-to-node-mesh | boolean

  Default: True

  When enabled, each Calico node will peer with every other Calico node in
  the cluster.
* release | string

  Version of Calico to deploy
* route-reflector-cluster-ids | string

  Default: {}

  Mapping of unit IDs to route reflector cluster IDs. Assigning a route
  reflector cluster ID allows the node to function as a route reflector.
  Example value: "{0: 224.0.0.1, 2: 224.0.0.1}"
* subnet-as-numbers | string

  Default: {}

  Mapping of subnets to AS numbers, specified as YAML. Each Calico node
  will be assigned an AS number based on the entries in this mapping.
  Example value: "{10.0.0.0/24: 64512, 10.0.1.0/24: 64513}"
  If a node's IP matches any of the specified subnets, then the
  corresponding AS number is used instead of the global one.
  If a node's IP matches no subnets, then the global AS number will be
  used instead.
  If a node's IP matches multiple subnets, then the most specific subnet
  will be used, e.g. a /24 subnet will take precedence over a /16.
* subnet-bgp-peers | string

  Default: {}

  Mapping of subnets to lists of BGP peers. Each BGP peer is specified with
  an address and an as-number.
  Example value: "{10.0.0.0/24: [{address: 10.0.0.1, as-number: 65000}, {address: 10.0.0.2, as-number: 65001}], 10.0.1.0/24: [{address: 10.0.1.1, as-number: 65002}]}"
  If a node's IP matches multiple subnets, then peerings will be added for
  each matched subnet.
* unit-as-numbers | string

  Default: {}

  Mapping of unit IDs to AS numbers, specified as YAML. Each Calico node
  will be assigned an AS number based on the entries in this mapping.
  Example value: "{0: 64512, 1: 64513}"
  This takes precedence over global-as-number and subnet-as-numbers.
* unit-bgp-peers | string

  Default: {}

  Mapping of unit IDs to lists of BGP peers. Each BGP peer is specified
  with an address and an as-number.
  Example value: "{0: [{address: 10.0.0.1, as-number: 65000}, {address: 10.0.0.2, as-number: 65001}], 1: [{address: 10.0.1.1, as-number: 65002}]}"
* veth-mtu | int

  Set veth MTU size. This should be set to the MTU size of the base network.
  If VXLAN is enabled, then the charm will automatically subtract 50 from the
  specified MTU size.
  If IPIP is enabled, then the charm will automatically subtract 20 from the
  specified MTU size.
* vxlan | string

  Default: Never

  VXLAN encapsulation mode. Must be one of "Always", "CrossSubnet", or "Never".
  This is incompatible with IPIP encapsulation. If IPIP encapsulation is
  enabled, then this must be set to "Never".
