Aller au contenu
Introduction d’Anthos par Sundar Pichai - Cloud Next'19

Anthos a été introduit pour la première fois le 9 avril 2019 lors de la conférence annuelle Google Cloud Next par Sundar Pichai, le CEO de Google.

Anthos est une suite de produits qui permet d’exécuter les applications sur les infrastructures existantes on-premises ou sur le cloud public, de manière simple, flexible et sécurisée. La promesse d'Anthos : incarner le principe « écrire une fois et exécuter partout », et cela dans le Cloud avec bien évidemment Google Cloud, mais également sur d’autres cloud providers comme Amazon Web Services ou Microsoft Azure, mais aussi on-premises où il est possible de déployer Anthos sur du VMware ou même directement sur des serveurs physiques (bare metal).

Anthos peut être considéré comme une offre de modernisation d'applications hybrides et multi-cloud, basée principalement sur Kubernetes. Toutefois, Anthos s’appuie également sur d’autres technologies open source modernes qui augmentent sa puissance telle que Istio ou Knative.

Anthos est ainsi bâti sur les fondations de Google Kubernetes Engine (GKE), qui joue le rôle de centre de commande et de contrôle. Les utilisateurs peuvent ainsi gérer leur infrastructure distribuée sur le cloud ou dans un data center sur site.

D'un point de vue étymologique, le terme anthos vient du grec ancien ἄνθος, ánthos et signifie fleur. La raison pour laquelle ils ont choisi ce nom est que les fleurs poussent sur place (on-prem), mais qu'elles ont besoin de la pluie des nuages (Cloud) pour s'épanouir.


Composants clés d’Anthos

Anthos est constitué de plusieurs composants qui peuvent tous fonctionner ensemble pour aider les entreprises à créer et à gérer des applications hybrides et multi-cloud modernes dans tous les environnements (Dev, Staging et Prod).

Dans cette partie, on va vous présenter les composants clés qui font la force et le succès d’Anthos.

Kubernetes (K8S)

L'environnement d'exécution principal d’applications dans Anthos s'appuie sur Google Kubernetes Engine (GKE) et Anthos clusters (GKE On-Prem) pour gérer les installations Kubernetes dans les différents environnements où sont déployées les applications. Pour rappel, Kubernetes est un orchestrateur de conteneurs open source créé initialement chez Google en s’inspirant de Borg, l’orchestrateur interne de ses datacenters. K8S a été par la suite donné à la Cloud Native Computing Foundation (CNCF) qui s’en occupe depuis 2015. Techniquement parlant, Kubernetes est composé principalement de deux parties : le plan de contrôle (control plane) qui constitue le cerveau du cluster et les nœuds où seront généralement déployées les applications.

Google Kubernetes Engine (GKE)

Il s’agit de la version gérée par Google de Kubernetes qui permet de déployer en production des applications sécurisées et hautement scalables en s’appuyant sur l’infrastructure de Google Cloud. Avec GKE, Google Cloud héberge le plan de contrôle, et c’est uniquement le serveur d'API Kubernetes qui est accessible aux clients pour évidemment interagir avec le cluster. Quant aux nœuds, c’est sans surprise qu’ils sont dans le projet de l'utilisateur à l’aide d’instances Google Compute Engine (GCE), le service de provisionnement (provisioning) de machines virtuelles de Google Cloud.

Anthos clusters (GKE On-Prem)

Un composant clé d'Anthos est la version on-prem de GKE, qui permet aux clients de tirer parti de Kubernetes et de la technologie cloud dans leur propre centre de données. Ils bénéficient d'une expérience GKE avec des installations rapides, gérées et simples, ainsi que des mises à jour validées par Google. C’est tout simplement un concentré du savoir-faire de Google en matière d’orchestration mis à disposition des clients pour être utilisé à l’extérieur de Google Cloud. C’est aussi un moyen efficace pour garantir la compatibilité des clusters Anthos avec le reste de la suite technique.

Anthos Config Management (ACM)

Anthos Config Management est un gestionnaire de configuration multi-cluster qui permet d'avoir des règles cohérentes sur l'ensemble des clusters, qu'ils soient on-prem ou dans le Cloud. Il s’appuie sur un référentiel Central Git pour gérer les politiques de contrôle d'accès, les quotas de ressources et les namespaces.

C'est déclaratif et continu : une fois que vous déclarez le nouvel état souhaité, l’outil vérifie en permanence les changements qui vont à l'encontre de l'état désiré.

