Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Utiliser une passerelle ALB dans Knative pour la répartition du trafic

Dernière mise à jour :Sep 29, 2026

Application Load Balancer (ALB) offre un équilibrage de charge de couche 7 à haut débit. Utilisez la passerelle ALB, une passerelle entièrement gérée dotée d'une élasticité automatique et prenant en charge les déploiements canaris, pour répartir le trafic des services Knative nécessitant un routage complexe, une répartition fine du trafic ou une mise à l'échelle automatique.

Prérequis

  • Knative est déployé dans votre cluster. Pour plus d'informations, consultez les rubriques et Déployer et gérer les composants Knative.

  • Le contrôleur d'entrée ALB est déployé.

  • Dans les clusters utilisant le plugin réseau Flannel, configurez le service Kubernetes correspondant à Knative avec le type NodePort. Ajoutez le paramètre eni: false à la ConfigMap config-network.

    1. Modifiez le fichier config-network.yaml.

      kubectl -n knative-serving edit configmap config-network
    2. Modifiez et enregistrez le fichier comme suit.

      apiVersion: v1
      data:
        ...
        eni: false  # Add this configuration.
        ...
      kind: ConfigMap
      metadata:
        name: config-network
        namespace: knative-serving
        ...

Étape 1 : Déployer la passerelle ALB

Lors du déploiement de la passerelle ALB dans Knative, vous pouvez utiliser une instance ALB créée automatiquement par Knative ou spécifier une instance ALB existante.

Méthode 1 : Créer automatiquement une instance ALB lors du déploiement de la passerelle ALB

Si Knative est déjà déployé, vous pouvez également configurer la passerelle ALB en modifiant le fichier de configuration Knative.

Configurer la passerelle ALB lors du déploiement de Knative

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Applications > Knative.

  3. Sous l'onglet Components, cliquez sur Deploy Knative. Sélectionnez ensuite ALB comme passerelle de service, choisissez au moins deux vSwitches, puis suivez les instructions à l'écran pour terminer le déploiement de Knative.

    Pour savoir comment créer un vSwitch, consultez la rubrique Créer un VPC et un vSwitch.

Déployer la passerelle ALB en modifiant le fichier de configuration Knative

Pour un déploiement Knative existant, vous pouvez configurer la passerelle ALB en modifiant le fichier de configuration Knative. Pour obtenir des informations sur le déploiement de Knative, consultez les rubriques Déployer Knative dans un cluster ACK et Déployer Knative dans un cluster ACK Serverless.

  1. Exécutez la commande suivante pour modifier le fichier config-network.yaml.

    kubectl -n knative-serving edit configmap config-network
  2. Modifiez et enregistrez le fichier config-network.yaml comme suit.

    Modifiez la valeur ingress.class: alb.ingress.networking.knative.dev et définissez vswitch-ids, puis enregistrez et fermez le fichier config-network pour terminer la configuration de la passerelle ALB. Pour connaître les régions et zones prises en charge par ALB, consultez la rubrique Régions et zones prises en charge par ALB.

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # Indicates that ALB is used as the Ingress controller.
      vswitch-ids: vsw-uf6kbvc7mccqia2pi****,vsw-uf66scyuw2fncpn38**** # Replace with the IDs of two vSwitches that you have created in different zones. The system automatically binds these vSwitches when creating the ALB.
      intranet: "true" # Also creates an internal-facing ALB instance.
      internet: "true" # Default: true, indicates that an internet-facing ALB instance is created. If set to false, no internet-facing ALB is created.
      ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...
    Important

    Si seule l'instance ALB interne est activée, le service Knative doit être configuré pour un accès interne uniquement. Pour ce faire, définissez le libellé networking.knative.dev/visibility: cluster-local.

Méthode 2 : Utiliser une passerelle ALB existante

