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: falseau ConfigMap config-network.-
Modifiez le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
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
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 .
-
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.
-
Exécutez la commande suivante pour modifier le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
Apportez les modifications suivantes au fichier
config-network.yaml, puis enregistrez-le.Modifiez
ingress.class: alb.ingress.networking.knative.devet définissezvswitch-ids, puis enregistrez et fermez le fichierconfig-networkpour 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 ...ImportantSi 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.
-
Exécutez la commande suivante pour modifier le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
Apportez les modifications suivantes au fichier
config-network.yaml, puis enregistrez-le.Dans le fichier de configuration, modifiez
ingress.class: alb.ingress.networking.knative.devet définissezalbconfigsur une instance ALB existante. Dans ce cas, la configuration devswitch-idsn'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
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 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" Sur la page Services, récupérez le domaine et l'adresse de la passerelle du service
helloworld-gorespectivement dans les colonnes Default Domain et Access Gateway.-
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 :
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
Pour activer les domaines personnalisés pour les services Knative, consultez Configurer des domaines et chemins personnalisés.
Configurer l'accès par certificat HTTPS pour les services Knative.
Déployer des services gRPC dans Knative pour améliorer l'efficacité du réseau.
Configurer la vérification de port dans Knative pour surveiller l'état de santé et la disponibilité des services Knative.
Si vos instances ECI doivent se connecter à Internet, associez une adresse EIP. Pour plus d'informations, consultez Associer une EIP à l'instance de conteneur élastique exécutant un service Knative.