Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configure ALB instances with AlbConfig

Dernière mise à jour :Sep 12, 2026

Créez, configurez et réutilisez des instances ALB et des écouteurs via les CRD AlbConfig, avec prise en charge d'IPv6, des journaux d'accès Simple Log Service (SLS), des politiques TLS et des listes de contrôle d'accès réseau.

Prérequis

  • Le contrôleur d'entrée ALB est installé dans votre cluster.

  • Deux vSwitches situés dans des zones différentes prises en charge par ALB ont été créés dans le même VPC que votre cluster ACK.

Pour utiliser l'entrée ALB avec un cluster dédié ACK, accordez au cluster les autorisations requises au préalable.

Notes d'utilisation

  • Pour modifier les configurations des ressources, utilisez kubectl edit. Si vous utilisez kubectl apply, exécutez d'abord kubectl diff pour prévisualiser les modifications avant de les appliquer.

  • Si votre cluster utilise le plug-in réseau Flannel, les services backend de l'entrée ALB doivent être de type NodePort ou LoadBalancer.

  • Les instances ALB créées par AlbConfig sont des ressources gérées contrôlées par le contrôleur d'entrée ALB. Ne modifiez pas ces instances directement dans la console ALB (par exemple, ne changez pas les tags, les listes de contrôle d'accès, les journaux d'accès ou les paramètres de délai d'expiration dans la console). Les modifications effectuées dans la console sont écrasées par la boucle de réconciliation du contrôleur ou peuvent provoquer des erreurs. Pour mettre à jour la configuration d'une instance ALB gérée, modifiez la ressource AlbConfig dans votre cluster. Le contrôleur synchronise automatiquement les modifications avec l'instance ALB.

Paramètres clés en un coup d'œil

Paramètres AlbConfig couramment utilisés :

Parameter

Type

Default

Creation-only

Description

spec.config.name

string

—

No

Nom de l'instance ALB

spec.config.addressAllocatedMode

string

Dynamic

No

Définit le mode IP de l'instance ALB. Valeurs valides : Dynamic (mode IP dynamique, par défaut) et Fixed (mode IP fixe).

spec.config.addressType

string

Internet

Yes

Internet (public) ou Intranet (interne au VPC)

spec.config.addressIpVersion

string

—

Yes

Définissez sur DualStack pour activer la double pile IPv4/IPv6

spec.config.zoneMappings

array

—

Yes

ID de vSwitch (au moins deux, dans des zones différentes)

spec.config.edition

string

Standard

No

Édition de l'instance ALB

spec.config.id

string

—

No

ID d'une instance ALB existante à réutiliser

spec.config.forceOverride

boolean

false

No

Indique s'il faut écraser les attributs d'une instance ALB réutilisée

spec.config.listenerForceOverride

boolean

false

No

Indique s'il faut écraser les attributs des écouteurs d'une instance réutilisée

spec.config.accessLogConfig.logProject

string

—

No

Projet de journal SLS

spec.config.accessLogConfig.logStore

string

—

No

Logstore SLS (doit commencer par alb_)

spec.config.billingConfig.bandWidthPackageId

string

—

No

ID de l'instance Internet Shared Bandwidth

spec.listeners[].port

integer

—

No

Port de l'écouteur

spec.listeners[].protocol

string

—

No

HTTP, HTTPS ou QUIC

spec.listeners[].requestTimeout

integer

60

No

Délai d'expiration de la requête en secondes (1–600)

spec.listeners[].gzipEnabled

boolean

false

No

Activer la compression Gzip/Brotli

Configurations des instances ALB

Créer un AlbConfig

Chaque AlbConfig configure une instance ALB. Pour utiliser plusieurs instances ALB, créez un AlbConfig par instance.

Important

