ASMMeshConfig est une ressource personnalisée (CR) d'Alibaba Cloud Service Mesh (ASM) qui définit la configuration à l'échelle du maillage de services. À l'instar de MeshConfig d'Istio, cette CR vous permet de gérer de manière centralisée les paramètres au niveau du maillage, tels que le délai d'expiration de la connexion, la détection de protocole, la normalisation des chemins et la politique de nouvelle tentative. Vous pouvez également l'utiliser pour contrôler le comportement et le quota de ressources de l'injecteur sidecar.
Exemple de configuration
L'exemple suivant spécifie les paramètres à l'échelle du maillage pour une instance ASM, y compris la configuration de la connexion, la normalisation des chemins, la politique de nouvelle tentative HTTP, la configuration de l'injecteur sidecar et le service global de limitation de débit.
apiVersion: istio.alibabacloud.com/v1beta1
kind: ASMMeshConfig
metadata:
name: default
spec:
connectTimeout: 30s
tcpKeepalive:
probes: 5
time: 7200s
interval: 72s
pathNormalization:
normalization: MERGE_SLASHES
defaultHttpRetryPolicy:
attempts: 3
perTryTimeout: 1s
retryOn: gateway-error,connect-failure,refused-stream
enablePrometheusMerge: true
sidecarInjectorWebhookConfiguration:
rewriteAppHTTPProbe: true
replicaCount: 2
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: '2'
memory: 2Gi
rateLimitService:
enabled: true
redis:
authSecret: redis-secret
url: redis.istio-system.svc:6379
replicas: 1
accessLogConfiguration:
logEncoding: JSON
logProject: test-project
sidecarEnabled: true
manifestPatch:
- targetRef:
kind: DaemonSet
group: apps
namespace: kube-system
selector:
labels:
app: istio-cni
patch: |
metadata:
labels:
custom.example.com/managed-by: asm
annotations:
custom.example.com/cni-version: "1.29"
Pour utiliser tous les champs de la CRD ASMMeshConfig, votre instance ASM doit être en version 1.24 ou ultérieure. La configuration rateLimitService nécessite une version d'instance 1.25.6.84. Par ailleurs, la CR ASMMeshConfig n'est pas associée à un espace de noms et son nom doit être default. Les CR ASMMeshConfig portant tout autre nom sont ignorées.
Référence des champs
Spec (Configuration du maillage)
Chemin du champ | Type | Description | Valeur d'exemple |
| TcpKeepalive | Configure les paramètres de maintien de connexion TCP. |
|
| Duration | Spécifie le temps d'attente maximal pour que le proxy Envoy établisse une connexion TCP. Un dépassement de délai déclenche une erreur |
|
| Duration | Le délai d'expiration pour la détection de protocole, utilisé pour identifier le trafic HTTP/HTTPS. Si le protocole n'est pas détecté dans ce délai, le trafic est traité comme du TCP brut. Important Ce champ est configurable uniquement dans les versions ASM 1.19 et antérieures. | |
| PathNormalization | Configure la normalisation des chemins pour les requêtes HTTP. | |
| DefaultHttpRetryPolicy | Définit la politique de nouvelle tentative HTTP par défaut pour les sidecars. | |
| Bool | Si la valeur est |
|
| SidecarInjectorWebhookConfiguration | Configure l'injecteur sidecar. | |
| AccessLogConfiguration | Configure le format et la collecte des journaux d'accès. | |
| RatelimitService | Configure le service global de limitation de débit. Important Ce champ est configurable uniquement dans les versions ASM 1.25 et ultérieures. | |
| []PatchConfig | Le champ Important Ce champ est configurable uniquement dans les versions ASM 1.27 et ultérieures. |
TcpKeepalive
Chemin du champ | Type | Description | Valeur d'exemple | Portée |
| Uint32 | Le nombre maximal de sondes de maintien de connexion TCP à envoyer. Une valeur de |
| Connexions TCP sortantes de longue durée. |
| Duration | Le temps d'inactivité avant l'envoi de la première sonde de maintien de connexion. |
| |
| Duration | L'intervalle d'envoi des sondes de maintien de connexion doit être inférieur au paramètre |
|
PathNormalization
Chemin du champ | Type | Description | Valeur d'exemple | Portée |
| Enum | La politique de traitement du chemin URI :
|
| Routage HTTP à l'échelle du maillage. |
DefaultHttpRetryPolicy
Chemin du champ | Type | Description | Valeur d'exemple | Portée |
| Int32 | Le nombre maximal de tentatives pour une requête HTTP. Ce paramètre global s'applique uniquement si un VirtualService ne définit pas explicitement sa propre politique de nouvelle tentative. |
| Politique de routage HTTP. |
| Duration | Le délai d'expiration pour chaque tentative. Cette valeur doit être inférieure au délai d'expiration global de la requête défini dans le VirtualService. |
| |
| String | Spécifie les conditions qui déclenchent une nouvelle tentative. Les types d'erreur standard pris en charge incluent |
|
SidecarInjectorWebhookConfiguration
Chemin du champ | Type | Description | Valeur d'exemple | Portée |
| Bool | Si la valeur est |
| Comportement d'injection sidecar. |
| Int | Le nombre de réplicas pour le contrôleur d'injection sidecar afin d'améliorer la haute disponibilité. |
| Composant d'injection sidecar. |
| Object | La configuration du quota de ressources :
| | Composant d'injection sidecar. |
AccessLogConfiguration
Chemin du champ | Type | Description | Valeur d'exemple |
| String | Le format de sortie des journaux. Les valeurs valides sont |
|
| String | Le projet Alibaba Cloud Log Service (SLS) de destination pour les journaux. Important Ce champ est configurable uniquement dans les versions ASM 1.25 et ultérieures. |
|
| Boolean | Si la valeur est |
|
| Boolean | Si la valeur est |
|
| Boolean | Si la valeur est Important Ce champ est configurable uniquement dans les versions ASM 1.25 et ultérieures. |
|
| Integer | La période de rétention en jours pour les journaux d'accès de la passerelle. Valeur par défaut : 90. |
|
| Integer | La période de rétention en jours pour les journaux d'accès des sidecars. Valeur par défaut : 90. |
|
| Integer | La période de rétention en jours pour les journaux d'accès de Ztunnel. Valeur par défaut : 90. Important Ce champ est configurable uniquement dans les versions ASM 1.25 et ultérieures. |
|
RatelimitService
Chemin du champ | Type | Description | Valeur d'exemple | Portée |
| Bool | Indique s'il faut activer le service global de limitation de débit. |
| Fonctionnalité globale de limitation de débit. |
| Int | Le nombre de réplicas pour le service de limitation de débit. |
| Disponibilité et performances du service de limitation de débit. |
| Object | La configuration des ressources pour le service de limitation de débit. | | Disponibilité et performances du service de limitation de débit. |
| Object | Configuration de l'instance Redis utilisée par le service de limitation de débit. Remarque Le service global de limitation de débit utilise Redis pour stocker les politiques et décisions de limitation de débit. | | Backend d'état de limitation de débit. |
| String | Le type du cluster Redis. Les valeurs valides sont |
| Backend d'état de limitation de débit. |
| String | L'adresse Redis. |
| Backend d'état de limitation de débit. |
| String | Les informations d'authentification pour Redis. Le format est | xxxxxx | Gestion sécurisée des identifiants. |
| String | Le nom du Secret qui stocke les identifiants d'authentification Redis. Remarque Ce Secret doit être déployé dans l'espace de noms | | Gestion sécurisée des identifiants. |
| String | Le préfixe des clés de cache Redis. La valeur par défaut est vide. | N/A | Backend d'état de limitation de débit. |
Nous vous recommandons d'utiliser Alibaba Cloud Redis pour garantir une haute disponibilité. Vous pouvez configurer le paramètre rateLimitService.redis.type en fonction du type de votre instance Redis et du tableau suivant.
Type d'instance | Architecture | Mode de connexion | Configuration |
Nœud unique | N/A | N/A |
|
Haute disponibilité | Standard (cluster désactivé) | N/A |
|
Cluster (cluster activé) | Mode de connexion directe |
| |
Mode proxy |
|
ASM agrège toutes les configurations et génère automatiquement une configuration de service de limitation de débit nommée ratelimit-service-config dans l'espace de noms istio-system. Lorsque vous activez le service de limitation de débit, cette configuration est montée automatiquement. Il n'est pas nécessaire de mettre à jour manuellement la configuration du service de limitation de débit.
PatchConfig
|
Chemin du champ |
Type |
Description |
|
|
TargetRef |
Définit la ressource cible à corriger. Lorsqu'ASM réconcilie chaque ressource, il fait correspondre les informations réelles de la ressource avec les conditions de |
|
|
string |
Le contenu du correctif de fusion stratégique, au format YAML ou JSON. ASM fusionne ce correctif dans la ressource cible. |
TargetRef
|
Chemin du champ |
Type |
Requis |
Description |
|
|
string |
Oui |
Le Kind Kubernetes de la ressource cible, tel que |
|
|
string |
Non |
Le groupe API de la ressource cible, tel que |
|
|
string |
Non |
Le nom de la ressource cible. S'il n'est pas spécifié, le correctif s'applique à toutes les ressources du |
|
|
string |
Non |
L' |
|
|
PatchSelector |
Non |
Filtre davantage les ressources cibles à l'aide d'un sélecteur d'étiquettes. S'il n'est pas spécifié, les étiquettes ne sont pas mises en correspondance. |
PatchSelector
|
Chemin du champ |
Type |
Requis |
Description |
|
|
map[string]string |
Non |
Une carte de paires clé-valeur. Une ressource doit contenir toutes les étiquettes spécifiées pour être mise en correspondance (logique ET). |
Lorsqu'ASM réconcilie les ressources, il utilise les règles suivantes pour déterminer si targetRef correspond à la ressource actuelle :
kinddoit être identique au Kind de la ressource.Si
groupest spécifié, il doit correspondre au groupe API de la ressource.Si vous spécifiez
name, il doit correspondre au nom de la ressource.Si un
namespaceest spécifié, il doit être identique à l'espace de noms de la ressource.Si
selector.labelsest spécifié, la ressource doit contenir toutes les étiquettes spécifiées (relation ET).