

 **Aidez à améliorer cette page** 

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien **Modifier cette page sur** qui se trouve dans le volet droit de chaque page.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Configurer CNI pour les nœuds hybrides
<a name="hybrid-nodes-cni"></a>

Cilium est l'interface réseau de conteneurs (CNI) prise en AWS charge par les nœuds hybrides Amazon EKS. Vous devez installer un CNI pour que les nœuds hybrides soient prêts à prendre en charge les charges de travail. Les nœuds hybrides apparaissent avec le statut `Not Ready` jusqu’à ce qu’un CNI soit en cours d’exécution. Vous pouvez gérer le CNI à l’aide des outils de votre choix, tels que Helm. Les instructions fournies sur cette page concernent la gestion du cycle de vie de Cilium (installation, mise à niveau, suppression). Consultez [Présentation de Cilium Ingress et Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium), [Type de service LoadBalancer](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium-loadbalancer), et [Configurer les politiques réseau Kubernetes pour les nœuds hybrides](hybrid-nodes-network-policies.md) pour savoir comment configurer Cilium pour l’ingress, l’équilibrage de charge et les politiques réseau.

Cilium n'est pas pris en charge AWS lorsqu'il est exécuté sur des nœuds dans AWS le cloud. Le CNI VPC Amazon n’est pas compatible avec les nœuds hybrides et le CNI VPC est configuré avec une anti-affinité pour l’étiquette `eks.amazonaws.com/compute-type: hybrid`.