ACM combine trois composants : Policy Controller, Config Sync et Config Controller. Ensemble, ils ont la responsabilité de protéger et de configurer en continu vos ressources Google Cloud et Kubernetes, comme illustré dans le schéma suivant :

Policy Controller

Anthos Config Management Policy Controller offre une intégration entre Open Policy Agent (OPA) et Kubernetes via un contrôleur personnalisé. OPA est une solution open source qui permet de mettre en place des contrôles basés sur des règles pour les environnements cloud natifs. Dans le contexte Kubernetes, OPA transforme les politiques Rego en ressources Kubernetes, leur permettant d'être personnalisées et déployées à l'aide de flux de travail standard.

Les politiques permettent à l'application de mettre en place des règles entièrement programmables pour les clusters qui empêchent toute modification de la configuration de l'API Kubernetes, de violer les contrôles de sécurité, opérationnels ou de conformité.

Config Sync

Config Sync est un outil open source qui permet une gestion centralisée des configurations et des politiques de sécurité qui peuvent être déployées sur plusieurs clusters pouvant s'étendre sur des environnements hybrides et multicloud. Ce processus simplifie et automatise la configuration et la gestion des politiques de sécurité à grande échelle.

Config Sync est tout simplement une boucle de réconciliation entre les configurations déclarées (appelées configs) dans un repo Git et l’état du ou des clusters. Il est considéré comme un outil de Configuration-as-Code puisqu’il permet d’adopter une approche GitOps quand il s’agit d’administrer une flotte de clusters.

Istio

Istio est une solution de maillage (mesh) de services open source qui réduit la complexité des déploiements et la gestion des interactions de service entre les conteneurs et les machines virtuelles. Il permet de connecter Google Cloud, d’autres fournisseurs Cloud, des bases de données et d'autres composants dans un maillage de services unique, prenant en charge l'équilibrage de charge (load balancing), la surveillance d'un grand nombre de clusters et la gestion du trafic.

Au niveau de l'utilisateur, il offre des fonctionnalités très intéressantes telles que les circuit-breakers, timeouts, retries, traffic splitting ou encore les health checks actifs et passifs…

Istio vous permet de créer facilement des clusters et peut prendre en charge les opérations sur des clusters déjà déployés, offrant une meilleure visibilité sur le comportement des services, les performances et l’état de santé des applications.

Anthos Service Mesh (ASM)