Lorsque vous installez le contrôleur d'entrée ALB et sélectionnez Create ou Select Existing pour Gateway Source, le contrôleur crée automatiquement un AlbConfig nommé alb et une IngressClass nommée alb.

  1. Créez alb.yaml avec le contenu suivant :

    Parameter

    Description

    spec.config.name

    Le nom de l'instance ALB. Il doit être unique au sein du cluster.

    spec.config.addressType

    Internet (par défaut) : adresse IP publique. Intranet : interne au VPC uniquement. Uniquement lors de la création ; impossible à modifier ultérieurement.

    spec.config.zoneMappings

    Au moins deux vSwitches dans des zones prises en charge par ALB différentes, dans le même VPC que le cluster. Uniquement lors de la création ; impossible à modifier ultérieurement. Les régions à zone unique permettent un seul vSwitch.

    spec.config.zoneMappings[].allocationId

    (Facultatif) ID EIP à associer à l'instance ALB. Si omis, une EIP BGP (multi-ISP) à la demande est créée automatiquement. Seules les EIP à la demande (paiement par transfert de données) qui ne font pas partie d'une instance Internet Shared Bandwidth sont prises en charge. Les EIP pour différentes zones doivent être du même type.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        name: alb
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****  # Replace with your vSwitch ID.
          allocationId: eip-asdfas****            # Replace with your EIP ID. If omitted, an EIP is assigned automatically.
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
          allocationId: eip-dpfmss****
      listeners:
        - port: 80
          protocol: HTTP

    Paramètres AlbConfig par défaut (sauf vSwitchId) :

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb
    spec:
      config:
        accessLogConfig:
          logProject: ""
          logStore: ""
        addressAllocatedMode: Dynamic
        addressType: Internet
        billingConfig:
          internetBandwidth: 0
          internetChargeType: ""
          payType: PostPay
        deletionProtectionEnabled: true
        edition: Standard
        forceOverride: false
        zoneMappings:
        - vSwitchId: #...
        - vSwitchId: #...
    status:
      loadBalancer:
        dnsname: alb-s2em8fr9debkg5****.cn-shenzhen.alb.aliyuncs.com
        id: alb-s2em8fr9debkg5****
  2. Appliquez la configuration :

    kubectl apply -f alb.yaml

    Sortie attendue :

    AlbConfig.alibabacloud.com/alb created
  3. Vérifiez l'AlbConfig :

    PORT&PROTOCOL et CERTID sont vides jusqu'à ce que vous configuriez les écouteurs HTTPS et les certificats.
    kubectl get AlbConfig

    Sortie attendue :

    NAME   ALBID        DNSNAME                                  PORT&PROTOCOL   CERTID   AGE
    alb    alb-******   alb-******.<regionID>.alb.aliyuncs.com                            28m

Mettre à jour un AlbConfig

  1. Listez vos AlbConfigs :

    kubectl get AlbConfig
  2. Modifiez l'AlbConfig :

    kubectl edit albconfig <ALBCONFIG_NAME>

    Par exemple, pour renommer l'instance ALB en new_alb :

    spec:
      config:
        name: new_alb

Supprimer un AlbConfig

Si une instance ALB a été créée avec un AlbConfig, la suppression de l'AlbConfig entraîne la suppression de l'instance ALB.

Important

Supprimez toutes les entrées associées à l'AlbConfig avant de le supprimer.

kubectl delete AlbConfig <AlbConfig_NAME>

Associer une instance Internet Shared Bandwidth

Pour associer une instance Internet Shared Bandwidth à l'instance ALB, définissez billingConfig.bandWidthPackageId :

Cela s'applique uniquement aux instances ALB orientées vers Internet. Pour acheter une instance Internet Shared Bandwidth, consultez Créer une instance Internet Shared Bandwidth .
spec:
  config:
    name: alb
    addressType: Internet
    edition: Standard
    zoneMappings:
    - vSwitchId: vsw-2vcqeyvwsnd***
    - vSwitchId: vsw-2vcbhjlqu7y***
    billingConfig:
      bandWidthPackageId: cbwp-2vcjucp49otd8qolhm***

