Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Utiliser une passerelle ALB dans Knative pour la distribution du trafic

Dernière mise à jour :Aug 12, 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 avec élasticité automatique et prise en charge des déploiements canaris, pour distribuer 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 Déployer Knative.

  • L'ALB Ingress Controller est déployé.

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

    1. Modifiez le fichier config-network.yaml.

      kubectl -n knative-serving edit configmap config-network
    2. Apportez les modifications suivantes au fichier, puis enregistrez-le.

      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éation automatique d'une instance ALB lors du déploiement de la passerelle

Si Knative est déjà déployé, configurez 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. Dans 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 plus de détails sur la création d'un vSwitch, consultez 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, configurez la passerelle ALB en modifiant le fichier de configuration Knative. Pour savoir comment déployer Knative, consultez 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. Apportez les modifications suivantes au fichier config-network.yaml, puis enregistrez-le.

    Modifiez ingress.class: alb.ingress.networking.knative.dev et définissez vswitch-ids, puis enregistrez et fermez le fichier config-network pour finaliser la configuration de la passerelle ALB. Pour connaître les régions et zones prises en charge par ALB, consultez 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, configurez le service Knative pour un accès interne uniquement. Pour ce faire, définissez le libellé networking.knative.dev/visibility: cluster-local.

Méthode 2 : Utilisation d'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. Apportez les modifications suivantes au fichier config-network.yaml, puis enregistrez-le.

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

    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 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 respectivement dans les colonnes Default Domain et Access Gateway.

  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.

    Résultat attendu :

    Hello Knative!

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

Knative offre une observabilité prête à l'emploi. Sur la page Knative, cliquez sur l'onglet Monitoring Dashboards pour consulter les données de surveillance du service Knative cible. Consultez Consulter le tableau de bord de surveillance du service Knative.

Opérations associées

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 Secrets, consultez 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

Résultat attendu :

Hello Knative!

Rediriger les requêtes HTTP vers le port HTTPS 443

Redirigez 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 permet de pointer un domaine personnalisé vers le domaine de service public d'une instance ALB afin d'accéder à diverses ressources réseau. Pour plus de détails, consultez Configurer un enregistrement CNAME pour une instance ALB.

Documents associés