Bâti sur les API d'Istio, Anthos Service Mesh permet de créer facilement un réseau des services déployés (maillage de services) et offre une télémétrie prête à l'emploi pour la gestion des services. Il prend également en charge des fonctionnalités avancées telles que l'équilibrage de charge de service à service, l'authentification, la collecte des métriques de niveau de service (requêtes par seconde, taux d'erreur, latence, etc.) et les alertes par rapport aux objectifs de niveau de service (SLO).

Anthos Service Mesh peut injecter de manière transparente un proxy side-car léger dans les conteneurs qui sera responsable d’appliquer des politiques uniformes pour toutes les communications entre les services sans nécessiter de modifications de code ou d'application.

Avec Anthos Service Mesh, les développeurs n'ont pas à coder en dur les configurations pour la gestion du trafic, les quotas et l'authentification dans l'application. Ils peuvent continuer à développer de nouvelles fonctionnalités métiers sans avoir à se soucier de la sécurité et des opérations.

Pour pouvoir tester ASM, nous avons créé un cluster GKE programmez-gke-cluster. L’option Anthos Service Mesh a été activée au moment de la création et la istio-ingressgateway a été installée (https://cloud.google.com/service-mesh/docs/gateways) qui est, en version courte, un service de type LoadBalancer et qui permet d’exposer les services à l’extérieur du maillage de services (mesh). Par la suite, la fameuse application de démo Bookinfo (https://istio.io/latest/docs/examples/bookinfo/) a été déployée. Enfin, un stress test à été réalisé à l’aide de l’outil siege pour envoyer du trafic vers l’application.

Le mesh peut être ainsi visualisé à travers la console Google Cloud avec quelques métriques sur le trafic reçu par l’application.

Migrate for Anthos

Migrate pour Anthos donne la possibilité aux applications existantes, qui tournent sur des machines virtuelles Linux ou Windows, de bénéficier de toutes les possibilités offertes par la conteneurisation. En effet, ce service permet, comme son nom l’indique, de moderniser facilement et rapidement ces applications en migrant les VMs à partir de VMware, AWS, Azure ou même GCE vers des conteneurs gérés par Anthos. Cette démarche est souvent la meilleure option pour accélérer les migrations et l’intégration dans des infrastructures modernes.

Google Cloud Marketplace


Google Cloud Marketplace pour Anthos vous permet de gérer de manière centralisée des logiciels prêts à être déployés en production en libre-service, et cela, en quelques clics. Il s’agit d’applications Kubernetes pré-intégrées compatibles avec Anthos et dont les mises à jour sont déjà gérées. Enfin, les utilisateurs paient une facture unique qui englobe les services Google et éventuellement les licences tierces des éditeurs de logiciels.

Cloud Run for Anthos

Cloud Run est un produit d’exécution d’application serverless, entièrement géré par Google Cloud et compatible avec Knative qui est une solution open source pour gérer les environnements serverless sur Kubernetes. Cloud Run for Anthos permet une utilisation du serverless sur votre propre cluster, partout où Anthos peut s'exécuter.

Cela permet aux organisations de tirer parti de leur investissement existant dans Kubernetes, tout en adoptant les pratiques de développement Serverless. Ils bénéficieront ainsi de tous les avantages de la mise à l'échelle automatique, y compris jusqu'à zéro instance de conteneur, d'URL automatiques, de la répartition du trafic entre plusieurs versions, etc.

Cloud Run fournit des abstractions serverless conviviales pour les développeurs leurs permettant d'en faire plus en moins de temps et par conséquent gagner en productivité.

Et, comme Cloud Run est profondément intégré au reste d'Anthos, vous pouvez tirer parti d'Anthos Service Mesh et d'Anthos Configuration Management en toute transparence. Vous bénéficiez également d'une visibilité opérationnelle, clé en main pour tous vos services.

Cloud Run pour Anthos vous permet même d'exploiter du matériel avancé, tel que des types de machines personnalisés, des GPU, des TPU et des capacités de mémoire élevées.

En bref, Cloud Run pour Anthos vous permet de combiner le meilleur du Serverless et de Kubernetes.


Options de déploiement d’Anthos

Il existe plusieurs options pour le déploiement d’Anthos qui se répartissent globalement en deux familles : le Cloud et on-premises.

Dans le cadre de cet article, on va plutôt se concentrer sur les architectures multi-cloud.

À savoir les Anthos clusters sur AWS ou AZURE et les Attached Clusters avec EKS ou AKS qui sont respectivement les deux produits gérés autour de Kubernetes d’AWS et d’AZURE.

Anthos clusters on AWS

Anthos clusters on AWS vous permet de gérer les clusters GKE exécutés sur l'infrastructure AWS via l'API Anthos Multi-Cloud. Associés à Connect, les clusters Anthos sur AWS vous permettent de gérer les clusters GKE sur Google Cloud et AWS à partir de la console Google Cloud.

Lorsque vous créez un cluster avec des clusters Anthos sur AWS, Google crée les ressources AWS dont vous avez besoin et affiche un cluster en votre nom. Vous pouvez ensuite déployer vos applications avec les outils de ligne de commande gcloud et kubectl.

La méthode la plus simple, mais aussi qui est recommandée pour l’installation d’un cluster Anthos est d’utiliser Terraform l’outil d’infrastructure-as-Code (IaC). Pour cela, Google Cloud met à disposition un repo Github (https://github.com/GoogleCloudPlatform/anthos-samples) qui contient les scripts nécessaires (sous le répertoire /anthos-multi-cloud/AWS/) pour le déploiement et la configuration des ressources AWS telles que VPC, subnets, internet gateway, iam roles, route tables et bien d’autres. Il faudra aussi installer et configurer, si ce n’est déjà fait, les outils de ligne de commande gcloud et aws. Il faudra aussi  personnaliser le script en renseignant les variables dans le fichier terraform.tfvars telles que l’id du projet Google Cloud, les types d’instances ou encore la localisation.

Une fois les scripts terraform exécutés, il ne vous reste plus qu’à récupérer les informations de connexion pour la configuration du contexte pour kubectl qui est l’outil ligne de commande de Kubernetes qu’on utilisera par la suite pour interagir avec notre cluster Anthos sur AWS. Il est à noter qu’il faut rajouter l’option “--location europe-west1” à la commande proposée par le script.

Pour vérifier que le contexte a été bien récupéré, il suffit d’exécuter la commande kubectl get nodes pour afficher les nœuds du cluster.

Techniquement parlant, cinq instances EC2 ont été déployées : 3 control plane chacun dans une zone de disponibilité et un node pool avec 2 VMs.

On peut également observer le résultat à travers la console Google Cloud où on voit clairement la différence de type entre un cluster GKE créé précédemment et notre cluster Anthos dans AWS créé via Terraform.

Anthos clusters on Azure

Les mêmes étapes que pour Anthos clusters on AWS peuvent être déroulées en exécutant les scripts nécessaires (sous le répertoire /anthos-multi-cloud/AZURE/) et en personnalisant le fichier terraform.tfvars

Et voilà, on a trois clusters Anthos créés dans les trois fournisseurs Cloud majeurs !

Anthos attached clusters

Attacher des clusters vous permet de voir vos clusters Kubernetes existants dans la console Google Cloud côte à côte avec vos clusters Anthos et d’activer au sein de ceux-ci plusieurs fonctionnalités Anthos, comme la gestion centralisée des configurations avec Anthos Config Management ou la gestion d’architectures de type microservices avec Anthos Service Mesh.

Voyons maintenant comment rattacher un cluster EKS nouvellement créé à Anthos et ainsi utiliser GCP comme interface unique de gestion et de surveillance du cluster. Il faut imaginer que les étapes pour rattacher un cluster AKS dans Azure sont sensiblement les mêmes à quelques détails près.

D’abord,  il faudra provisionner un cluster EKS qui est le service géré de Kubernetes sur AWS. Pour cela, vous pouvez vous appuyer sur le tutoriel officiel de Terraform pour la création du cluster (https://learn.hashicorp.com/tutorials/terraform/eks).

Une fois le cluster EKS créé et prêt à l’utilisation, il faudra l’enregistrer dans Google Cloud. Commençons d’abord par exporter les variables d’environnement qui serviront pour l’enregistrement.

Par la suite, nous utiliserons la CLI gcloud container hub membership pour effectuer l’enregistrement. Cela a pour effet, l’installation de l’agent Connect dans le cluster pour gérer la connexion à sa flotte.

Enfin, nous avons besoin de nous connecter au cluster EKS attaché à partir de la console.

Cette opération commence par la création d’un compte de service Kubernetes avec le rôle d’administrateur du cluster (attention c’est bien différent d’un compte de service Google Cloud).

On utilisera ce compte de service pour générer le token qu’on utilisera pour se connecter au cluster EKS à partir de la console Google Cloud.

En plus du cluster GKE et des clusters Anthos dans AWS et AZURE, créés via Terraform, on peut maintenant voir le cluster EKS attaché.


Bac à sable Anthos pour les développeurs

Envie de découvrir comment vous pouvez commencer à développer vos applications sur  Anthos ? Sachez que Google met à disposition un bac à sable Anthos pour les développeurs, qui peut être utilisé gratuitement. Il suffit pour en disposer de posséder un compte Google.

Indépendamment de votre choix de plateforme d’exécution, le bac à sable Anthos vous permet d’effectuer certaines tâches quotidiennes de développement telles que :

  • Le déploiement d’applications sur un cluster Kubernetes local avec minikube ;
  • L’exécution des tests d’une application en local avec l'outil de création local Cloud Build (cloud-build-local) ;
  • Le déploiement d'applications sur l'émulateur Cloud Run local.

Conclusion

Comme vous l’avez bien compris, Anthos fournit une plateforme unifiée pour la gestion des clusters Kubernetes sur différents Clouds et on-prem.

Ces clusters peuvent être exécutés à l'intérieur de machines virtuelles ou sur du bare metal.

Anthos est un produit 100 % logiciel qui étend les services Google Cloud et les pratiques d'ingénierie à vos environnements afin que vous puissiez moderniser vos applications plus rapidement et établir une cohérence opérationnelle entre elles. Anthos gère non seulement les clusters Anthos GKE on-prem et dans d’autres Cloud providers, mais également tous les clusters Kubernetes conformes à la norme CNCF, tels que AKS, EKS, OpenShift, etc.

Anthos est un excellent outil de gestion multi-cluster pour gérer, standardiser et sécuriser vos clusters dans plusieurs environnements Cloud et fournisseurs de distributions Kubernetes.

À ce stade, Anthos n’a plus de secrets pour vous. Il ne vous reste plus qu’à le tester vous- même sur Google Cloud, on-prem ou sur d’autres fournisseurs de Cloud.


Dernier