Si vos charges de travail s’exécutent dans un centre de données sur site ou dans un cluster Kubernetes hébergé par un fournisseur de cloud public tiers, vous pouvez utiliser les passerelles multi-clusters d’ACK One pour bâtir un système de reprise d’activité hybride ou intercloud avec basculement automatique et transparent. Cette rubrique explique comment mettre en place rapidement un système de reprise d’activité hybride actif-actif au sein d’une même ville à l’aide d’ACK One.
Architecture
Trois composants centraux : une instance Fleet (avec GitOps en option), un cluster ACK dans le cloud et un cluster enregistré connecté à votre environnement sur site.
Connexion entre les composants :
Toutes les ressources Alibaba Cloud partagent un seul VPC. Un cluster ACK s’exécute dans la zone de disponibilité (AZ) 1 ; un cluster enregistré se trouve dans l’AZ 2.
Votre cluster sur site (ou le cluster de la plateforme tierce) se connecte au cluster enregistré via une liaison dédiée entre le centre de données et le VPC.
Les deux clusters sont associés à l’instance Fleet. ACK One GitOps distribue l’application vers les deux clusters.
Sur l’instance Fleet, un AlbConfig crée une passerelle multi-clusters ALB. Un Ingress au niveau du Fleet définit les règles de routage pour le trafic nord-sud et la reprise d’activité inter-zones.
Prérequis
Avant de commencer :
Une instance Fleet, un cluster ACK et un cluster enregistré situés dans le même VPC mais dans des zones de disponibilité différentes
Des blocs CIDR de nœuds et de pods non chevauchants entre le cluster ACK et le cluster Kubernetes sur site (Conception réseau pour la gestion Fleet)
Une liaison dédiée reliant votre centre de données sur site au VPC
Le type de réseau de conteneurs du cluster sur site (underlay ou overlay) est déterminé — cela influence le type de Service requis
| Type de réseau | Type de Service requis | Cas d’utilisation |
|---|---|---|
| Underlay | ClusterIP | Les adresses IP des pods sont directement routables depuis le réseau sur site |
| Overlay | NodePort | Les adresses IP des pods ne sont pas routables ; le trafic doit entrer via les ports de nœud |
Concevez le réseau et créez les clusters
Créez une instance Fleet, un cluster ACK et un cluster enregistré dans le même VPC, mais dans des zones de disponibilité différentes.
Vérifiez que les blocs CIDR des nœuds et des pods ne se chevauchent pas entre le cluster ACK et le cluster Kubernetes sur site.
Connectez-vous à Alibaba Cloud
-
Connectez le cluster Kubernetes sur site au cluster enregistré (Créer un cluster enregistré).
Pour migrer les charges de travail vers Alibaba Cloud avec des ressources élastiques : Créer un cluster hybride et ajouter des instances ECS au cluster et Planifier des pods sur des instances de conteneur élastiques déployées en tant que nœuds virtuels . Pour améliorer la disponibilité face aux pics de trafic : Créer des ECIs across zones .
Connectez le réseau sur site au VPC. Consultez Connectivité réseau et Présentation des réseaux hybrides.
Associez le cluster enregistré et le cluster ACK à l’instance Fleet (Gérer les clusters associés).
Distribuez l’application sur plusieurs clusters
Ces exemples ApplicationSet utilisent l’application web-demo. La rubrique Créer une application multi-clusters couvre les options avancées.
Réseau underlay
Tous les clusters utilisent des Services ClusterIP. Appliquez l’ApplicationSet suivant :
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: appset-web-demo-undelay
namespace: argocd
spec:
template:
metadata:
name: '{{.metadata.annotations.cluster_id}}-web-demo'
namespace: argocd
spec:
destination:
name: '{{.name}}'
namespace: gateway-demo
project: default
source:
repoURL: https://github.com/AliyunContainerService/gitops-demo.git
path: manifests/helm/web-demo
targetRevision: main
helm:
valueFiles:
- values.yaml
parameters:
- name: envCluster
value: '{{.metadata.annotations.cluster_name}}'
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
generators:
- clusters:
selector:
matchExpressions:
- values:
- cluster
key: argocd.argoproj.io/secret-type
operator: In
- values:
- in-cluster
key: name
operator: NotIn
goTemplateOptions:
- missingkey=error
syncPolicy:
preserveResourcesOnDeletion: false
goTemplate: true
Réseau overlay
Le cluster sur site utilise des Services NodePort ; le cluster ACK utilise des Services ClusterIP. Étiquetez chaque cluster avant d’appliquer l’ApplicationSet.
-
Dans Argo CD, accédez à Settings > Clusters et ajoutez ces étiquettes :
Cluster sur site :
cluster: idcCluster ACK :
cluster: ack
Appliquez l’ApplicationSet suivant :
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
name: appset-web-demo-overlay
namespace: argocd
spec:
template:
metadata:
name: '{{.metadata.annotations.cluster_id}}-web-demo-overlay'
namespace: argocd
spec:
destination:
name: '{{.name}}'
namespace: gateway-demo
project: default
source:
repoURL: https://github.com/AliyunContainerService/gitops-demo.git
path: manifests/helm/web-demo
targetRevision: main
helm:
valueFiles:
- values.yaml
parameters:
- name: isNodePort
value: "{{.values.isNodePort}}"
- name: envCluster
value: '{{.metadata.annotations.cluster_name}}'
syncPolicy:
automated: {}
syncOptions:
- CreateNamespace=true
generators:
- clusters:
selector:
matchLabels:
cluster: 'idc'
# A key-value map for arbitrary parameters
values:
isNodePort: "true"
- clusters:
selector:
matchLabels:
cluster: 'ack'
values:
isNodePort: "false"
goTemplateOptions:
- missingkey=error
syncPolicy:
preserveResourcesOnDeletion: false
goTemplate: true
Configurez la passerelle multi-clusters ALB
Après avoir déployé l’application sur les deux clusters :
Sur l’instance Fleet, créez un AlbConfig pour provisionner la passerelle multi-clusters ALB et ajoutez-y les deux clusters.
Créez des règles de routage et des Ingress sur l’instance Fleet pour assurer la redondance active entre les zones.
Mettre en place un système de reprise d’activité inter-zones décrit la procédure de configuration complète.
Étapes suivantes
Mettre en place un système de reprise d’activité inter-zones — Configuration d’AlbConfig et d’Ingress pour le routage et le basculement
Conception réseau pour la gestion Fleet — Planification des CIDR et recommandations sur la topologie réseau
Créer une application multi-clusters — Options de configuration avancées pour ApplicationSet