K8s - Architecture
Last updated
Last updated
Il existe 3 topologies possibles pour le cluster K8s fourni par cegedim.cloud :
Standalone : les charges de travail sont déployées dans un seul centre de données sans plan de reprise après sinistre.
Standard : les charges de travail sont toujours déployées dans un seul centre de données, mais elles sont protégées contre un désastre du centre de données en utilisant un centre de données secondaire comme basculement.
Haute disponibilité : les charges de travail sont déployées dans deux centres de données et aucune interruption des services en cas de sinistre du centre de données ne peut être obtenue avec un déploiement multi-réplica correctement distribué.
cegedim.cloud fournit une topologie de calcul basée sur :
Région : une paire de centres de données
Area : isolation du réseau d'infrastructure entre les locataires
Zones de disponibilité : à l'intérieur d'une zone, infrastructure isolée pour le calcul et le stockage.
Les clusters Kubernetes peuvent être déployés à l'aide de 2 topologies :
Standard
1
1
2
2
4h
Haute Disponibilité
3
2
3
4
0 - 5 min
En fonction de vos exigences en termes de RTO et de coûts, vous pouvez choisir la topologie la mieux adaptée à vos besoins.
Standard
High Availability
Pour plus de détails sur la topologie de haute disponibilité, veuillez suivre cette page : Haute Disponibilité
cegedim.cloud utilise des clés topologiques standard :
topology.kubernetes.io/region
Région
topology.kubernetes.io/zone
Zone de disponibilité
kubernetes.io/hostname
FQDN du noeud
Depuis Kubernetes > 1.20, failure-domain.beta.kubernetes.io/zone est obsolète mais reste disponible en cas de préexistence. Seul topology.kubernetes.io/zone sera officiellement maintenu.
Voici la liste des composants et des outils qui sont déployés dans un cluster standard livré :
Rancher
2.8.3
Kubernetes
1.28
Ingress controllers
ingress-nginx 1.10.0, traefik 2.11.2, istio 1.20.3
Prometheus
2.42.0
Grafana
9.1.5
Helm
3.13.3
CSI Ceph
3.9.0
Node OS
Ubuntu 22.04
CNI - canal (Calico+Flannel)
3.26.3
Docker
24.0.9
Voici un schéma avec tous les composants du réseau expliqués :
Deux pods de 2 namespaces appartenant au même projet Rancher peuvent communiquer entre eux.
Deux pods de 2 namespaces appartenant à deux projets Rancher différents ne peuvent pas communiquer entre eux à moins que l'utilisateur ne définisse une Network Policy dédiée à ce besoin.
Les pods d'un projet Rancher nommé System peuvent communiquer avec les pods d'autres projets Rancher.
Les pods ne peuvent envoyer des requêtes qu'aux serveurs du même VLAN, à moins qu'une règle d'ouverture de réseau spécifique ne soit configurée entre les deux VLANs.
Les pods ne peuvent pas envoyer de requêtes à Internet à moins qu'un proxy ne soit configuré à l'intérieur du pod ou qu'une règle d'ouverture de réseau spécifique ne soit configurée pour le VLAN concerné.
Les requêtes vers le serveur api kube peuvent faire l'objet d'une proxy inverse par l'URL Rancher.
La charge de travail hébergée par les pods ne peut pas être directement accessible depuis l'extérieur du cluster K8S, mais via une couche d'entrée pour le protocole HTTP ou via un service NodePort pour le protocole TCP avec un équilibreur de charge respectif.
nginx est l'ingress controller déployé pour exposer vos workloads. Vous pouvez trouver la documentation pertinente sur le Github officiel à l'adresse :
Deux ingress controllers sont déployés :
Un exposé au réseau interne de Cegedim
ingress controller nginx
écoute sur chaque nœud de travail sur le port :80
il s'agit de la classe d'entrée par défaut (aucune classe d'entrée ne doit être spécifiée).
Un exposé à internet
nginx ingress controller - vous pouvez demander à avoir un ingress controller externe pour nginx.
écoute de chaque nœud de travail sur le port : 8081
cette ingress classe est : nginx-ext
en utilisant l'annotation : kubernetes.io/ingress.class:"nginx-ext"
Un cluster K8s est livré avec :
Un Elastic Secured Endpoint, géré par des appliances F5, exposant la charge de travail K8s au réseau interne de Cegedim (une fois que vous êtes connecté au LAN de Cegedim, soit physiquement, soit par VPN).
Une résolution DNS *.<votreclustername>.ccs.cegedim.cloud
vers ce point d'accès.
Un certificat SSL *.<votreclustername>.ccs.cegedim.cloud
configuré
Vous pouvez utiliser ITCare en cas de besoin d'une configuration spécifique :
Exposition de vos charges de travail à l'Internet ou à un lien privé
Utilisation d'un FQDN spécifique pour déployer votre charge de travail
Utilisation d'un certificat spécifique pour déployer votre charge de travail
Utilisation de Traefik comme fournisseur d'intrusion au lieu de nginx
Ajout d'autres fournisseurs d'entrée
Accès aux ressources en dehors du cluster
Pour plus d'informations concernant le hardening de Kubernetes, nous vous invitons à consulter cette page : Hardening
Pour plus d'informations sur la solution de stockage persistant disponible pour cegedim.cloud de cegedim.cloud, veuillez suivre cette page : Stockage Persistant