Service Mesh (ASM) s'intègre étroitement aux fonctionnalités du composant Knative Serving déployé dans un cluster Container Service for Kubernetes (ACK) ou un cluster ACK Serverless. Cette intégration simplifie le déploiement et la gestion des applications serverless dans divers environnements de cluster. Knative on ASM offre une solution tout-en-un qui vous permet de créer, déployer et gérer rapidement des applications conteneurisées, en particulier lorsque vous avez besoin d'une mise à l'échelle automatique et d'une facturation à la demande. Cette solution facilite le déploiement et la mise à l'échelle rapides des applications serverless, améliorant ainsi l'efficacité du développement et l'élasticité des services. Cette rubrique décrit comment utiliser Knative sur ASM pour déployer un service Knative.
Prérequis
-
Vous avez créé une instance ASM de version 1.16.3.50 ou ultérieure et ajouté un cluster ACK ou ACK Serverless cluster à l'instance. Pour plus d'informations, consultez les rubriques Créer une instance ASM et Ajouter un cluster à une instance ASM.
ImportantLors de la création d'une instance ASM, assurez-vous que l'option Allow data plane cluster KubeAPI to access Istio CR est sélectionnée dans la section Resource configuration. Cette case est cochée par défaut. Cela signifie que vous pouvez accéder aux ressources Istio via l'API Kubernetes des clusters du plan de données.
L'accès au serveur API du cluster ACK ou ACK Serverless cluster est activé pour prendre en charge un accès rapide.
L'instance ASM et le cluster ACK ou ACK Serverless cluster doivent se trouver dans le même réseau privé virtuel (VPC) de la même région et utiliser le même vSwitch.
-
Vous avez créé une passerelle ingress pour le cluster. Dans l'exemple suivant, une passerelle ingress ASM est utilisée. Pour plus d'informations, consultez la rubrique Créer une passerelle ingress.
RemarqueLa création manuelle de passerelles ingress n'est plus nécessaire pour les instances ASM de version 1.21.6.84 ou ultérieure.
La passerelle ASM vous permet de répartir le trafic entre différentes révisions Knative, d'accéder aux services Google Remote Procedure Call (gRPC), de configurer les paramètres de délai d'expiration et de nouvelle tentative, de monter des certificats Transport Layer Security (TLS) et d'effectuer une authentification et une autorisation externes. Pour plus d'informations, consultez la rubrique Passerelles ASM.
Étape 1 : Installer Knative
Pour une instance ASM dont la version est antérieure à 1.18.2.104
-
Déployez le composant Knative Serving dans le cluster ACK ou ACK Serverless. Sélectionnez Kourier pour le paramètre Gateway.
Pour savoir comment déployer Knative dans un cluster ACK, consultez la rubrique Déployer et gérer les composants Knative.
-
Pour savoir comment déployer Knative dans un cluster ACK Serverless, consultez la rubrique Déployer Knative.
ImportantUne fois le composant Knative Serving installé, cliquez sur l'onglet Components. Dans la section Add-on Component, désinstallez le composant Kourier.
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Knative on ASM, cliquez sur Enable Knative on ASM.
Pour une instance ASM dont la version est comprise entre 1.18.2.104 et 1.21.6.83
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Knative on ASM, sélectionnez une version Knative adaptée à vos besoins métier, puis cliquez sur Enable Knative on ASM.
-
Déployez Knative dans le cluster ACK ou ACK Serverless. Sélectionnez ASM pour le paramètre Gateway.
Pour savoir comment déployer Knative dans un cluster ACK, consultez la rubrique Déployer et gérer les composants Knative.
Pour savoir comment déployer Knative dans un cluster ACK Serverless, consultez la rubrique Déployer Knative.
Pour une instance ASM dont la version est 1.21.6.84 ou ultérieure
Si la version de votre instance ASM est 1.21.6.84 ou ultérieure, vous n'avez pas besoin d'activer la fonctionnalité Knative on ASM dans la console ASM.
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster que vous souhaitez gérer. Ensuite, dans le volet de navigation de gauche, choisissez .
-
Sur l'onglet Components de la page Knative, cliquez sur Deploy Knative. Dans la section Gateway, cliquez sur l'onglet ASM, puis sur Deploy.
Une fois Knative installé, vous pouvez utiliser ASM dans Knative.
RemarqueUne fois le message confirmant l'installation de Knative affiché, assurez-vous que la passerelle ingress est créée et fonctionne correctement avant de procéder au déploiement d'un service Knative.
Étape 2 : Déployer un service Knative
Knative on ASM vous permet de déployer un service Knative via la console ACK ou à l'aide d'un fichier de configuration YAML. Choisissez la méthode de déploiement qui correspond le mieux à vos besoins.
Méthode 1 : Déployer un service Knative via la console ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
-
Sur la page Knative, cliquez sur l'onglet Services. En haut à droite, cliquez sur Create Service, spécifiez les paramètres requis, puis cliquez sur Create.
Pour plus d'informations sur les paramètres, consultez la rubrique Démarrage rapide : Déployer un service Knative.
Paramètre
Description
Exemple
Namespace
Sélectionnez le namespace auquel appartient le service.
default
Service Name
Saisissez un nom pour le service.
helloworld-go
Image Name
Pour sélectionner une image, cliquez sur Select Image. Dans la boîte de dialogue Select Image, sélectionnez une image et cliquez sur OK. Vous pouvez spécifier une image située dans un registre privé. L'adresse de l'image doit respecter le format domainname/namespace/imagename:tag.
registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go
Image Version
Pour sélectionner une version d'image, cliquez sur Select Image Version. Dans la boîte de dialogue Image Version, sélectionnez une version d'image et cliquez sur OK.
73fbdd56
Access Protocol
Les protocoles HTTP et gRPC sont pris en charge.
HTTP
Container Port
Spécifiez le port de conteneur que vous souhaitez exposer. Le numéro de port doit être compris entre 1 et 65535.
8080
Environment Variables
Cliquez sur Advanced. Dans la section Environment Variables, cliquez sur Add pour définir des variables d'environnement sous forme de paires clé-valeur.
Type : Sélectionnez Custom.
Variable Key : Définissez la valeur sur TARGET.
Value/ValueFrom : Définissez la valeur sur Knative.
Méthode 2 : Déployer un service Knative à l'aide d'un fichier de configuration YAML
-
Enregistrez le contenu suivant dans un fichier nommé helloworld-go.yaml.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go annotations: knative.k8s.alibabacloud/tls: "false" spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/helloworld-go:160e4dc8 ports: - containerPort: 8080 env: - name: TARGET value: "Knative" -
Utilisez kubectl pour vous connecter au cluster ACK. Exécutez la commande suivante pour créer un service Knative. Attendez que le service Knative soit créé.
kubectl apply -f helloworld-go.yaml -
Exécutez la commande suivante pour afficher la liste des services Knative :
kubectl get ksvcLe système affiche des informations similaires à la sortie suivante :
NAME URL LATESTCREATED LATESTREADY READY REASON helloworld-go http://helloworld-go.default.example.com helloworld-go-00001 helloworld-go-00001 True
Méthode 3 : Utiliser un modèle pour créer un service Knative
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster que vous souhaitez gérer. Ensuite, dans le volet de navigation de gauche, choisissez .
-
Sur l'onglet Services de la page Knative, sélectionnez default dans la liste déroulante Namespace, cliquez sur Create from Template, copiez le contenu YAML suivant dans l'éditeur de code, puis cliquez sur Create pour créer un service nommé helloworld-go.
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: containers: - image: registry.cn-hangzhou.aliyuncs.com/knative-sample/helloworld-go:73 fbdd56 # Replace {REGION-ID} with the region where your cluster resides. env: - name: TARGET value: "Knative"
Étape 3 : Obtenir l'adresse de la passerelle
Méthode 1 : Obtenir l'adresse de la passerelle via la console ACK
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur .
Cliquez sur l'onglet Services. Dans la liste des services, cliquez sur le nom du service Knative dont vous souhaitez obtenir l'adresse de la passerelle pour afficher les détails du service. Dans la section Basic Information, vous pouvez consulter et récupérer les informations relatives aux champs Gateway et Default Domain.
Méthode 2 : Obtenir l'adresse de la passerelle via la console ASM
Connectez-vous à la console ASM. Dans le volet de navigation de gauche, choisissez .
Sur la page Mesh Management, cliquez sur le nom de l'instance ASM souhaitée. Dans le volet de navigation de gauche, choisissez .
Dans la section Service address de la page Ingress Gateway, consultez et notez l'adresse de la passerelle.
Étape 4 : Accéder au service Knative
Une fois le service Knative déployé, vous pouvez faire pointer son nom de domaine vers l'adresse IP d'une passerelle pour associer le service à la passerelle. Cela vous permet d'accéder au service Knative via son URL.
Sur la page Services, obtenez l'adresse de la passerelle du service helloworld-go dans la colonne Gateway.
-
Exécutez la commande suivante pour accéder au service helloworld-go :
curl -H "host: helloworld-go.default.example.com" http://39.XX.XX.XX # Replace the IP address and domain name with the actual values.Sortie attendue :
Hello Knative!Cette sortie indique que l'accès au service a réussi.
Voir aussi
Le nom de domaine par défaut d'un service Knative est example.com. Knative on ASM vous permet d'utiliser un nom de domaine personnalisé comme domaine par défaut. Pour plus d'informations, consultez la rubrique Définir un nom de domaine personnalisé dans Knative on ASM.
Une passerelle ASM prend en charge HTTPS et permet de charger dynamiquement des certificats. Lorsque vous utilisez Knative on ASM, vous pouvez utiliser une passerelle ASM pour accéder au service Knative via HTTPS. Pour plus d'informations, consultez la rubrique Accéder à un service Knative via HTTPS avec une passerelle ASM.
Knative on ASM vous permet d'effectuer un déploiement canari basé sur la répartition du trafic pour un service Knative. Lors de la création d'un service Knative, Knative crée automatiquement la première révision du service. Chaque fois que la configuration du service Knative change, Knative crée une nouvelle révision et modifie le pourcentage de trafic distribué aux différentes révisions pour mettre en œuvre un déploiement canari. Pour plus d'informations, consultez la rubrique Effectuer un déploiement canari basé sur la répartition du trafic pour un service Knative à l'aide de Knative on ASM.
Knative Serving ajoute le conteneur Queue Proxy à chaque pod. Le conteneur Queue Proxy envoie les métriques de simultanéité des conteneurs d'application à Knative Pod Autoscaler (KPA). Une fois que KPA a reçu les métriques, il ajuste automatiquement le nombre de pods provisionnés pour un Deployment en fonction du nombre de requêtes simultanées et des algorithmes de mise à l'échelle automatique associés. Pour plus d'informations, consultez la rubrique Mettre à l'échelle automatiquement les services en fonction du trafic.