Vous pouvez utiliser une instance ALB existante en modifiant le fichier de configuration Knative.

  1. Exécutez la commande suivante pour modifier le fichier config-network.yaml.

    kubectl -n knative-serving edit configmap config-network
  2. Modifiez et enregistrez le fichier config-network.yaml comme suit.

    Dans le fichier de configuration, modifiez la valeur ingress.class: alb.ingress.networking.knative.dev et définissez albconfig sur une instance ALB existante. Dans ce cas, il n'est pas nécessaire de configurer vswitch-ids.

    apiVersion: v1
    data:
      ...
      ingress.class: alb.ingress.networking.knative.dev # Indicates that ALB is used as the Ingress controller.
      albconfig: alb-dev-albconfig # Specify and reuse the name of an existing internet-facing ALBConfig.
      intranet-albconfig: alb-dev-intranet-albconfig # Specify and reuse the name of an existing internal-facing ALBConfig.
    ...
    kind: ConfigMap
    metadata:
      name: config-network
      namespace: knative-serving
      ...

Étape 2 : Accéder au service déployé via la passerelle ALB

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom de votre cluster. Dans le volet de navigation de gauche, cliquez sur Applications > Knative.

  3. Sur la page Knative, cliquez sur l'onglet Services, sélectionnez default dans le menu déroulant Namespace, cliquez sur Create from Template, collez l'exemple YAML suivant dans le modèle, puis cliquez sur Create.

    L'exemple YAML suivant crée un service Knative nommé helloworld-go.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld-go
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56 # Replace the region with the actual region you use.
            env:
            - name: TARGET
              value: "Knative"
  4. Sur la page Services, récupérez le domaine et l'adresse de la passerelle du service helloworld-go à partir des colonnes Default Domain et Access Gateway respectivement.

  5. Exécutez la commande suivante pour accéder au service helloworld-go.

    curl -H "Host: helloworld-go.default.example.com" http://alb-******.cn-beijing.alb.aliyuncs.com	 # Replace with the actual gateway IP and domain.

    Sortie attendue :

    Hello Knative!

(Facultatif) Étape 3 : Afficher les données de surveillance du service

Knative fournit une observabilité prête à l'emploi. Sur la page Knative, cliquez sur l'onglet Monitoring Dashboards pour afficher les données de surveillance du service Knative cible. Consultez les rubriques Afficher le tableau de bord de surveillance des services Knative.

Opérations connexes

Configurer l'accès HTTPS

Spécifiez un certificat dans ALBConfig et activez l'accès TLS dans un service Knative à l'aide de l'annotation knative.k8s.alibabacloud/tls: "true". Exemple :

Remarque

Pour gérer et associer des certificats à l'aide de Secret, consultez la rubrique Configurer l'accès HTTPS.

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld
  namespace: default
  annotations:
    knative.k8s.alibabacloud/tls: "true"
spec:
  template:
    spec:
      containers:
      - image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56  # Replace the region with the actual region you use.
        env:
        - name: TARGET
          value: "Knative"

Exécutez la commande suivante pour accéder au service HTTPS.

curl -H "Host: helloworld.default.knative.top" https://alb-ppcate4ox6ge9m1wik.cn-shenzhen.alb.aliyuncs.com -k

Sortie attendue :

Hello Knative!

Rediriger les requêtes HTTP vers le port HTTPS 443

Vous pouvez rediriger les requêtes HTTP vers le port HTTPS 443 dans un service Knative à l'aide de l'annotation networking.knative.dev/http-protocol. Exemple :

apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: helloworld-go
  annotations:
    networking.knative.dev/http-protocol: redirected
spec:
  template:
    spec:
      containers:
      - image: registry-vpc.cn-beijing.aliyuncs.com/knative-sample/helloworld-go:73fbdd56  # Replace the region with the actual region you use.
        env:
        - name: TARGET
          value: "Knative"

Configurer la résolution de domaine CNAME

ALB prend en charge la résolution de domaine CNAME, ce qui vous permet de pointer un domaine personnalisé vers le domaine de service public d'une instance ALB pour accéder à diverses ressources réseau. Pour plus de détails, consultez la rubrique Configurer un enregistrement CNAME pour une instance ALB.

Documents connexes