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 ConfigMapconfig-network.-
Modifiez le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
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
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 .
-
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.
-
Exécutez la commande suivante pour modifier le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
Modifiez et enregistrez le fichier
config-network.yamlcomme suit.Modifiez la valeur
ingress.class: alb.ingress.networking.knative.devet définissezvswitch-ids, puis enregistrez et fermez le fichierconfig-networkpour 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 ...ImportantSi 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.
-
Exécutez la commande suivante pour modifier le fichier
config-network.yaml.kubectl -n knative-serving edit configmap config-network -
Modifiez et enregistrez le fichier
config-network.yamlcomme suit.Dans le fichier de configuration, modifiez la valeur
ingress.class: alb.ingress.networking.knative.devet définissezalbconfigsur une instance ALB existante. Dans ce cas, il n'est pas nécessaire de configurervswitch-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
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 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" 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.-
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 :
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
Pour activer les domaines personnalisés pour les services Knative, consultez la rubrique Configurer des domaines et des 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 sonde 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 IP élastique (EIP). Pour plus d'informations, consultez la rubrique Associer une EIP à l'instance de conteneur élastique sur laquelle s'exécute un service Knative.