Créer et utiliser plusieurs instances ALB

Pour utiliser plusieurs instances ALB, créez un AlbConfig et une IngressClass distincts pour chaque instance.

  1. Créez alb-2.yaml :

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-2
    spec:
      config:
        name: alb-2
        addressType: Internet
        zoneMappings:
        - vSwitchId: vsw-uf6ccg2a9g71hx8go****
        - vSwitchId: vsw-uf6nun9tql5t8nh15****
  2. Appliquez-le :

    kubectl apply -f alb-2.yaml
  3. Créez ingress_class2.yaml :

    Clusters v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2

    Clusters earlier than v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: IngressClass
    metadata:
      name: alb-2
    spec:
      controller: ingress.k8s.alibabacloud/alb
      parameters:
        apiGroup: alibabacloud.com
        kind: AlbConfig
        name: alb-2
  4. Appliquez-le :

    kubectl apply -f ingress_class2.yaml
  5. Créez ingress2.yaml. Définissez ingressClassName sur l'IngressClass de l'instance ALB cible :

    Clusters v1.19 and later

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          - path: /tea
            pathType: ImplementationSpecific
            backend:
              service:
                name: tea-svc
                port:
                  number: 80
          - path: /coffee
            pathType: ImplementationSpecific
            backend:
              service:
                name: coffee-svc
                port:
                  number: 80

    Clusters earlier than v1.19

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: cafe-ingress2
    spec:
      ingressClassName: alb-2
      rules:
      - http:
          paths:
          - path: /tea
            backend:
              serviceName: tea-svc
              servicePort: 80
          - path: /coffee
            backend:
              serviceName: coffee-svc
              servicePort: 80
  6. Appliquez-le :

    kubectl apply -f ingress2.yaml

Associer un AlbConfig à une entrée à l'aide d'IngressClass

Utilisez une IngressClass pour lier un AlbConfig à une entrée ALB.

Créer une IngressClass

Créez ingress_class.yaml :

Clusters v1.19 and later

apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: alb
spec:
  controller: ingress.k8s.alibabacloud/alb
  parameters:
    apiGroup: alibabacloud.com
    kind: AlbConfig
    name: alb

Clusters earlier than v1.19

apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
  name: alb
spec:
  controller: ingress.k8s.alibabacloud/alb
  parameters:
    apiGroup: alibabacloud.com
    kind: AlbConfig
    name: alb

Appliquez-le :

kubectl apply -f ingress_class.yaml

Sortie attendue :

ingressclass.networking.k8s.io/alb created

Créer une entrée qui référence l'IngressClass

Créez ingress.yaml et définissez ingressClassName sur le nom de l'IngressClass :

Clusters v1.19 and later

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea
        pathType: ImplementationSpecific
        backend:
          service:
            name: tea-svc
            port:
              number: 80
      - path: /coffee
        pathType: ImplementationSpecific
        backend:
          service:
            name: coffee-svc
            port:
              number: 80

Clusters earlier than v1.19

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: cafe-ingress
spec:
  ingressClassName: alb
  rules:
  - http:
      paths:
      - path: /tea
        backend:
          serviceName: tea-svc
          servicePort: 80
      - path: /coffee
        backend:
          serviceName: coffee-svc
          servicePort: 80

Appliquez-le :

kubectl apply -f ingress.yaml

Sortie attendue :

ingress.networking.k8s.io/cafe-ingress created

Gestion des instances ALB réutilisées

Réutiliser une instance ALB existante

Définissez spec.config.id pour réutiliser une instance ALB existante. Les instances Standard et activées pour WAF depuis la console ALB sont prises en charge ; les instances Basic ne peuvent pas être réutilisées. Une instance ALB ne peut être réutilisée que par un seul cluster, et par un seul AlbConfig au sein de ce cluster.

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: reuse-alb
spec:
  config:
    id: ****
    forceOverride: false
    listenerForceOverride: false

