Kubernetes has the ability to configure the networks serving your pods using IPv4, IPv6, or both (what is known as a dual stack). How the network protocols are configured differs depending on the flavor of Kubernetes and the hosting service you use. But once established, Volt can use whichever protocol is available. In the case of a dual stack, Volt will choose one or the other protocol for the individual interfaces as it needs.
Since XDCR involves communication between clusters, it is important you know which protocol is in use so you can
configure the XDCR connections. So the Volt Helm chart provides the .ipFamilies
property so you can
choose which protocol to use for XDCR communication. There are two flavors of the .ipFamilies
property,
depending on how you are configuring XDCR. If you are establishing an XDCR environment within a single namespace (as
described in Section 8.4, “Configuring XDCR in Local Namespaces”), you set the IP version in the
cluster.serviceSpec.dr.ipFamilies
property, as in the following example that sets the IP family to
IPv6:
cluster:
serviceSpec:
dr:
enabled: true
ipFamilies:
- IPv6
If you are configuring per pod XDCR, you select the IP version in the
cluster.serviceSpec.perpod.dr.ipFamilies
property; as in this example:
cluster:
serviceSpec:
perpod:
dr:
enabled: true
ipFamilies:
- IPv6
It is possible to customize the network environment even further using third-party networking services, such as Multus — which is a container networking service (CNI) plugin that gives pods access to multiple networks. Again, how you configure third-party services is beyond the scope of this manual and differs from one service to the next. However, these services provide instructions to the pods through annotations that you include in your Helm chart. Specifically, Volt supports annotation properties that affect the XDCR settings, which Multus can use to specify alternate networks, as in the following example:
cluster: ServiceSpec: dr: annotations: aviinfrasetting.ako.vmware.com/name: my-infra-sets clusterSpec: additionalAnnotations: k8s.v1.cni.cncf.io/networks: my-custom-network
See the Multus documentation for more information.