Alibaba Cloud Container Service for Kubernetes (ACK) propose divers conteneurs serverless basés sur des nœuds virtuels et des instances de conteneur élastiques. Les clusters ACK Serverless permettent une intégration transparente entre Kubernetes et Elastic Container Instance (ECI). Intégrez un cluster ACK Serverless à Service Mesh (ASM) pour gérer les applications déployées dans des pods s'exécutant sur des pods basés sur ECI.
À l'issue de ce guide, vous aurez :
Activé l'injection automatique du proxy sidecar dans un namespace
Déployé un exemple d'application avec un sidecar Envoy
Vérifié qu'ASM gère l'application via son plan de données
Prérequis
Avant de commencer, assurez-vous que vous disposez des éléments suivants :
D'un cluster ACK Serverless dont le mode de découverte de service est défini sur PrivateZone ou CoreDNS. Sans PrivateZone ou CoreDNS, les sidecars ne peuvent pas résoudre le service de plan de contrôle
istiod.istio-system. Pour plus d'informations, consultez la section Démarrage rapide d'ACK ServerlessDu cluster ACK Serverless ajouté à votre instance ASM. Pour plus d'informations, consultez la section Ajouter un cluster à une instance ASM
Le mode de découverte de service doit être défini lors de la création du cluster ACK Serverless. Consultez la section FAQ si vous rencontrez des problèmes de résolution DNS.
Étape 1 : Activer l'injection automatique du proxy sidecar
Activez l'injection automatique du proxy sidecar pour un namespace dans la console ASM. Une fois l'injection activée, ASM injecte automatiquement un proxy Envoy en tant que sidecar dans chaque nouveau pod créé dans ce namespace. Ces proxies Envoy constituent le plan de données de votre instance ASM.
L'exemple suivant utilise le namespace default. Pour obtenir des instructions sur l'activation de l'injection pour d'autres namespaces, consultez la section Gérer les namespaces globaux.
L'activation de l'injection sidecar n'affecte que les nouveaux pods. Pour ajouter des applications existantes au maillage, redémarrez leurs déploiements après avoir activé l'injection :
kubectl rollout restart deployment <deployment-name> -n <namespace>
Étape 2 : Déployer une application et vérifier l'injection sidecar
Dans les clusters ACK Serverless, tous les pods s'exécutent sur ECI via des nœuds virtuels. Aucun libellé n'est nécessaire pour spécifier que l'application est déployée dans un pod basé sur ECI.
-
Déployez l'application NGINX :
kubectl run nginx -n default --image nginx -
Vérifiez que le pod s'exécute sur un nœud virtuel et que le sidecar est injecté :
kubectl get pod -n default -o wide | grep virtual-kubeletSortie attendue :
nginx-xxx 2/2 Running 0 30s x.x.x.x virtual-kubelet <none> <none>Champ Valeur attendue Signification READY 2/2Deux conteneurs en cours d'exécution : le conteneur d'application NGINX et le proxy sidecar Envoy NODE virtual-kubeletLe pod s'exécute sur un nœud virtuel basé sur ECI Si la colonne READY affiche
1/1, le sidecar n'a pas été injecté. Revenez à l'Étape 1 et vérifiez que l'injection est activée pour le namespace.
Une fois le sidecar injecté, ASM gère l'application via le plan de données.
FAQ
Pourquoi la découverte de service échoue-t-elle dans mon cluster ACK Serverless ?
Vérifiez les journaux du conteneur sidecar. Si istiod.istio-system se résout en une adresse IP non valide, le service Alibaba Cloud DNS PrivateZone n'est pas activé.
Pour résoudre ce problème, effectuez l'une des opérations suivantes :
Activez le service Alibaba Cloud DNS PrivateZone
Installez CoreDNS depuis la page Add-ons dans la console ACK