Replace EKS Anywhere Cilium with a custom CNI

Publish date: 2024-05-04

Replace EKS Anywhere Cilium with a custom CNI

This page provides walkthroughs on replacing the EKS Anywhere Cilium with a custom CNI. For more information on CNI customization see Use a custom CNI .

Note

When replacing EKS Anywhere Cilium with a custom CNI, it is your responsibility to manage the custom CNI, including version upgrades and support.

Prerequisites

Add a custom CNI to a new cluster

If an operator intends to uninstall EKS Anywhere Cilium from a new cluster they can enable the skipUpgrade option when creating the cluster. Any future upgrades to the newly created cluster will not have EKS Anywhere Cilium upgraded.

  • Generate a cluster configuration according to the Getting Started section.

  • Modify the Cluster object’s spec.clusterNetwork.cniConfig.cilium.skipUpgrade field to equal true.

  • apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: Cluster metadata:  name: eks-anywhere spec:  clusterNetwork:  cniConfig:  cilium:  skipUpgrade: true  ... 
  • Create the cluster according to the Getting Started guide.

  • Pause reconciliation of the cluster. This ensures EKS Anywhere components do not attempt to remediate issues arising from a missing CNI.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused=true 
  • Uninstall EKS Anywhere Cilium.

    cilium uninstall 
  • Install a custom CNI.

  • Resume reconciliation of the cluster object.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused- 

    Add a custom CNI to an existing cluster with eksctl

  • Modify the existing Cluster object’s spec.clusterNetwork.cniConfig.cilium.skipUpgrade field to equal true.
  • apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: Cluster metadata:  name: eks-anywhere spec:  clusterNetwork:  cniConfig:  cilium:  skipUpgrade: true  ... 
  • Upgrade the EKS Anywhere cluster .

  • Pause reconciliation of the cluster. This ensures EKS Anywhere components do not attempt to remediate issues arising from a missing CNI.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused=true 
  • Uninstall EKS Anywhere Cilium.

    cilium uninstall 
  • Install a custom CNI.

  • Resume reconciliation of the cluster object.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused- 

    Add a custom CNI to an existing cluster with Lifecycle Controller

    Warning

    Clusters created using the Full Lifecycle Controller prior to v0.15 that have removed the EKS Anywhere Cilium CNI must manually populate their cluster.anywhere.eks.amazonaws.com object with the following annotation to ensure EKS Anywhere does not attempt to re-install EKS Anywhere Cilium.

    anywhere.eks.amazonaws.com/eksa-cilium: "" 
  • Modify the existing Cluster object’s spec.clusterNetwork.cniConfig.cilium.skipUpgrade field to equal true.
  • apiVersion: anywhere.eks.amazonaws.com/v1alpha1 kind: Cluster metadata:  name: eks-anywhere spec:  clusterNetwork:  cniConfig:  cilium:  skipUpgrade: true  ... 
  • Apply the cluster configuration to the cluster and await successful object reconciliation.

    kubectl apply -f <cluster config path> 
  • Pause reconciliation of the cluster. This ensures EKS Anywhere components do not attempt to remediate issues arising from a missing CNI.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused=true 
  • Uninstall EKS Anywhere Cilium.
  • cilium uninstall 
  • Install a custom CNI.

  • Resume reconciliation of the cluster object.

  • kubectl --kubeconfig=MANAGEMENT_KUBECONFIG -n eksa-system annotate clusters.cluster.x-k8s.io WORKLOAD_CLUSTER_NAME cluster.x-k8s.io/paused- 

    ncG1vNJzZmiZnq7EqbHRnmWeo6Njrq6t2ailmq%2BjY7CwuY6dppyrX5i5tr%2FTnqmmn52pfK%2Bx07Cmq6OZo7Rwr8uuqq2domK%2FprzLmpqeZZOeuarBzGg%3D