Cette rubrique explique comment déployer une charge de travail dans un cluster ACK Auto Mode et l'exposer à Internet via un ALB Ingress. Une fois ces étapes terminées, vous pouvez accéder à l'application avec un nom de domaine spécifié pour une gestion efficace du trafic externe et de l'équilibrage de charge.
Cette rubrique couvre les opérations suivantes :
Créez un namespace pour l'application d'exemple.
Déployez une application Nginx d'exemple et créez un Service pour exposer l'application au réseau du cluster.
Créez un ALB Ingress pour exposer l'application à Internet. Vous devez créer manuellement un AlbConfig pour gérer l'instance ALB et un IngressClass à associer à l'AlbConfig.
Vérifiez que le déploiement a réussi et accédez à l'application depuis un navigateur. Libérez les ressources si elles ne sont plus nécessaires.
Une fois ces opérations effectuées, vous disposerez des éléments suivants :
Une application Nginx d'exemple en cours d'exécution avec deux réplicas.
Un point d'entrée public stable pour l'application, fourni par un ALB Ingress et un Service.
Une réduction de la charge opérationnelle, car ACK en mode Auto Mode met automatiquement à l'échelle les ressources et gère le cycle de vie des nœuds en fonction de la charge de l'application.
Prérequis
Étape 1 : Créer un namespace
Créez un namespace pour isoler les ressources de ce tutoriel.
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 Namespaces and Quotas.
Cliquez sur Create. Dans la boîte de dialogue qui s'affiche, saisissez un nom de namespace personnalisé (cette rubrique utilise my-nginx-namespace comme exemple), configurez les autres paramètres selon les instructions affichées à l'écran, puis cliquez sur OK.
Étape 2 : Déployer l'application Nginx et le Service
Dans cette section, vous déployez un Deployment Nginx d'exemple nommé my-nginx et un Service nommé my-nginx-svc pour exposer l'application.
Deployment : 2 réplicas. L'image utilise une application Nginx d'exemple. Le port 80 est exposé pour recevoir le trafic HTTP.
Service : Le type de Service est ClusterIP. Le port 80 du Service correspond au port 80 du conteneur du pod. Le Service utilise un sélecteur de libellés pour faire correspondre les pods.
Cette section fournit uniquement une procédure d'exemple. Pour les procédures détaillées de création de charges de travail et de Services, consultez Créer une charge de travail et Gestion des Services .
-
Créez un fichier nommé my-nginx.yaml avec le contenu suivant pour déployer le Deployment et le Service.
apiVersion: apps/v1 kind: Deployment metadata: name: my-nginx # The name of the sample application. namespace: my-nginx-namespace # Replace with the name of the namespace that you created. labels: app: nginx spec: replicas: 2 # The number of replicas. selector: matchLabels: app: nginx # The value must match the selector in the Service to expose this application. template: metadata: labels: app: nginx spec: # nodeSelector: # env: test-team containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 # This port must be exposed in the Service. --- apiVersion: v1 kind: Service metadata: labels: app: nginx name: my-nginx-svc namespace: my-nginx-namespace # Replace with the name of the namespace that you created. spec: ports: - port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: ClusterIP # If you use Flannel, you must use NodePort. -
Déployez le Deployment et le Service.
kubectl apply -f my-nginx.yaml -
Vérifiez l'état du Deployment et du Service.
-
Vérifiez l'état du Deployment.
kubectl get deployment my-nginx -n my-nginx-namespaceSortie attendue :
NAME READY UP-TO-DATE AVAILABLE AGE my-nginx 2/2 2 2 4m36s -
Vérifiez l'état du Service.
kubectl get svc my-nginx-svc -n my-nginx-namespaceSortie attendue :
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE my-nginx-svc ClusterIP 192.XX.XX.164 <none> 80/TCP 42s
-
Étape 3 : Créer un ALB Ingress et les ressources associées
Pour gérer le trafic externe accédant aux applications du cluster via un ALB Ingress, vous devez préparer les ressources suivantes.
Avant de créer un ALB Ingress, nous vous recommandons de vous familiariser avec ses principes et exigences dans Gestion des ALB Ingress .
ALB Ingress Controller : composant qui gère les ressources Ingress. Après avoir activé le mode Auto Mode pour un cluster, l'ALB Ingress Controller est installé par défaut.
AlbConfig : CustomResourceDefinition (CRD) créée par l'ALB Ingress Controller pour déclarer la configuration d'une instance ALB. Chaque AlbConfig correspond à une instance ALB. Une instance ALB est le point d'entrée des requêtes utilisateur et transfère les requêtes vers les Services backend.
IngressClass : Lors de la création d'un ALB Ingress, vous pouvez spécifier cet IngressClass pour référencer l'AlbConfig correspondant. Cela vous permet d'appliquer des configurations de routage d'application et des politiques d'équilibrage de charge spécifiques.
Créer un AlbConfig
-
Créez un fichier nommé alb.yaml avec le contenu suivant pour créer un AlbConfig.
Cet AlbConfig définit
addressTypesurInternet. Cela signifie que l'instance ALB reçoit une adresse IP publique, son nom de domaine DNS se résout en adresse IP publique et l'instance est accessible depuis Internet.-
Pour
vSwitchId, saisissez les ID de deux vSwitch situés dans deux zones différentes. Les vSwitch doivent se trouver dans le même VPC que le cluster et dans des zones prises en charge par ALB.Dans la console VPC , vous pouvez obtenir l'ID du vSwitch sur la page vSwitch . Si vous devez créer un vSwitch, consultez Créer et gérer des vSwitch .
apiVersion: alibabacloud.com/v1 kind: AlbConfig metadata: name: alb spec: config: name: alb addressType: Internet # The address type of the load balancer. An Internet-facing ALB instance is accessible over the internet. zoneMappings: - vSwitchId: vsw-uf6ccg2a9g71hx8go**** # Replace with the ID of your vSwitch. - vSwitchId: vsw-uf6nun9tql5t8nh15**** # Replace with the ID of your vSwitch. listeners: - port: 80 protocol: HTTP -
Créez l'AlbConfig.
kubectl apply -f alb.yaml -
Affichez la ressource AlbConfig.
kubectl get AlbConfig albSortie attendue :
NAME ALBID DNSNAME PORT&PROTOCOL CERTID AGE alb alb-****** alb-******.<regionID>.alb.aliyuncs.com 60sRemarqueLes champs
PORT&PROTOCOLetCERTIDne sont renseignés qu'après la création d'un écouteur HTTPS et la configuration d'un certificat pour celui-ci. Il est normal que ces champs soient vides.
Créer un IngressClass
-
Créez un fichier nommé ingress_class.yaml avec le contenu suivant pour créer un IngressClass.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb spec: controller: ingress.k8s.alibabacloud/alb parameters: apiGroup: alibabacloud.com kind: AlbConfig name: alb # The name of the AlbConfig associated with the IngressClass. -
Créez l'IngressClass.
kubectl apply -f ingress_class.yaml
Créer un ALB Ingress
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 Ingresses, sélectionnez le namespace que vous avez créé, puis cliquez sur Create Ingress. Dans la boîte de dialogue Create Ingress, configurez l'Ingress et suivez les instructions à l'écran pour créer l'Ingress.
Le tableau suivant décrit uniquement les paramètres clés. Pour plus d'informations sur les paramètres et les opérations connexes, telles que la configuration de la résolution DNS, consultez Créer un ALB Ingress.
Paramètre
Description
Type de passerelle
Sélectionnez ALB Ingress.
Name
Saisissez un nom personnalisé pour l'Ingress, tel que my-albingress.
IngressClass
Sélectionnez la classe Ingress que vous avez créée pour référencer l'AlbConfig correspondant.
Rules
Service : Sélectionnez le Service de destination, qui est le Service que vous avez créé.
Port : Sélectionnez le port que vous souhaitez exposer pour le Service, soit 80 dans cet exemple.
Conservez les valeurs par défaut pour les autres paramètres.
Une fois l'Ingress créé, revenez à la page Ingresses. Au bout d'environ une minute, recherchez et copiez le nom DNS dans la colonne Endpoint.
Étape 4 : Accéder à l'application
Collez le nom DNS dans votre navigateur pour accéder à l'application Nginx.
Le navigateur affiche la page d'accueil Nginx par défaut avec le titre Welcome to nginx on Anolis OS! Cela indique que le serveur Web fonctionne comme prévu et que la configuration ALB Ingress est correcte.
(Facultatif) Étape 5 : Nettoyer les ressources
Les ressources créées dans cette rubrique incluent un Deployment, un Service, un AlbConfig, un IngressClass et un ALB Ingress. Exécutez les commandes suivantes pour nettoyer les ressources.
Remplacez les noms d'exemple dans les commandes suivantes par vos noms de ressources réels.
kubectl delete deployment my-nginx -n my-nginx-namespace
kubectl delete service my-nginx-svc -n my-nginx-namespace
kubectl delete ingress my-albingress -n my-nginx-namespace
kubectl delete albconfig alb
kubectl delete ingressclass alb
Documents connexes
Pour plus d'informations sur les paramètres de création d'une charge de travail, consultez Créer une charge de travail. Pour des recommandations de configuration, consultez Configurations de charge de travail recommandées.
Lorsque vous utilisez un écouteur HTTPS, vous devez configurer un certificat SSL/TLS. Pour plus d'informations sur les méthodes de configuration de certificat prises en charge par ALB Ingress, consultez Configurer un certificat HTTPS pour activer la communication chiffrée.
Vous pouvez configurer une ressource AlbConfig pour personnaliser la configuration d'une instance ALB. Pour plus d'informations, consultez Dictionnaire de configuration ALB Ingress.