Interaction entre id, forceOverride et listenerForceOverride :

id

forceOverride

listenerForceOverride

Result

Not set

—

—

L'instance ALB n'est pas réutilisée. forceOverride et listenerForceOverride n'ont aucun effet.

Set

true

—

Les attributs de l'instance ALB et des écouteurs sont écrasés.

Set

false

false

Lorsque listenerForceOverride est défini sur false, le contrôleur d'entrée ALB gère uniquement les écouteurs créés automatiquement par AlbConfig (nommés ingress-auto-listener-{port}). Les écouteurs créés manuellement ne sont pas gérés par AlbConfig.

Set

false

true

Les attributs de l'instance ALB ne sont pas écrasés. Le contrôleur gère tous les écouteurs. L'existence et la configuration des écouteurs sont déterminées par AlbConfig.

Important

Ne renommez pas les écouteurs sur une instance ALB réutilisée. Les écouteurs nommés ingress-auto-listener-{port} sont gérés par ACK ; les écouteurs portant d'autres noms sont gérés dans la console ALB.

Supprimer l'AlbConfig d'une instance ALB réutilisée

La suppression de l'AlbConfig d'une instance ALB réutilisée n'entraîne pas la suppression de l'instance ALB elle-même.

  1. Pour ALB Ingress Controller version 2.10.0-aliyun.1 ou antérieure : exécutez kubectl edit afin de supprimer toutes les entrées de spec.listeners, ce qui supprime les écouteurs configurés via l'AlbConfig. Pour les versions postérieures à 2.10.0-aliyun.1, ignorez cette étape.

  2. Supprimez tous les Ingresses associés à l'AlbConfig, puis supprimez l'AlbConfig :

    kubectl delete AlbConfig <AlbConfig_NAME>

Configurations avancées

Activer SLS pour collecter les journaux d'accès

Définissez logProject et logStore dans spec.config.accessLogConfig :

spec:
  config:
    accessLogConfig:
      logProject: "k8s-log-xz92lvykqj1siwvif****"
      logStore: "alb_****"
La valeur de logStore doit commencer par alb_ . Si le Logstore spécifié n'existe pas, un nouveau est créé automatiquement.
Retrouvez le projet de journalisation dans la console ACK, sous Cluster Information > Basic Information .
Pour activer SLS sur une instance ALB réutilisée , définissez forceOverride: true .

Une fois l'activation effectuée, cliquez sur le nom du projet situé à côté de Log Service Project dans la section Basic Information pour consulter les journaux dans SLS.

Activer IPv6

Définissez addressIpVersion: DualStack pour activer la double pile IPv4/IPv6 :

Important

Le paramètre addressIpVersion prend effet uniquement lors de la création et ne peut pas être modifié ultérieurement.

spec:
  config:
    addressIpVersion: DualStack

Configurations des écouteurs

Créer des écouteurs

Définissez port et protocol dans spec.listeners pour déterminer la manière dont ALB reçoit le trafic. Les protocoles pris en charge sont HTTP, HTTPS et Quick UDP Internet Connections (QUIC).

Important

La modification du port, du protocol ou d'autres attributs d'un écouteur entraîne la suppression de l'écouteur existant et la création d'un nouvel écouteur. Pour configurer plusieurs écouteurs avec des protocoles différents, ajoutez les annotations requises à votre Ingress.

Écouteur HTTP

spec:
  listeners:
    - port: 80
      protocol: HTTP
HTTP prend nativement en charge WebSocket. Aucune configuration supplémentaire n'est requise.

Écouteur HTTPS

spec:
  listeners:
    - port: 443
      protocol: HTTPS
Important

Les écouteurs HTTPS nécessitent des certificats.

Écouteur QUIC

spec:
  listeners:
    - port: 443
      protocol: QUIC
