-
Chaque membre de l’équipe doit demander un coupon pour bénéficier d’un crédit de 50 USD en remplissant le formulaire envoyé dans le canal General sur Discord.
L’équipe disposera ainsi d’un crédit total de 150 USD. -
Vérifiez votre compte en cliquant sur le lien de confirmation envoyé dans le deuxième courriel.
Vous recevrez ensuite un autre courriel pour appliquer le coupon.
Vous pouvez utiliser votre adresse Gmail pour en bénéficier. -
Pour vérifier si les crédits ont bien été appliqués, rendez-vous sur la page suivante : Lien.
Dans cette étape, nous allons configurer un cluster Kubernetes avec les ressources minimales nécessaires pour déployer nos applications.
Tout d’abord, créez un projet GCP qui contiendra toutes les ressources liées au laboratoire.
Pour ce faire, allez sur la page principale.
Cliquez sur le bouton situé à gauche de la barre de recherche (comme illustré ci-dessous), puis sélectionnez New project.
Choisissez un nom pour le projet (ex. : log680-a2025-project) et cliquez sur Create.
Pour pouvoir créer un cluster depuis la ligne de commande, installez gcloud en suivant la documentation officielle.
Vérifiez ensuite que l’installation a réussi :
gcloud --versionAuthentifiez-vous à votre compte GCP à l’aide de la commande suivante :
gcloud auth loginUne page web s’ouvrira pour vous permettre de vous connecter avec le compte Gmail associé à votre projet GCP.
Une fois connecté, vous devriez voir le message suivant dans le terminal :
You are now logged in as [votre_compte_gmail].
Vérifiez que le projet sélectionné est bien celui que vous venez de créer.
Utilisez l’ID du projet (et non son nom).
Si nécessaire, sélectionnez-le avec la commande suivante :
gcloud config set project VOTRE_PROJECT_IDInstallez les outils suivants :
- Helm → Documentation
- kubectl → Documentation
Exécutez le script suivant :
sh ./create_k8s.sh [PROJECT] [REGION] [CLUSTER_NAME]Paramètres :
PROJECT: ID du projet (obligatoire)REGION: région où le cluster sera créé (optionnel, défaut :us-central1)CLUSTER_NAME: nom du cluster (optionnel, défaut :log680-gcp-cluster)
Pour vérifier l’installation du cluster et récupérer l’adresse IP publique de votre ingress :
kubectl get svc -n ingress-nginxCette adresse IP servira de point d’accès aux applications hébergées dans le cluster.
Notez qu’il peut falloir quelques minutes avant qu’elle s’affiche.
Votre fichier kubeconfig se trouve par défaut :
- sous Linux/MacOS :
~/.kube/config - sous Windows :
C:\Users\VotreNom\.kube\config
Créez le namespace de votre équipe en suivant les instructions du dépôt suivant : 👉 k8s-config-generator.
Vous devez utiliser un fichier nommé kubeconfig.b64 (peut etre trouvé dans k8s-config-generator/out/grp{n}eq{n}), qui vous permettra de gérer les ressources de votre namespace dans le cluster Kubernetes. Vous pouvez le stocker dans un secret GitHub Actions.
Créez et configurez une instance PostgreSQL sur Cloud SQL à l’aide du script suivant :
sh ./create_cloudsql.sh [PROJECT] [REGION] [INSTANCE_NAME] [USER_DB] [PASSWORD]Paramètres :
PROJECT: ID du projet (obligatoire)REGION: région de création (optionnel, défaut :us-central1)INSTANCE_NAME: nom de l’instance PostgreSQL (optionnel, défaut :my-postgres)USER_DB: nom d’utilisateur de la base de données (optionnel, défaut :log680user)PASSWORD: mot de passe de l’utilisateur (optionnel, défaut :log680a2025)
Créez la base de données, le nom d’utilisateur et le mot de passe nécessaires pour vos applications (metrics-api et MobilitySoft) en suivant les instructions du dépôt : 👉 postgresql-db-generator
Sauvegardez les identifiants de connexion à votre base de données dans un secret Kubernetes :
kubectl create secret generic db-credentials \
--from-literal=POSTGRES_HOST=[Adresse privée de votre instance PostgreSQL] \
--from-literal=POSTGRES_DB=[Nom de votre base de données] \
--from-literal=POSTGRES_USER=[Nom d’utilisateur] \
--from-literal=POSTGRES_PASSWORD=[Mot de passe] \
-n [Nom de votre namespace Kubernetes] \
--dry-run=client -o yaml | kubectl apply -f -Le NAMESPACE peut être retrouvé à l’emplacement suivant : k8s-config-generator/out/VotreGroupe/namespace.yaml.
-
Gestion du trafic externe : Pour que vos applications puissent traiter le trafic provenant de l’extérieur, leurs
root_pathdoivent commencer par le chemin spécifié dans le fichier Ingress. Par exemple, si l’Ingress de votre applicationmetrics-apiest exposé via/team1/metrics-api, alors leroot_pathde votre application doit commencer par ce segment :FastAPI(root_path="/team1/metrics-api")
-
Connexion à la base de données : La connexion à la base de données se fait à l’aide d’une adresse IP privée, et non publique, puisque toutes les ressources sont hébergées dans le même réseau.
-
Utilisation des crédits Google Cloud : Nous vous encourageons à utiliser judicieusement les crédits que Google vous a accordés. Pour en tirer le meilleur parti, pensez à supprimer le cluster Kubernetes et d'arrêter l’instance Cloud SQL lorsque vous n’en avez pas besoin, afin de réduire vos coûts. En pratique, il est souvent plus simple de supprimer le cluster Kubernetes (en utilisant
delete_k8s.sh) et d’arrêter l’instance Cloud SQL (via l'interface graphique GCP), tout en conservant vos données dans la base de données, que vous pourrez réutiliser lors de la prochaine restauration de l’instance. Il faut éviter de supprimer l’instance Cloud SQL en utilisant le scriptdelete_cloudsql.sh, car cela entraînerait la suppression définitive de vos données. N’hésitez pas à stocker les informations de connexion de votre base de données dans un secret après la recréation du cluster Kubernetes.
Vous disposez désormais d’un cluster Kubernetes fonctionnel et d’une instance Cloud SQL PostgreSQL prête à être utilisée par vos applications.