La documentation Calico qui figurait auparavant sur cette page a été déplacée vers le [référentiel d’exemples hybrides EKS](https://github.com/aws-samples/eks-hybrid-examples).

## Compatibilité des versions
<a name="hybrid-nodes-cilium-version-compatibility"></a>

Les versions Cilium `v1.17.x` et B `v1.18.x` sont prises en charge pour les nœuds hybrides EKS pour chaque version de Kubernetes prise en charge dans Amazon EKS.

**Note**  
 Configuration requise pour le **noyau Cilium v1.18.3 : En raison de l'exigence** du noyau (noyau Linux >= 5.10), Cilium v1.18.3 n'est pas pris en charge sur :
+ Ubuntu 20.04
+ Red Hat Enterprise Linux (RHEL) 8

Pour la configuration système requise, consultez la section Configuration requise pour [Cilium.](https://docs.cilium.io/en/stable/operations/system_requirements/)

Consultez la [prise en charge des versions Kubernetes](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html) pour connaître les versions Kubernetes prises en charge par Amazon EKS. Les nœuds hybrides EKS prennent en charge la même version de Kubernetes que les clusters Amazon EKS avec nœuds cloud.

## Fonctionnalités prises en charge
<a name="hybrid-nodes-cilium-support"></a>

 AWS gère des versions de Cilium pour les nœuds hybrides EKS basées sur le projet open source [Cilium](https://github.com/cilium/cilium). Pour bénéficier de l'assistance de AWS Cilium, vous devez utiliser les versions de Cilium AWS maintenues et les versions de Cilium prises en charge.

 AWS fournit un support technique pour les configurations par défaut des fonctionnalités suivantes de Cilium à utiliser avec les nœuds hybrides EKS. Si vous envisagez d'utiliser des fonctionnalités hors du champ d' AWS assistance, il est recommandé d'obtenir un support commercial alternatif pour Cilium ou de disposer de l'expertise interne nécessaire pour résoudre les problèmes et apporter des correctifs au projet Cilium.


| Fonction Cilium | Soutenu par AWS  | 
| --- | --- | 
|  Conformité au réseau Kubernetes  |  Oui  | 
|  Connectivité au cluster principal  |  Oui  | 
|  Famille d'IP  |  IPv4  | 
|  La gestion du cycle de vie  |  Helm  | 
|  Mode réseau  |  Encapsulation VXLAN  | 
|  Gestion des adresses IP (IPAM)  |  Champ d’application du cluster Cilium IPAM  | 
|  Stratégie de réseau  |  Stratégie réseau Kubernetes  | 
|  Protocole de passerelle frontière (BGP)  |  Plan de contrôle Cilium BGP  | 
|  Entrée Kubernetes  |  Cilium Ingress, Cilium Gateway  | 
|  Allocation d' LoadBalancer adresses IP de service  |  Équilibreur de charge Cilium IPAM  | 
|  Publicité d'adresse LoadBalancer IP du service  |  Plan de contrôle Cilium BGP  | 
|  remplacement de kube-proxy  |  Oui  | 

## Considérations relatives à Cilium
<a name="hybrid-nodes-cilium-considerations"></a>
+  **Référentiel Helm** [: AWS héberge le graphique Cilium Helm dans le Amazon Elastic Container Registry Public (Amazon ECR Public) sur Amazon EKS Cilium/Cilium.](https://gallery.ecr.aws/eks/cilium/cilium) Les versions disponibles incluent :
  + Cilium v1.17.9 : `oci://public.ecr.aws/eks/cilium/cilium:1.17.9-0` 
  + Cilium v1.18.3 : `oci://public.ecr.aws/eks/cilium/cilium:1.18.3-0` 

    Les commandes de cette rubrique utilisent ce référentiel. Notez que certaines commandes `helm repo` ne sont pas valides pour les référentiels Helm dans Amazon ECR Public. Vous ne pouvez donc pas faire référence à ce référentiel à partir d’un nom de référentiel Helm local. Au lieu de cela, utilisez l’URI complet dans la plupart des commandes.
+ Par défaut, Cilium est configuré pour fonctionner en mode overlay/tunnel avec VXLAN comme [méthode d’encapsulation](https://docs.cilium.io/en/stable/network/concepts/routing/#encapsulation). Ce mode présente le moins d’exigences sur le réseau physique sous-jacent.
+ Par défaut, Cilium [masque](https://docs.cilium.io/en/stable/network/concepts/masquerading/) l’adresse IP source de tout le trafic du pod quittant le cluster au profit de l’adresse IP du nœud. Si vous désactivez le masquage, votre pod CIDRs doit être routable sur votre réseau local.
+ Si vous exécutez des webhooks sur des nœuds hybrides, votre pod CIDRs doit être routable sur votre réseau local. Si votre pod CIDRs n'est pas routable sur votre réseau local, il est recommandé d'exécuter des webhooks sur les nœuds cloud du même cluster. Pour plus d’informations, consultez [Configurer les webhooks pour les nœuds hybrides](hybrid-nodes-webhooks.md) et [Préparer la mise en réseau pour les nœuds hybrides](hybrid-nodes-networking.md).
+  AWS recommande d'utiliser la fonctionnalité BGP intégrée de Cilium pour rendre votre pod CIDRs routable sur votre réseau local. Pour plus d’informations sur la configuration de Cilium BGP avec des nœuds hybrides, consultez [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md).
+ La gestion des adresses IP (IPAM) par défaut dans Cilium s'appelle [Cluster Scope](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/), où l'opérateur Cilium alloue des adresses IP à chaque nœud en fonction du pod configuré par l'utilisateur. CIDRs

## Installer Cilium sur les nœuds hybrides
<a name="hybrid-nodes-cilium-install"></a>

### Procédure
<a name="_procedure"></a>

1. Créez un fichier YAML nommé `cilium-values.yaml`. L’exemple suivant configure Cilium pour qu’il s’exécute uniquement sur des nœuds hybrides en définissant l’affinité pour l’étiquette `eks.amazonaws.com/compute-type: hybrid` de l’agent et de l’opérateur Cilium.
   + Configurez `clusterPoolIpv4PodCIDRList` avec le même pod CIDRs que celui que vous avez configuré pour les *réseaux de pods distants* de votre cluster EKS. Par exemple, `10.100.0.0/24`. L’opérateur Cilium attribue des tranches d’adresses IP à partir de l’espace IP `clusterPoolIpv4PodCIDRList` configuré. Votre CIDR de pod ne doit pas chevaucher votre CIDR de nœud sur site, votre CIDR VPC ou votre CIDR de service Kubernetes.
   + Configurez `clusterPoolIpv4MaskSize` en fonction du nombre de pods requis par nœud. Par exemple, `25` pour une taille de segment /25 de 128 pods par nœud.
   + Ne modifiez pas `clusterPoolIpv4PodCIDRList` ou `clusterPoolIpv4MaskSize` après avoir déployé Cilium sur votre cluster, consultez la section [Extension du pool de clusters](https://docs.cilium.io/en/stable/network/concepts/ipam/cluster-pool/#expanding-the-cluster-pool) pour plus d’informations.
   + Si vous exécutez Cilium en mode de remplacement de kube-proxy, définissez `kubeProxyReplacement: "true"` dans vos valeurs Helm et assurez-vous qu’aucun déploiement kube-proxy n’est en cours d’exécution sur les mêmes nœuds que Cilium.
   + L’exemple ci-dessous désactive le proxy Envoy Layer 7 (L7) utilisé par Cilium pour les politiques réseau L7 et l’entrée. Pour plus d’informations, consultez [Configurer les politiques réseau Kubernetes pour les nœuds hybrides](hybrid-nodes-network-policies.md) et [Présentation de Cilium Ingress et Cilium Gateway](hybrid-nodes-ingress.md#hybrid-nodes-ingress-cilium).
   + L’exemple ci-dessous configure `loadBalancer.serviceTopology` : `true` pour que la distribution du trafic de service fonctionne correctement si vous la configurez pour vos services. Pour de plus amples informations, veuillez consulter [Configuration de la distribution du trafic de service](hybrid-nodes-webhooks.md#hybrid-nodes-mixed-service-traffic-distribution).
   + Pour obtenir la liste complète des valeurs Helm pour Cilium, consultez la [référence Helm](https://docs.cilium.io/en/stable/helm-reference/) dans la documentation Cilium.

     ```
     affinity:
       nodeAffinity:
         requiredDuringSchedulingIgnoredDuringExecution:
           nodeSelectorTerms:
           - matchExpressions:
             - key: eks.amazonaws.com/compute-type
               operator: In
               values:
               - hybrid
     ipam:
       mode: cluster-pool
       operator:
         clusterPoolIPv4MaskSize: 25
         clusterPoolIPv4PodCIDRList:
         - POD_CIDR
     loadBalancer:
       serviceTopology: true
     operator:
       affinity:
         nodeAffinity:
           requiredDuringSchedulingIgnoredDuringExecution:
             nodeSelectorTerms:
             - matchExpressions:
               - key: eks.amazonaws.com/compute-type
                 operator: In
                 values:
                   - hybrid
       unmanagedPodWatcher:
         restart: false
     loadBalancer:
       serviceTopology: true
     envoy:
       enabled: false
     kubeProxyReplacement: "false"
     ```

1. Installez Cilium sur votre cluster.
   + `CILIUM_VERSION`Remplacez-le par une version Cilium (par exemple `1.17.9-0` ou`1.18.3-0`). Il est recommandé d’utiliser la dernière version du correctif pour la version mineure de Cilium.
   + Assurez-vous que vos nœuds répondent aux exigences du noyau pour la version que vous choisissez. Cilium v1.18.3 nécessite un noyau Linux >= 5.10.
   + Si vous utilisez un fichier kubeconfig spécifique, utilisez le drapeau `--kubeconfig` avec la commande d’installation Helm.

     ```
     helm install cilium oci://public.ecr.aws/eks/cilium/cilium \
         --version CILIUM_VERSION \
         --namespace kube-system \
         --values cilium-values.yaml
     ```

1. Vérifiez que l’installation de Cilium s’est bien déroulée à l’aide des commandes suivantes. Vous devriez voir le déploiement `cilium-operator` et l’exécution `cilium-agent` sur chacun de vos nœuds hybrides. De plus, vos nœuds hybrides devraient désormais avoir un statut `Ready`. Pour plus d'informations sur la façon de configurer Cilium BGP pour promouvoir votre pod sur votre réseau local, passez CIDRs à. [Configurer Cilium BGP pour les nœuds hybrides](hybrid-nodes-cilium-bgp.md)

   ```
   kubectl get pods -n kube-system
   ```

   ```
   NAME                              READY   STATUS    RESTARTS   AGE
   cilium-jjjn8                      1/1     Running   0          11m
   cilium-operator-d4f4d7fcb-sc5xn   1/1     Running   0          11m
   ```

   ```
   kubectl get nodes
   ```

   ```
   NAME                   STATUS   ROLES    AGE   VERSION
   mi-04a2cf999b7112233   Ready    <none>   19m   v1.31.0-eks-a737599
   ```

## Mettre à niveau Cilium sur les nœuds hybrides
<a name="hybrid-nodes-cilium-upgrade"></a>

Avant de mettre à niveau votre déploiement Cilium, consultez attentivement la [documentation relative à la mise à niveau de Cilium](https://docs.cilium.io/en/v1.17/operations/upgrade/) et les notes de mise à niveau afin de comprendre les modifications apportées à la version Cilium cible.

1. Assurez-vous d’avoir installé l’interface `helm` CLI dans votre environnement de ligne de commande. Consultez la [documentation Helm](https://helm.sh/docs/intro/quickstart/) pour obtenir les instructions d’installation.

1. Exécutez le contrôle de mise à niveau de Cilium avant le vol. Remplacez `CILIUM_VERSION` par votre version cible de Cilium. Nous vous recommandons d’utiliser la dernière version du correctif pour votre version mineure de Cilium. Vous trouverez la dernière version du correctif pour une version mineure donnée de Cilium dans la [section Versions stables](https://github.com/cilium/cilium#stable-releases) de la documentation Cilium.

   ```
   helm install cilium-preflight oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace=kube-system \
     --set preflight.enabled=true \
     --set agent=false \
     --set operator.enabled=false
   ```

1. Après avoir appliqué le `cilium-preflight.yaml`, assurez-vous que le nombre de pods `READY` correspond au nombre de pods Cilium en cours d’exécution.

   ```
   kubectl get ds -n kube-system | sed -n '1p;/cilium/p'
   ```

   ```
   NAME                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
   cilium                    2         2         2       2            2           <none>          1h20m
   cilium-pre-flight-check   2         2         2       2            2           <none>          7m15s
   ```

1. Une fois que le nombre de pods READY est égal, assurez-vous que le déploiement préalable de Cilium est également marqué comme READY 1/1. Si le message READY 0/1 s’affiche, consultez la section [Validation CNP](https://docs.cilium.io/en/v1.17/operations/upgrade/#cnp-validation) et résolvez les problèmes liés au déploiement avant de poursuivre la mise à niveau.

   ```
   kubectl get deployment -n kube-system cilium-pre-flight-check -w
   ```

   ```
   NAME                      READY   UP-TO-DATE   AVAILABLE   AGE
   cilium-pre-flight-check   1/1     1            0           12s
   ```

1. Supprimer le pré-vol

   ```
   helm uninstall cilium-preflight --namespace kube-system
   ```

1. Avant d’exécuter la commande `helm upgrade`, conservez les valeurs de votre déploiement dans un `existing-cilium-values.yaml` ou utilisez les options de ligne de commande `--set` pour vos paramètres lorsque vous exécutez la commande de mise à niveau. L'opération de mise à niveau remplace le Cilium ConfigMap. Il est donc essentiel que vos valeurs de configuration soient transmises lors de la mise à niveau.

   ```
   helm get values cilium --namespace kube-system -o yaml > existing-cilium-values.yaml
   ```

1. Pendant le fonctionnement normal du cluster, tous les composants Cilium doivent exécuter la même version. Les étapes suivantes décrivent comment mettre à niveau tous les composants d’une version stable vers une version stable ultérieure. Lors de la mise à niveau d’une version mineure vers une autre version mineure, il est recommandé de commencer par mettre à niveau vers la dernière version corrective de la version mineure existante de Cilium. Pour minimiser les perturbations, définissez l’option `upgradeCompatibility` sur la version initiale de Cilium que vous avez installée dans ce cluster.

   ```
   helm upgrade cilium oci://public.ecr.aws/eks/cilium/cilium --version CILIUM_VERSION \
     --namespace kube-system \
     --set upgradeCompatibility=1.X \
     -f existing-cilium-values.yaml
   ```

1. (Facultatif) Si vous devez annuler votre mise à niveau en raison de problèmes, exécutez les commandes suivantes.

   ```
   helm history cilium --namespace kube-system
   helm rollback cilium [REVISION] --namespace kube-system
   ```

## Supprimer Cilium des nœuds hybrides
<a name="hybrid-nodes-cilium-delete"></a>

1. Exécutez la commande suivante pour désinstaller tous les composants Cilium de votre cluster. Remarque : la désinstallation du CNI peut avoir un impact sur l’état des nœuds et des pods et ne doit pas être effectuée sur les clusters de production.

   ```
   helm uninstall cilium --namespace kube-system
   ```

   Les interfaces et les routes configurées par Cilium ne sont pas supprimées par défaut lorsque le CNI est supprimé du cluster. Consultez le [GitHub problème](https://github.com/cilium/cilium/issues/34289) pour plus d'informations.

1. Pour nettoyer les fichiers de configuration et les ressources sur disque, si vous utilisez les répertoires de configuration standard, vous pouvez supprimer les fichiers comme indiqué par le [`cni-uninstall.sh`script](https://github.com/cilium/cilium/blob/main/plugins/cilium-cni/cni-uninstall.sh) dans le référentiel Cilium sur. GitHub

1. Pour supprimer les définitions de ressources personnalisées Cilium (CRDs) de votre cluster, vous pouvez exécuter les commandes suivantes.

   ```
   kubectl get crds -oname | grep "cilium" | xargs kubectl delete
   ```