Important

Les écouteurs QUIC reçoivent des requêtes HTTP/3 provenant des clients.

Spécifier un certificat

Pour ajouter un certificat à un écouteur HTTPS, exécutez kubectl edit albconfig <Albconfig_Name> et définissez le champ certificates :

spec:
  listeners:
  - caEnabled: false
    certificates:
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
    port: 443
    protocol: HTTPS

Si aucun certificat par défaut n'est spécifié, ALB Ingress utilise le premier certificat comme certificat par défaut.

Si aucun certificat n'est spécifié, la création de l'écouteur est différée jusqu'à l'association d'un Ingress ; un certificat est alors découvert automatiquement en fonction du nom de domaine.

Consultez la rubrique Configurer des certificats HTTPS pour une communication chiffrée.

Supprimer un écouteur

Exécutez kubectl edit albconfig <Albconfig_Name> et supprimez l'entrée de l'écouteur dans spec.listeners.

Important

Dissociez tous les Ingresses de l'écouteur avant de le supprimer. Sinon, la suppression échoue et génère des erreurs.

Par exemple, pour supprimer l'écouteur sur le port 8002 :

# Before
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP

# After
listeners:
- port: 8001
  protocol: HTTP

Fonctionnement des mises à jour des écouteurs

Le tableau listeners est réconcilié en comparant la nouvelle configuration avec l'état actif et l'annotation last-applied-configuration :

Dans la nouvelle configuration

Dans la configuration active

Dans last-applied-configuration

Résultat

Oui

Oui

—

L'écouteur est conservé.

Oui

Non

—

L'écouteur est ajouté.

Non

—

Oui

L'écouteur est supprimé. Les champs peuvent être réinitialisés aux valeurs par défaut.

Non

Oui

Non

L'écouteur est supprimé.

Exemple :

Compte tenu de ces trois états :

# New configuration
listeners:
- port: 8001
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8005  # New
  protocol: HTTP

# Live configuration
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP
- port: 8004
  protocol: HTTP

# last-applied-configuration
listeners:
- port: 8001
  protocol: HTTP
- port: 8002
  protocol: HTTP
- port: 8003
  protocol: HTTP

Après application de la nouvelle configuration :

listeners:
- port: 8001  # Retained (in new config and live config)
  protocol: HTTP
- port: 8003  # Retained (in new config and live config)
  protocol: HTTP
- port: 8005  # Added (in new config, not in live config)
  protocol: HTTP
# Port 8002: deleted (not in new config, in last-applied-configuration)
# Port 8004: deleted (not in new config, in live config, not in last-applied-configuration)

Définir le délai d'expiration de la connexion

Définissez requestTimeout pour contrôler la durée pendant laquelle ALB attend une réponse du backend avant de renvoyer une erreur HTTP 504 au client. Plage valide : 1 à 600 secondes. Valeur par défaut : 60 secondes.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    requestTimeout: 40

Configurations avancées des écouteurs

Configurer la compression des données

Définissez gzipEnabled: true pour activer la compression. Tous les types de fichiers prennent en charge la compression Brotli. Les types de fichiers suivants prennent également en charge la compression Gzip : text/xml, text/plain, text/css, application/javascript, application/x-javascript, application/rss+xml, application/atom+xml, application/xml et application/json.

Remarque
  • Algorithme de compression : si un client prend en charge à la fois Brotli et Gzip, ALB utilise Brotli car il est plus efficace.

  • Conditions de compression : ALB compresse une réponse uniquement lorsque l'en-tête de réponse Content-Length dépasse 1 024 octets et que l'en-tête de requête Accept-Encoding du client inclut l'algorithme de compression correspondant.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    gzipEnabled: true

Conserver les adresses IP des clients

ALB ajoute l'adresse IP du client à l'en-tête X-Forwarded-For avant de transférer la requête au backend.

