Service Mesh (ASM) vous permet de créer un filtre Envoy à l'aide des CustomResourceDefinitions (CRD) EnvoyFilterTemplate et EnvoyFilterTemplateBinding. Un même modèle de filtre Envoy peut servir à créer plusieurs filtres, applicables à différentes charges de travail et namespaces. Cette approche favorise la réutilisation des configurations et améliore l'efficacité de la gestion.
Exemple de configuration
Le bloc de code suivant définit une CRD EnvoyFilterTemplate. Celle-ci spécifie le contenu d'un modèle de filtre Envoy destiné aux instances ASM dont la version Istio est 1,19 ou ultérieure. Elle inclut également une CRD EnvoyFilterTemplateBinding. Grâce à cette dernière, créez un filtre Envoy qui s'applique au namespace istio-system, ce qui signifie qu'il agit globalement sur l'instance ASM. Le filtre cible tous les proxies Envoy en version 1,20. Son contenu provient du modèle de filtre Envoy défini dans la CRD EnvoyFilterTemplate, lequel s'applique aux instances ASM exécutant Istio 1,19 ou une version plus récente.
Le code YAML ci-dessus génère le filtre Envoy suivant :
Description des champs EnvoyFilterTemplate
EnvoyFilterTemplate définit une série de filtres Envoy adaptés à différentes versions d'Istio. Les filtres Envoy gérés manuellement peuvent devenir incompatibles avec les instances ASM après une mise à jour ou une opération de maintenance. En utilisant la CRD EnvoyFilterTemplate, personnalisez des filtres Envoy distincts pour chaque version d'Istio. Ainsi, lorsque vous mettez à niveau la version d'un proxy Envoy, appliquez-lui le filtre approprié pour réduire les risques d'incompatibilité.
EnvoyFilterTemplateSpec
EnvoyFilterTemplateSpec, correspondant à la section spec dans l'exemple précédent, constitue la configuration centrale de EnvoyFilterTemplate.
|
Champ |
Type |
Obligatoire |
Description |
|
templates |
Oui |
Définit une série de valeurs de modèles de filtre Envoy. Chaque valeur de modèle s'applique à une version spécifique d'Istio ou à une plage de versions. Les plages de versions Istio applicables aux différentes valeurs de modèle ne doivent pas se chevaucher. |
TemplateValue
Chaque TemplateValue spécifie le contenu YAML d'un filtre Envoy ainsi que la version ou la plage de versions Istio concernée.
Champ | Type | Obligatoire | Description |
istioVersion | string | Oui | Version Istio ou plage de versions Istio à laquelle le filtre Envoy s'applique. La version doit correspondre à une version mineure d'Istio, telle que 1,19 ou 1,20. Indiquez une plage de versions en séparant deux versions par un tiret. Pour définir une plage de versions, utilisez Exemples :
|
value | string | Oui | Contenu YAML du filtre Envoy. Ce contenu doit être fourni sous forme de chaînes de caractères et respecter la description des champs CRD pour les filtres Envoy. Ne configurez pas les champs metadata et workloadSelector lors de la définition du filtre Envoy via le champ TemplateValue. Lors de la création du filtre Envoy, ces champs sont renseignés automatiquement en fonction de la CRD EnvoyFilterTemplateBinding. |
Description des champs EnvoyFilterTemplateBinding
Une CRD EnvoyFilterTemplateBinding est associée à une CRD EnvoyFilterTemplate. Elle spécifie les charges de travail et les versions des proxies Envoy pour lesquelles le filtre Envoy défini dans la CRD EnvoyFilterTemplate prend effet.
EnvoyFilterTemplateBindingSpec
EnvoyFilterTemplateBindingSpec, c'est-à-dire la section spec, représente la configuration centrale de EnvoyFilterTemplateBinding.
|
Champ |
Type |
Obligatoire |
Description |
|
templateRef |
Oui |
Référence au modèle. Elle indique la CRD EnvoyFilterTemplate référencée par la CRD EnvoyFilterTemplateBinding ainsi que la version de l'instance ASM liée. |
|
|
workloads |
Non |
Définit les charges de travail pour lesquelles créer des filtres Envoy. |
EnvoyFilterTemplateRef
Champ | Type | Obligatoire | Description |
name | string | Oui | Nom de la ressource EnvoyFilterTemplate référencée. |
istioVersion | string | Oui | Spécifie la version du proxy Envoy sur laquelle le filtre Envoy prend effet. La version doit correspondre à une version mineure d'Istio, telle que 1,19 ou 1,20. Indiquez une plage de versions en séparant deux versions par un tiret. Pour définir une plage de versions, utilisez Exemples :
|
WorkloadRef
WorkloadRef définit les charges de travail auxquelles le filtre Envoy s'applique.
|
Champ |
Type |
Obligatoire |
Description |
|
namespace |
string |
Oui |
Nom du namespace dans lequel le filtre Envoy est créé. |
|
name |
string |
Non |
Nom de la charge de travail. Ce nom fait partie du nom du filtre Envoy créé. Nous vous recommandons de renseigner ce champ avec le nom du Service ou du Deployment. Si le filtre Envoy s'applique globalement à un namespace, il n'est pas nécessaire de spécifier ce paramètre. |
|
kind |
string |
Non |
Type de la charge de travail à laquelle le filtre Envoy est lié. Ce champ sert uniquement à l'affichage. |
|
selector |
map<string, string> |
Non |
Définit une série de libellés permettant de sélectionner le pod dans lequel le filtre Envoy prend effet. Ce champ est automatiquement converti en champ workloadSelector pour le filtre Envoy. Si vous ne spécifiez pas ce paramètre, le filtre Envoy créé s'applique à l'ensemble du namespace. |
Références
Pour plus d'informations sur les opérations et les relations entre les modèles de filtres Envoy et les filtres Envoy, consultez Créer un filtre Envoy à partir d'un modèle.
ASM propose des fonctionnalités prêtes à l'emploi sur la place de marché des plug-ins, vous permettant d'étendre les capacités d'ASM selon vos besoins. Sélectionnez et personnalisez divers plug-ins en fonction de vos exigences métier pour répondre à des besoins diversifiés. Pour plus d'informations, consultez Activer des plug-ins pour étendre les capacités d'ASM.