SAE prend en charge l'enregistrement et la découverte de services multilingues via les services Kubernetes. Vous pouvez configurer un nom de domaine fixe pour une application au sein d'un cluster SAE afin que les adresses IP des instances ne changent plus après chaque déploiement.
Contexte
Dans un framework de microservices distribué, l'enregistrement et la découverte de services garantissent une communication fiable entre les composants serveur et client lors du démarrage et de l'arrêt des services.
Enregistrement de service : une instance de service enregistre ses informations dans un registre, que les clients lisent et auquel ils s'abonnent.
Découverte de service : avant d'envoyer une requête, le client interroge le registre pour obtenir les adresses des services dépendants. Le registre expose les adresses des instances et les métadonnées via une interface prédéfinie.
Limites
Ce nom de domaine permet uniquement d'accéder aux instances de la même application SAE. Pour autoriser l'accès depuis d'autres services tels que FC, ACK ou ECS, associez un Classic Load Balancer (CLB) privé ou public. Pour plus d'informations, consultez la rubrique Configurer l'accès au service applicatif à l'aide d'un CLB.
Vous ne pouvez pas utiliser la commande ping pour accéder à un service Kubernetes. Utilisez plutôt TCP ou UDP depuis votre code. Pour vérifier la connectivité réseau, utilisez la commande ping pour tester l'adresse IP du pod de l'application.
Un pod d'application ne peut pas s'accéder lui-même via son service Kubernetes.
Si une application serveur et une application cliente doivent s'appeler mutuellement, chacune doit disposer d'un service Kubernetes.
Procédure
-
Accédez à la page de configuration.
Lors de la création
Connectez-vous à la console SAE. Dans le volet de navigation de gauche, sélectionnez . Sélectionnez une région et un namespace, puis cliquez sur Create Application.
Sélectionnez une version d'application, puis cliquez sur Create Application.
Sur la page de l'assistant Basic Information, configurez les paramètres et cliquez sur Next: Advanced Settings.
Sur la page de l'assistant Advanced Settings, localisez et développez la section Service Registration and Discovery.
Lors du déploiement
AvertissementLe redéploiement d'une application entraîne son redémarrage. Pour éviter des erreurs imprévisibles telles que des interruptions de service, nous vous recommandons de déployer les applications pendant les heures creuses.
Connectez-vous à la console SAE. Dans le volet de navigation de gauche, sélectionnez . Sélectionnez une région et un namespace, puis cliquez sur le nom de votre application.
Sur la page Basic Information de l'application, cliquez sur Deploy Application.
Sur la page de l'assistant Deploy Application, localisez et développez la section Service Registration and Discovery.
-
Configurez l'enregistrement et la découverte de services basés sur Kubernetes.
Activez l'option Kubernetes Service-based service registration and discovery.
-
Configurez les champs Service name, Port et Protocol.
Paramètre
Description
Nom du service
Saisissez un nom de service personnalisé. Le nom doit être unique par compte au sein d'une région et ne peut pas être modifié après la création.
RemarquePar défaut, le nom de l'application est utilisé comme nom de service.
Port
Saisissez un numéro de Port compris entre 1 et 65535.
RemarqueVous pouvez ajouter jusqu'à cinq configurations de port et de protocole.
Port du conteneur
Saisissez le port du conteneur.
Protocole
Sélectionnez un protocole. Les protocoles suivants sont pris en charge :
-
TCP
-
UDP
-
Noms de domaine d'accès
Sur la page Basic Information de l'application cible, accédez à la section Application Access Settings et consultez les informations dans l'onglet Kubernetes Service-based Access.
Les quatre types de noms de domaine suivants sont pris en charge :
Pour accéder aux applications du même namespace, utilisez le nom du service. Exemple :
demo.-
Pour accéder aux applications situées dans d'autres namespaces, utilisez l'un des formats de nom de domaine suivants.
-
demo.nsfooDans cet exemple,
nsfooest un namespace personnalisé. Si l'application cible se trouve dans le namespace par défaut, utilisezdefaultcomme nom de namespace. Exemple :demo.default. demo.nsfoo.svc.cluster.localdemo.nsfoo.svc.cluster.local.cn-hangzhou
-
Exemple de mappage de ports : le port est 2000, le port du conteneur est 5000 et le protocole est TCP.