Howard : Infrastructure Cloud de l'Agence canadienne d'inspection des aliments (ACIA) ACIA-CFIA ai-Lab
Le projet Howard est nommé d'après Luke Howard, FRS, un chimiste manufacturier et météorologue amateur britannique notable connu sous le nom de "Le Parrain des Nuages". Son travail a jeté les bases de concepts en météorologie, notamment un système de nomenclature pour les nuages introduit en 1802. Inspiré par son innovation et son héritage dans la catégorisation des éléments, notre projet vise à gérer et orchestrer efficacement l'infrastructure basée sur le cloud pour le laboratoire d'intelligence artificielle (ai-lab) de l'Agence canadienne d'inspection des aliments (ACIA).
Howard est essentiellement la colonne vertébrale qui soutient l'environnement Kubernetes du laboratoire d'intelligence artificielle de l'ACIA, où des applications clés telles que Nachet, Finesse et Louis sont déployées et gérées de manière dynamique. Cette infrastructure met l'accent sur la robustesse, la sécurité et l'efficacité pour traiter la charge de travail critique impliquée dans l'inspection et la sécurité alimentaire.
L'infrastructure Howard s'appuie sur une suite complète d'outils conçus pour fournir un environnement résilient, sécurisé et évolutif :
- Initialement hébergée sur Google Cloud, l'infrastructure a été transférée sur Azure.
Kubernetes : Orchestrer le déploiement, la mise à l'échelle et la gestion des conteneurs.
ArgoCD : Utilisé pour la livraison continue, gestion des ressources Kubernetes de manière déclarative via des dépôts Git.
- Grafana : Logiciel de visualisation et d'analytique.
- Kube-Prometheus-Stack : Surveillance complète des clusters Kubernetes avec Prometheus.
- Grafana Tempo Traçage distribué de nos applications.
- Grafana Loki : Système de journalisation et d'agrégation.
- Grafana Alloy : Permet la collecte et la transmission de données de télémétrie depuis nos applications.
- Falco : Outil de sécurité open-source en temps réel.
- Trivy : Scanner de vulnérabilités pour les conteneurs.
- Oneuptime : Outil de surveillance pour des informations sur la performance et la sécurité en temps réel.
- Vouch-Proxy : Proxy d'authentification.
- Nginx Ingress : Contrôleur d'entrée pour Kubernetes utilisant NGINX comme proxy inverse et équilibreuse de charge.
- Istio : Maillage de services qui fournit une interface sécurisée pour la communication entre services.
HashiCorp Vault : Sécurise, stocke et contrôle strictement l'accès aux jetons, mots de passe, certificats et autres secrets.
- Terraform : Outil open-source d'infrastructure en tant que code permettant de gérer le cycle de vie des services chez les fournisseurs cloud de manière déclarative.
- Ansible : Outil d'automatisation pour la configuration et la gestion des ordinateurs.
La configuration actuelle héberge un cluster Kubernetes sur Azure (AKS). Nous disposons d'un pipeline Azure DevOps apply-terraform.yml qui applique les ressources Terraform créées sur notre abonnement Azure. L'état est ensuite sauvegardé dans un stockage blob d'Azure.
En supposant que vous ayez installé Azure CLI et le plugin kubelogin, voici comment récupérer localement la configuration kube :
az login
az account set --subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
az aks get-credentials --resource-group resource-group-name --name aks-name --overwrite-existing
kubelogin convert-kubeconfig -l azurecli