Important
  • Disponible uniquement pour les écouteurs HTTP et HTTPS.

  • XForwardedForEnabled est activé par défaut et ne peut pas être désactivé.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForEnabled: true # This parameter cannot be set to false.

Meilleure pratique pour les environnements comportant plusieurs couches de proxy : bien que XForwardedForEnabled: true propage l'en-tête X-Forwarded-For par défaut, la valeur IP peut être usurpée lorsque les requêtes transitent par plusieurs proxys. Dans les environnements de production comportant plusieurs couches de proxy, utilisez XForwardedForClientSourceIpsEnabled: true conjointement avec XForwardedForClientSourceIpsTrusted pour récupérer l'adresse IP du client à partir d'une chaîne de proxys approuvés.

Récupérer les métadonnées de connexion du client

Utilisez xForwardedForConfig pour ajouter les métadonnées du client et de l'écouteur aux en-têtes de requête transmis au backend. Tous les champs ci-dessous sont disponibles pour les écouteurs HTTP et HTTPS.

Champ

Lorsque la valeur est définie sur true

XForwardedForClientSrcPortEnabled

Ajoute le port utilisé par le client pour se connecter à l'instance ALB.

XForwardedForProtoEnabled

Ajoute le protocole de l'écouteur utilisé par l'instance ALB.

XForwardedForSLBIdEnabled

Ajoute l'ID de l'instance ALB.

XForwardedForSLBPortEnabled

Ajoute le port d'écoute de l'instance ALB.

Exemple — ajout des quatre en-têtes :

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSrcPortEnabled: true
      XForwardedForProtoEnabled: true
      XForwardedForSLBIdEnabled: true
      XForwardedForSLBPortEnabled: true

Récupérer l'adresse IP du client à partir d'une chaîne de proxys approuvés

Définissez XForwardedForClientSourceIpsEnabled: true pour extraire l'adresse IP réelle du client depuis X-Forwarded-For lorsque les requêtes transitent par plusieurs proxys. Utilisez XForwardedForClientSourceIpsTrusted pour lister les adresses IP ou les blocs CIDR des proxys approuvés. ALB parcourt X-Forwarded-For de droite à gauche et considère la première adresse IP non approuvée comme l'adresse IP du client.

Par exemple, si X-Forwarded-For contient <client IP, proxy-1, proxy-2>, ajoutez proxy-1 et proxy-2 à la liste des proxys approuvés.

Important

Disponible uniquement pour les écouteurs HTTP et HTTPS.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    xForwardedForConfig:
      XForwardedForClientSourceIpsEnabled: true
      XForwardedForClientSourceIpsTrusted: 192.168.x.x;192.168.x.x/16

Configurer une stratégie de sécurité TLS personnalisée

Définissez securityPolicyId sur un écouteur HTTPS pour appliquer une stratégie de sécurité TLS par défaut ou personnalisée.

spec:
  listeners:
  - port: 443
    protocol: HTTPS
    securityPolicyId: tls_cipher_policy_1_1

Configurer une adresse IP de proxy approuvé

Consultez la rubrique Spécifier une adresse IP de proxy approuvé.

Configurer des listes de contrôle d'accès réseau (ACL)

Utilisez aclConfig pour autoriser ou refuser le trafic provenant d'adresses IP ou de blocs CIDR spécifiques au niveau de l'écouteur.

spec:
  listeners:
  - port: 80
    protocol: HTTP
    aclConfig:
      aclEntries:
      - 127.0.0.1/32
      aclType: White

Paramètre

Description

aclType

White : liste d'autorisation — seules les adresses IP répertoriées peuvent accéder à l'écouteur. Black : liste de blocage — les adresses IP répertoriées sont refusées.

aclEntries

Adresses IP ou blocs CIDR à inclure dans la règle ACL. Exemple : 127.0.0.1/32.

Consultez la rubrique Configurer des ACL.

Dépannage

