Aller au contenu

Lab 01 : Déployer un Cluster OKS

Dans cet atelier, vous allez découvrir comment déployer un cluster Kubernetes en utilisant notre solution managée. Vous apprendrez à explorer et gérer ce cluster via la ligne de commande avec oks-cli. Enfin, vous apprendrez à déployer une application simple sur Kubernetes.

Dans cette partie, vous allez apprendre à :

  • Configurer l’outil oks-cli pour interagir et gérer votre cluster Kubernetes.
  • Configurer l’outil kubectl pour gérer le cluster.
  • Déployer une application simple sur le cluster Kubernetes.
  • Gérer vos profils OKS.
  • Création de l’Environnement Virtuel

Pour éviter des conflits avec les paquets système, il est recommandé d’utiliser un environnement virtuel Python pour installer oks-cli. Voici comment procéder :

Terminal window
python3 -m venv .venv

Cela créera un répertoire .venv dans lequel l’environnement virtuel sera stocké.

  • Activation de l’Environnement Virtuel

Ensuite, vous devez activer l’environnement virtuel en fonction de votre système d’exploitation :

  • Sur Linux ou macOS :
Terminal window
source .venv/bin/activate
  • Sur Windows (cmd.exe) :

    .venv\Scripts\activate.bat

  • Sur Windows (PowerShell) :

    .venv\Scripts\Activate.ps1

Une fois l’environnement activé, votre invite de commande changera pour afficher le nom de l’environnement (par exemple, .venv), ce qui signifie que vous travaillez désormais dans cet environnement virtuel.

Une fois l’environnement virtuel activé, vous pouvez installer l’outil oks-cli :

Terminal window
pip install https://docs.eu-west-2.oks.outscale.com/oks-cli/oks_cli-latest.zip
  • Vérification de l’Installation

Pour vérifier que l’installation de oks-cli a réussi, exécutez la commande suivante :

Terminal window
oks-cli version

Cela devrait afficher la version de l’outil oks-cli.

  • Voir toutes les options disponibles

Pour voir toutes les options disponibles, vous pouvez exécuter la commande suivante :

Terminal window
oks-cli fullhelp

Pour générer le fichier d’autocomplétion pour oks-cli, exécutez la suite de commandes suivante :

Terminal window
mkdir -p $HOME/.oks_cli/completions/
_OKS_CLI_COMPLETE=bash_source oks-cli > $HOME/.oks_cli/completions/oks-cli.bash
. $HOME/.oks_cli/completions/oks-cli.bash
echo '. $HOME/.oks_cli/completions/oks-cli.bash' >> $HOME/.bashrc

Cela va créer un fichier contenant les règles d’autocomplétion spécifiques à Bash.

Une fois l’environnement virtuel configuré et oks-cli installé, vous pouvez installer kubectl pour gérer votre cluster Kubernetes.

  • Prérequis système

Vous devez utiliser une version de kubectl qui diffère d’une version mineure de la version de votre cluster Kubernetes.

  • Installation de Kubectl sur Linux

Pour installer la dernière version de kubectl, utilisez cette commande :

Terminal window
curl -LO https://dl.k8s.io/release/$(curl -Ls https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl

Si vous souhaitez installer une version spécifique, remplacez $(curl -Ls https://dl.k8s.io/release/stable.txt) par le numéro de version souhaité.

Par exemple, pour installer la version 1.32.0 :

Terminal window
curl -LO https://dl.k8s.io/release/v1.32.0/bin/linux/amd64/kubectl
  • Rendre le binaire exécutable

Une fois le binaire téléchargé, vous devez le rendre exécutable :

Terminal window
chmod +x ./kubectl
  • Déplacer le binaire dans votre PATH

Déplacez le fichier exécutable dans un répertoire de votre PATH :

Terminal window
sudo mv ./kubectl /usr/local/bin/kubectl
  • Vérification de l’installation

Vérifiez que kubectl est installé correctement en exécutant la commande suivante :

Terminal window
kubectl version --client
  • Autres méthodes d’installation

Vous pouvez également consulter la documentation officielle de Kubernetes pour plus de méthodes d’installation sur différentes plateformes :

https://kubernetes.io/fr/docs/tasks/tools/install-kubectl/

Afin de rendre l’utilisation de kubectl plus fluide, vous pouvez configurer des alias et l’auto-complétion.

  • Configurer un alias pour kubectl

Ajoutez l’alias suivant à votre fichier .bashrc ou .zshrc pour raccourcir la commande kubectl :

Terminal window
alias k='kubectl'

Ensuite, rechargez votre fichier de configuration :

Terminal window
source ~/.bashrc # ou source ~/.zshrc pour Zsh

Désormais, vous pouvez utiliser k au lieu de kubectl.

  • Activer l’auto-complétion pour kubectl

Pour activer l’auto-complétion, exécutez les commandes suivantes :

  1. Installez le script d’auto-complétion :

    Terminal window
    $ kubectl completion bash > ~/.kubectl-completion
    $ source ~/.kubectl-completion
  2. Ajoutez cette ligne dans votre fichier .bashrc ou .zshrc :

    source <(kubectl completion bash)

Rechargez votre fichier de configuration :

Terminal window
source ~/.bashrc # ou source ~/.zshrc pour Zsh

L’auto-complétion est maintenant activée.

L’accès à vos clusters Kubernetes via oks-cli est organisé par profils. Un profil OKS correspond à un compte Outscale associé à des projets et des clusters, permettant une gestion simplifiée de vos ressources.

  • Pour lister tous les profils disponibles :
Terminal window
oks-cli profile list

Exemple de sortie :

Profile: default Account type: ak/sk Region: eu-west-2 Endpoint: https://api.eu-west-2.oks.outscale.com/api/v2/
Profile: my-second-profile Account type: username/password Region: eu-west-2 Endpoint:https://api.eu-west-2.oks.outscale.com/api/v2/
  • Pour ajouter un profil existant :
Terminal window
oks-cli profile add --profile-name "my-second-profile" --access-key <ACCESS_KEY> --secret-key <SECRET_KEY> --region eu-west-2

Vous pouvez également ajouter un profil avec une clé d’accès et une clé secrète :

Terminal window
oks-cli profile add --profile-name "my-third-profile" --access-key MY_ACCESS_KEY --secret-key MY_SECRET_KEY --region eu-west-2

Les noms de profils doivent être uniques. Si vous omettez le nom du profil lors de l’ajout, le profil par défaut sera mis à jour.

  • Pour mettre à jour un profil avec une nouvelle région et un nouvel endpoint :
Terminal window
oks-cli profile update --profile-name my-third-profile --region cloudgouv-eu-west-1
  • Pour lister vos projets disponibles :
Terminal window
oks-cli --profile my-profile project list
  • Pour créer un nouveau projet avec une plage CIDR spécifique :
Terminal window
oks-cli --profile my-profile project create --project-name my-project --description 'Lab project'
  • Pour obtenir les informations détaillées sur un projet :
Terminal window
oks-cli --profile my-profile project get --project-name my-project

Chaque cluster dans OKS doit être associé à un projet. Une fois votre projet créé, vous pouvez procéder à la création de votre cluster.

  • Lister les Clusters Pour afficher tous les clusters disponibles dans un projet :
Terminal window
oks-cli --profile my-profile cluster list --project-name my-project

Exemple de sortie :

idnamecreatedstatus
ee46b46c-c20a-4c56-a791-74e523ec17aemy-cluster3 minutes agoready
  • Créer un Cluster Pour créer un cluster Kubernetes avec des paramètres définis :
Terminal window
oks-cli --profile my-profile cluster create --project-name my-project --cluster-name my-cluster --admin "xx.xx.xx.xx/xx" --control-plane "cp.mono.master" --version 1.30
  • --cluster-name : Nom du cluster (unique dans le projet).
  • --project-name : Projet où le cluster sera créé.
  • --admin : IP(s) ou plages d’IP autorisées à gérer le cluster.
  • --control-plane : Taille du Control Plane (mono ou multi-AZ).
  • --version : Version de Kubernetes.

Pour avoir l’IP autorisée:

Terminal window
curl -4 ifconfig.me
  • Vérifier le Statut du Cluster Après avoir lancé la création du cluster, vérifiez son statut :
Terminal window
oks-cli --profile my-profile cluster list --project-name my-project

Exemple de progression :

idnamecreatedstatus
ee46b46c-c20a-4c56-a791-74e523ec17aemy-cluster10 seconds agodeploying
ee46b46c-c20a-4c56-a791-74e523ec17aemy-cluster3 minutes agoready
  • Obtenir les Détails du Cluster Pour afficher des informations détaillées sur un cluster spécifique :
Terminal window
oks-cli --profile my-profile cluster get --project-name my-project --cluster-name my-cluster

Cela inclut des détails tels que les IPs whitelistes, les plages CIDR pour les pods et les services, et le statut.

  • Accéder à un Cluster Une fois le cluster créé, vous pouvez récupérer son kubeconfig pour y accéder avec kubectl :
Terminal window
oks-cli --profile my-profile cluster kubeconfig --cluster-name my-cluster --project-name my-project > kubeconfig.yaml
export KUBECONFIG=./kubeconfig.yaml

Testez l’accès avec :

Terminal window
kubectl get ns

Une fois le cluster créé, vous pouvez ajouter un nodepool pour augmenter la capacité du cluster avec des nœuds supplémentaires.

Pour créer un nodepool, utilisez la commande suivante :

Terminal window
oks-cli cluster nodepool --cluster-name my-cluster --project-name my-project create --nodepool-name my-nodepool --type "tinav6.c4r6p2" --count 3
  • Voici les paramètres utilisés dans cette commande :
  • —project-name my-project : Le nom du projet auquel appartient le cluster.
  • —cluster-name my-cluster : Le nom du cluster où le nodepool sera ajouté.
  • —nodepool-name my-nodepool : Le nom du nodepool que vous souhaitez créer.
  • —type “tinav6.c4r6p2” : Le type des machines virtuelles pour les nœuds (exemple : tinav6.c4r6p2).
  • —count 3 : Le nombre de nœuds à ajouter au nodepool.
  • Une fois la commande exécutée, vous pouvez vérifier que le nodepool a bien été créé avec :
Terminal window
oks-cli cluster nodepool --project-name my-project --cluster-name my-cluster list

Cela vous donnera la liste des nodepools existants dans votre cluster.

Déploiement d’un NodePool via un manifeste Kubernetes

Section intitulée « Déploiement d’un NodePool via un manifeste Kubernetes »

En plus de la création de NodePools via la CLI OKS, il est également possible de gérer les NodePools de manière déclarative à l’aide de manifestes Kubernetes.

Créez un fichier nodepool.yaml avec le contenu suivant :

apiVersion: oks.dev/v1beta2
kind: NodePool
metadata:
name: nodepool-01
spec:
desiredNodes: 2
nodeType: tinav7.c2r4p2
zones:
- eu-west-2a
upgradeStrategy:
maxUnavailable: 1
maxSurge: 0
autoUpgradeEnabled: true
autoUpgradeMaintenance:
durationHours: 1
startHour: 12
weekDay: Tue
autoHealing: true

Appliquez la configuration avec la commande suivante :

Terminal window
kubectl apply -f nodepool.yaml

Vérifiez que le NodePool a bien été créé :

Terminal window
kubectl get nodepools
Terminal window
kubectl get nodes
kubectl describe node <node-name>

Cette commande fournit des informations détaillées sur le nœud Kubernetes spécifié. Cela inclut les labels, les taints, les capacités, les conditions actuelles, et les pods qui y sont déployés.

Tips : Pour éviter de rentrer le nom du projet à chaque commande vous pouvez utiliser cette commande

Terminal window
oks-cli project login <project-name>