CloudBox est un service cloud entièrement géré qui intègre le matériel et les logiciels d'Alibaba Cloud, y compris les ressources de calcul, de stockage et de réseau, au sein de votre centre de données sur site. Il vous offre ainsi la sécurité des données, un traitement local des données et un accès à faible latence. Lorsque vous ajoutez un cluster ACK disposant d'un pool de nœuds CloudBox à Service Mesh (ASM), ASM gère le trafic sur les pools de nœuds du cloud public et de CloudBox grâce à des règles de routage, des politiques de sécurité et des capacités d'observabilité unifiées.
Les sections suivantes détaillent le déploiement d'une passerelle d'entrée ASM dans une zone CloudBox et la vérification de la connectivité de bout en bout à l'aide d'un exemple d'application.
Vue d'ensemble du déploiement
La configuration s'effectue en trois étapes :
Déployez une passerelle d'entrée dans la zone CloudBox -- Créez une ressource
IstioGatewayavec des annotations de zone afin que l'instance Classic Load Balancer (CLB) et le pod de la passerelle soient tous deux placés dans la zone CloudBox.Déployez une application et configurez le routage -- Planifiez l'application httpbin sur les nœuds CloudBox et acheminez le trafic via la passerelle d'entrée.
Vérifiez la connectivité -- Envoyez des requêtes de test via la passerelle pour confirmer que le trafic atteint l'application.
Contraintes réseau de CloudBox
CloudBox restreint le fonctionnement des services de type LoadBalancer par rapport aux zones du cloud public. Les instances CLB d'une zone CloudBox ne peuvent utiliser que des instances Elastic Compute Service (ECS) CloudBox comme backends, tandis que les instances CLB d'une zone du cloud public ne peuvent utiliser que des instances ECS du cloud public. Les instances CLB CloudBox ne prennent pas en charge l'association d'Elastic IP Address (EIP), ce qui empêche la création d'un CLB exposé publiquement dans une zone CloudBox.
| Fonctionnalité | Zone du cloud public | Zone CloudBox |
|---|---|---|
| Nœuds backend du LoadBalancer | Instances ECS du cloud public uniquement | Instances ECS CloudBox uniquement |
| Association d'EIP à un CLB | Prise en charge | Non pris en charge |
| CLB exposé publiquement | Prise en charge | Non pris en charge |
En raison de ces contraintes, le CLB de la passerelle et le pod de la passerelle doivent résider dans la même zone. Un CLB situé dans une zone du cloud public ne peut pas acheminer le trafic vers des pods situés dans une zone CloudBox, et vice versa.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Un cluster ACK avec un pool de nœuds CloudBox. Pour plus d'informations, consultez la rubrique Utilisation des ressources CloudBox dans un cluster ACK.
Une instance ASM avec le cluster ACK ajouté. Pour plus d'informations, consultez les rubriques Création d'une instance ASM et Ajout d'un cluster à une instance ASM.
Déploiement d'une passerelle d'entrée dans la zone CloudBox
Pour placer la passerelle dans la zone CloudBox, configurez deux champs dans la spécification IstioGateway :
**
serviceAnnotations** -- Épinglez l'instance CLB à la zone CloudBox et au commutateur virtuel.**
nodeSelector** -- Planifiez le pod de la passerelle sur les nœuds de la zone CloudBox. Vous pouvez également utiliser le champaffinitypour des règles de planification plus avancées.
Le fichier YAML suivant crée une passerelle d'entrée orientée intranet dans la zone CloudBox :
apiVersion: istio.alibabacloud.com/v1beta1
kind: IstioGateway
metadata:
name: ingressgateway
namespace: "istio-system"
spec:
clusterIds:
- <your-ack-cluster-id>
externalTrafficPolicy: Local
gatewayType: ingress
ports:
- name: http
port: 80
targetPort: 80
- name: https
port: 443
targetPort: 443
replicaCount: 2
resources:
limits:
cpu: '2'
memory: 2G
requests:
cpu: 200m
memory: 256Mi
serviceType: LoadBalancer
serviceAnnotations:
service.beta.kubernetes.io/alicloud-loadbalancer-address-type: intranet
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-vswitch-id: <cloudbox-vswitch-id>
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-master-zoneid: <cloudbox-zone-id>
nodeSelector:
topology.kubernetes.io/zone: <cloudbox-zone-id>
rollingMaxSurge: "100%"
rollingMaxUnavailable: "25%"
Remplacez les espaces réservés suivants par vos valeurs réelles :
| Espace réservé | Description | Exemple |
|---|---|---|
<your-ack-cluster-id> |
ID du cluster ACK | c1a2b3c4d5e6f7890 |
<cloudbox-vswitch-id> |
ID du commutateur virtuel dans la zone CloudBox | vsw-abc123def456 |
<cloudbox-zone-id> |
ID de la zone de la ressource CloudBox | cn-hangzhou-cloudbox-a |
Appliquez le fichier YAML en utilisant l'une des méthodes suivantes :
kubectl avec le kubeconfig ASM : Enregistrez le fichier YAML dans un fichier et exécutez
kubectl apply -f <file>.yamlen utilisant le kubeconfig de l'instance ASM.Console ASM : Créez la passerelle via YAML dans la console ASM. Pour plus d'informations, consultez la rubrique Gestion d'une passerelle d'entrée avec KubeAPI.
Vérification de la passerelle
Après avoir appliqué le fichier YAML, vérifiez que le pod de la passerelle est en cours d'exécution et que le CLB est provisionné :
# Check gateway pod status
kubectl get pods -n istio-system -l istio=ingressgateway
# Check the gateway Service and its external IP
kubectl get svc -n istio-system ingressgateway
Le pod de la passerelle doit être à l'état Running et le service doit disposer d'une adresse IP externe attribuée par le CLB dans la zone CloudBox.
Déploiement de l'application et configuration du routage
La passerelle créée à l'étape précédente est accessible uniquement depuis l'intranet et n'est pas joignable depuis Internet public. Assurez-vous que votre environnement de test dispose d'une connectivité au réseau VPC avant de poursuivre.
Suivez les étapes décrites dans la rubrique Déploiement de l'application httpbin pour :
Déployer l'application httpbin sur le cluster ACK situé sur les nœuds CloudBox.
Créer une ressource
Gatewayet une ressourceVirtualServiceafin d'acheminer le trafic via la passerelle d'entrée.
Vérification de la connectivité de bout en bout
Après avoir déployé l'application et les règles de routage, envoyez une requête de test via la passerelle :
# Get the gateway IP
GATEWAY_IP=$(kubectl get svc -n istio-system ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
# Send a test request
curl -I http://$GATEWAY_IP/status/200
Une réponse réussie renvoie un code HTTP 200, confirmant que le trafic circule correctement de la passerelle vers l'application httpbin hébergée sur les nœuds CloudBox.
Dépannage
| Symptôme | Cause possible | Résolution |
|---|---|---|
Le pod de la passerelle reste à l'état Pending |
Aucun nœud dans la zone CloudBox ne correspond au sélecteur nodeSelector |
Vérifiez que le pool de nœuds CloudBox est opérationnel et que l'ID de zone indiqué dans nodeSelector correspond à la zone CloudBox réelle. |
| Le CLB n'est pas provisionné | L'ID du commutateur virtuel ou l'ID de zone dans serviceAnnotations est incorrect |
Vérifiez que alibaba-cloud-loadbalancer-vswitch-id et alibaba-cloud-loadbalancer-master-zoneid pointent vers des ressources CloudBox valides. |
La requête curl expire |
Aucune connectivité VPC depuis l'environnement de test vers le CLB intranet | Connectez-vous au VPC via VPN, Express Connect ou un serveur de rebond situé au sein du VPC. |
| Erreur HTTP 503 depuis la passerelle | Le pod httpbin n'est pas en cours d'exécution ou l'injection sidecar n'est pas activée | Vérifiez que le pod httpbin dispose d'un conteneur sidecar et qu'il est à l'état Running. |
Rubriques connexes
Configuration des politiques de gestion du trafic pour un routage granulaire entre les charges de travail du cloud public et de CloudBox
Activation de l'observabilité pour surveiller le trafic interzones
Configuration de mTLS pour sécuriser la communication entre les services across zones