Erreur lors de l'enregistrement d'un fichier YAML AlbConfig : alb: listener port number must between [1:65535], or you should set listen port explicitly in listener config.

Cause

Dans un fichier YAML AlbConfig, le symbole - dans la section spec.listener marque le début d'une configuration d'écouteur unique. Dans l'exemple incorrect de gauche, trois symboles - sont utilisés, ce qui définit trois écouteurs. Une erreur se produit car la section certificates de la dernière entrée - ne contient pas la configuration du port.

Solution

Chaque configuration d'écouteur doit commencer par un tiret (-). Dans l'exemple corrigé de droite, le tiret (-) précédant certificates est supprimé, ce qui intègre la configuration du certificat à l'écouteur HTTPS: 443.

Exemple incorrect :

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: alb-demo
spec:
  config:
  ...
  listeners:
  - port: 80
    protocol: HTTP
  - port: 443
    protocol: HTTPS
  - certificates:  # Incorrect: This extra hyphen defines a third listener.
    - CertificateId: 756****-cn-hangzhou
      IsDefault: true
  ...

Exemple corrigé :

apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: alb-demo
    spec:
      config:
      ...
      listeners:
      - port: 80
        protocol: HTTP
      - port: 443
        protocol: HTTPS
        certificates:  # Correct: The extra hyphen is deleted to include the certificate configuration in the HTTPS: 443 listener.
        - CertificateId: 756****-cn-hangzhou
          IsDefault: true
      ...

Pourquoi les modifications du type de réseau (addressType) ou du vSwitch (zoneMappings.vSwitchId) d'une instance ALB ne prennent-elles pas effet lorsqu'elles sont effectuées via un fichier YAML AlbConfig ?

Cause

Vous ne pouvez pas modifier le type de réseau ou la configuration vSwitch d'une instance Application Load Balancer (ALB) en modifiant les paramètres addressType ou zoneMappings.vSwitchId dans son fichier YAML AlbConfig.

image

Solution

Commencez par désactiver le mode lecture seule de la configuration pour l'instance dans la console ALB. Modifiez ensuite manuellement le type de réseau ou la configuration vSwitch de l'instance ALB. Une fois la configuration modifiée, réactivez le mode lecture seule de la configuration.

  1. Connectez-vous à la console ALB. Dans la région cible, cliquez sur l'ID de l'instance correspondant à status.loadBalancer.id dans le fichier AlbConfig.

  2. Sous l'onglet Instance Details, dans la section Instance Information, cliquez sur Disable Configuration Read-only Mode et confirmez.

  3. Cliquez sur Change Network Type ou Modify Zone/Subnet pour modifier le type de réseau ou la configuration vSwitch de l'instance ALB.

  4. Une fois les modifications terminées, réactivez le configuration read-only mode.

Erreur de l'écouteur HTTPS : empty https listener default certs

Cause

Un écouteur HTTPS est configuré dans l'AlbConfig, mais aucun ID de certificat n'est spécifié dans le champ certificates. Le contrôleur ne peut pas créer l'écouteur car aucun Ingress associé n'existe pour découvrir automatiquement un certificat en fonction du nom de domaine.

Solutions

  • Méthode 1 (recommandée) : spécifiez un ID de certificat dans le champ certificates pour l'écouteur HTTPS. Pour plus d'informations, consultez la section spécifier un certificat.

    listeners:
    - port: 443
      protocol: HTTPS
      certificates:
      - CertificateId: <your-certificate-id>  # Replace with your actual certificate ID.
        IsDefault: true
  • Méthode 2 : dans l'AlbConfig, configurez un écouteur HTTP sur le port 80 et créez une ressource Ingress associée au nom de domaine cible. Une fois l'Ingress créé, ALB Ingress Controller découvre automatiquement le certificat à partir de l'Ingress en fonction du nom de domaine et l'attache à l'écouteur HTTPS.