Le composant servicemesh-operator automatise le déploiement et la gestion du cycle de vie d'Alibaba Cloud Service Mesh (ASM) au sein d'un cluster Container Service for Kubernetes (ACK). Une fois installé, il gère le provisionnement, l'enregistrement du cluster et la synchronisation de la configuration. Vous interagissez ainsi avec ASM exclusivement via des ressources personnalisées natives à Kubernetes, sans avoir à basculer entre les consoles. Cette approche vous permet d'activer rapidement des fonctionnalités ASM avancées, telles que la gestion du trafic, la sécurité et l'observabilité.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK exécutant Kubernetes 1.28 ou une version ultérieure
Une instance ASM activée
Fonctionnement
L'installation de servicemesh-operator déclenche automatiquement la séquence suivante :
Déploiement d'un contrôleur nommé
servicemesh-operatordans le plan de contrôle du cluster. Il surveille et réconcilie les ressources personnalisées ServiceMesh.Création de la définition de ressource personnalisée (CRD)
servicemesh.istio.alibabacloud.com.Création automatique d'une ressource personnalisée (CR) ServiceMesh nommée
mesh.Provisionnement par le contrôleur d'une instance ASM Édition Standard nommée
mesh-for-${cluster ID}et enregistrement du cluster ACK dans celle-ci.
Une fois le provisionnement terminé, interrogez la CR mesh pour suivre la progression et superviser l'état actuel.
Surveiller l'état de l'instance ASM
Console
Sur la page Clusters ACK, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Workloads > Custom Resources.
-
Sur la page Custom Resources, recherchez
ServiceMesh. Dans les résultats, cliquez sur le nom ServiceMesh sousistio.alibabacloud.com. Cliquez sur Actions > Edit YAML. Exemple de fichier YAML :apiVersion: istio.alibabacloud.com/v1beta1 kind: ServiceMesh metadata: annotations: operator.istio.alibabacloud.com/deletion-policy: Retain creationTimestamp: "2026-01-09T02:25:12Z" finalizers: - servicemeshoperator.finalizers.alibabacloud.com generation: 2 name: asm resourceVersion: "36619976" uid: 94967e01-fc25-477e-9da9-4df42cede8ba spec: clusterSpec: Enterprise status: clusterSpec: Enterprise conditions: - lastTransitionTime: "2026-01-09T02:25:19Z" message: "" observedGeneration: 2 reason: Passed status: "True" type: PreChecked - lastTransitionTime: "2026-01-09T02:25:32Z" message: "" observedGeneration: 2 reason: Available status: "True" type: ServiceMeshAvailable - lastTransitionTime: "2026-01-09T02:25:32Z" message: "" observedGeneration: 2 reason: Succeeded status: "True" type: ClusterEnrolled - lastTransitionTime: "2026-01-09T02:25:38Z" message: "" observedGeneration: 2 reason: Succeeded status: "True" type: MeshConfigApplied serviceMeshId: c6490deb776cc458c82c4c22a69315bae serviceMeshName: mesh-for-cf17b23e9fa6b4fb081c58a33964cd3dc
kubectl
Obtenir le kubeconfig du cluster et se connecter avec kubectl.
-
Consultez la CR ServiceMesh :
kubectl get servicemesh mesh -n istio-system -o yamlRésultat attendu :
apiVersion: istio.alibabacloud.com/v1beta1 kind: ServiceMesh metadata: annotations: operator.istio.alibabacloud.com/deletion-policy: Retain creationTimestamp: "2026-01-09T02:25:12Z" finalizers: - servicemeshoperator.finalizers.alibabacloud.com generation: 2 name: asm resourceVersion: "36619976" uid: 94967e01-fc25-477e-9da9-4df42cede8ba spec: clusterSpec: Enterprise status: clusterSpec: Enterprise conditions: - lastTransitionTime: "2026-01-09T02:25:19Z" message: "" observedGeneration: 2 reason: Passed status: "True" type: PreChecked - lastTransitionTime: "2026-01-09T02:25:32Z" message: "" observedGeneration: 2 reason: Available status: "True" type: ServiceMeshAvailable - lastTransitionTime: "2026-01-09T02:25:32Z" message: "" observedGeneration: 2 reason: Succeeded status: "True" type: ClusterEnrolled - lastTransitionTime: "2026-01-09T02:25:38Z" message: "" observedGeneration: 2 reason: Succeeded status: "True" type: MeshConfigApplied serviceMeshId: c6490deb776cc458c82c4c22a69315bae serviceMeshName: mesh-for-cf17b23e9fa6b4fb081c58a33964cd3dc
Interprétation des conditions d'état
Le contrôleur réconcilie l'instance ASM en quatre étapes ordonnées. Chaque étape apparaît sous forme de condition dans status.conditions. Une instance saine affiche les quatre conditions avec status: "True" :
| Type de condition | Signification | Raison attendue |
|---|---|---|
PreChecked |
Les vérifications préalables sont réussies | Passed |
ServiceMeshAvailable |
L'instance ASM est provisionnée et disponible | Available |
ClusterEnrolled |
Le cluster ACK est enregistré dans l'instance ASM | Succeeded |
MeshConfigApplied |
La configuration du maillage est appliquée au cluster | Succeeded |
Si une condition affiche status: "False" ou status: "Unknown", consultez le champ message de cette condition pour obtenir des détails sur l'échec.
Limitations
servicemesh-operatorprend uniquement en charge une liaison un-à-un entre une instance ASM et un cluster ACK. Pour mettre à jour une instance ASM existante, utilisez la console ASM.L'édition Standard est gratuite, mais ne bénéficie d'aucun accord de niveau de service (SLA), prend en charge jusqu'à 50 pods et n'est disponible qu'en Chine continentale. La création d'une instance Édition Standard dans d'autres régions échoue. Pour utiliser une autre édition, définissez
.spec.clusterSpecsurEnterpriseouUltimatedans la CR ServiceMesh. Pour plus d'informations sur la facturation, consultez la section Présentation de la facturation.
La suppression d'une CR ServiceMesh retire le cluster ACK d'ASM. Si le cluster utilise activement des ressources ASM, telles que des passerelles ou des proxies Sidecar, la suppression échoue. Vérifiez status.conditions pour confirmer l'état actuel avant de procéder à la suppression.
L'annotation de suppression détermine si l'instance ASM elle-même est supprimée lors de la suppression de la CR ServiceMesh. Définissez cette annotation avec précaution ; le comportement par défaut est Retain. Consultez la section Politique de suppression pour plus de détails.
Référence de la CRD ServiceMesh
La ressource ServiceMesh définit l'état souhaité et l'état réel d'un maillage de services ASM dans un cluster Kubernetes. Certains champs .spec sont modifiables ; leur modification déclenche des mises à jour des propriétés correspondantes du maillage.
Spécification (.spec)
| Champ | Type | Description | Par défaut | Obligatoire | Modifiable |
|---|---|---|---|---|---|
id |
string | L'ID du maillage de services. S'il n'est pas défini, le système en génère un. Spécifiez ce champ pour créer un nouveau maillage de services ou ajouter le cluster à un maillage existant. Ce champ est prioritaire sur name. |
N/A | Non | Non |
name |
string | Le nom du maillage de services. S'il n'est pas défini, la valeur par défaut est mesh-for-${cluster ID}. Spécifiez ce champ pour créer un nouveau maillage de services ou ajouter le cluster à un maillage existant. |
N/A | Non | Oui |
clusterSpec |
string | L'édition ASM. Valeurs valides : Standard, Enterprise, Ultimate. |
Standard (Chine continentale) / Enterprise (autres régions) |
Non | Oui |
État (.status)
| Champ | Type | Description |
|---|---|---|
serviceMeshName |
string | Le nom unique de l'instance ASM créée par le contrôleur. Enregistré avant la première demande de création et immuable pendant la réconciliation afin d'éviter les instances en double. |
serviceMeshId |
string | L'ID de l'instance ASM créée avec succès, récupéré auprès d'Alibaba Cloud après le provisionnement. |
clusterSpec |
string | L'édition de l'instance ASM qui a été créée. |
conditions |
[]ServiceMeshCondition | La liste ordonnée des étapes de réconciliation et de leurs états actuels. |
ServiceMeshCondition
| Champ | Type | Description |
|---|---|---|
lastTransitionTime |
metav1.Time | L'horodatage du dernier changement d'état de cette condition. |
status |
string | True (condition remplie), False (condition non remplie) ou Unknown. |
type |
string | L'étape de réconciliation : PreChecked, ServiceMeshAvailable, ClusterEnrolled, MeshConfigApplied, Retried ou ServiceMeshDeleted. |
message |
string | Contexte supplémentaire concernant la condition, particulièrement utile en cas d'échec d'une étape. |
reason |
string | Un code de raison lisible par machine : Reconciling, Succeeded, Failed, Available, Unavailable, Passed, WaitSteady ou Retried. |
Annotations spéciales
Nouvelle tentative
En cas d'erreur de réconciliation, définissez l'annotation operator.istio.alibabacloud.com/retry-at pour déclencher une nouvelle tentative :
kubectl annotate servicemesh mesh operator.istio.alibabacloud.com/retry-at=""
Le contrôleur retente automatiquement l'opération ayant échoué.
Politique de suppression
Utilisez l'annotation operator.istio.alibabacloud.com/deletion-policy pour contrôler le sort de l'instance ASM lors de la suppression de la CR ServiceMesh :
Retain(par défaut) : L'instance ASM reste dans Alibaba Cloud.Delete: L'instance ASM est supprimée d'Alibaba Cloud.
Définissez cette annotation lors de la création de la ressource :
apiVersion: istio.alibabacloud.com/v1beta1
kind: ServiceMesh
metadata:
name: advanced-mesh
annotations:
operator.istio.alibabacloud.com/deletion-policy: Delete # or Retain
spec:
name: advanced-service-mesh
clusterSpec: Ultimate
Si l'annotation est définie sur Delete, la suppression du cluster ACK entraîne également la suppression de l'instance ASM.