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 accomplies, vous pourrez accéder à l'application avec un nom de domaine spécifique, ce qui facilitera la gestion du trafic externe et l'équilibrage de charge.
Cette rubrique couvre les opérations suivantes :
Créez un namespace pour l'application d'exemple.
Déployez un exemple d'application Nginx et créez un Service afin d'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, ainsi qu'une 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 terminées, vous disposerez des éléments suivants :
Un exemple d'application Nginx 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 les ressources à l'échelle 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 afin d'isoler les ressources utilisées dans 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é (cet exemple utilise my-nginx-namespace), 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éploierez un exemple de Deployment Nginx nommé my-nginx et un Service nommé my-nginx-svc afin d'exposer l'application.
Deployment : 2 réplicas. L'image utilise un exemple d'application Nginx. 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 obtenir des instructions détaillées sur la 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 en consultant Gestion des ALB Ingress .
ALB Ingress Controller : composant qui gère les ressources Ingress. Lorsque vous activez 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 sert de point d'entrée aux requêtes utilisateur et transfère ces requêtes vers les Services backend.
IngressClass : Lors de la création d'un ALB Ingress, vous pouvez spécifier cette 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, que son nom de domaine DNS se résout en cette adresse IP publique et que l'instance est accessible depuis Internet.-
Pour
vSwitchId, saisissez les ID de deux vSwitch situés dans deux zones différentes. Les vSwitch doivent appartenir au même VPC que le cluster et se trouver 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 vSwitches .
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 -
Consultez 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 une IngressClass
-
Créez un fichier nommé ingress_class.yaml avec le contenu suivant pour créer une 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 ci-dessous 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, par exemple my-albingress.
IngressClass
Sélectionnez l'Ingress Class que vous avez créée pour référencer l'AlbConfig correspondant.
Rules
Service : Sélectionnez le Service de destination, c'est-à-dire 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 depuis 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 de l'ALB Ingress est correcte.
(Facultatif) Étape 5 : Nettoyer les ressources
Les ressources créées dans cette rubrique incluent un Deployment, un Service, un AlbConfig, une 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.