# Guide d'installation

## Guide d’installation


:::tip
Puisque CEDILLE et un club axé sur l’open source, donc Linux, les méthodes d’installation sur Windows ne seront pas décrites ici.

:::

### kubectl


:::info
Si vous avez déjà ce programme d’installé, sautez à [l’installation de krew](https://cedille.etsmtl.club/doc/guide-dinstallation-zHxv7VkrY8#h-krew)

:::

Avant de pouvoir se lancer à l’attaque dans nos divers cluster Kubernetes, quelques outils sont nécessaires.

L’outil principal pour intéragir avec l’API Kubernetes est `kubectl`, un outil en ligne de commande qui permet d’effectuer plusieurs actions en envoyant des requêtes à l’API Kubernetes. 

#### Installation à l’aide d’un gestionnaire de programme

`kubectl` est généralement disponible sur les p*ackage managers* des distros populaires, mais certains nécessitent un ajout de clés ou de repository afin de l’installer. @[https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management](https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#install-using-native-package-management) 

#### Installation Manuelle

Dans le cas où `kubectl` ne serait pas disponible dans les répertoires du gestionnaire de programmes, ou que l’on voudrait avoir la version la plus récente, on peut suivre les étapes suivantes.


1. Le *binary* peut être téléchargé ainsi:

```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
```


2. On peut ensuite vérifier que l’intégrité du fichier en vérifiant le hash:

```bash
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"

# On valide que cette commande retourne `kubectl: OK` 
echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
```


3. Puis on installe le programme sur notre système:

```bash
# Installation globale
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

# Installation locale (si on ne veut pas rendre `kubectl` accesssible aux autres utilisateurs)
chmod +x kubectl
mkdir -p ~/.local/bin
mv ./kubectl ~/.local/bin/kubectl
# Puis on ajoute ~/.local/bin au $PATH dans notre fichier .bashrc, .zshrc ou autre
```

### krew

L'utilisation de krew est recommandée pour installer les plugins requis pour accéder aux différents cluster de la Plateforme CEDILLE.

Pour installer, suivre les [instructions d'installation de krew](https://krew.sigs.k8s.io/docs/user-guide/setup/install/).

@[https://krew.sigs.k8s.io/docs/user-guide/setup/install](https://krew.sigs.k8s.io/docs/user-guide/setup/install) 

### kubelogin

kubelogin est utilisé pour s'authentifier au cluster CEDILLE en utilisant du SSO avec OIDC. Nous utilisons Sidero Labs Omni comme fournisseur d'identité, nous permettant de donner des permissions granulaires par cluster. 

Pour installer kubelogin, exécuter la commande:

```bash
kubectl krew install oidc-login
```

### kubeconfig

La plateforme CEDILLE est gérée via Sidero Labs Omni. Notre instance de Omni [est accessible ici](https://cedille.na-west-1.omni.siderolabs.io/omni/).

Pour accéder à un cluster, il suffit de naviguer au cluster voulu (par exemple, le [cluster]()

[sandbox](https://cedille.na-west-1.omni.siderolabs.io/cluster/k8s-cedille-sandbox/overview)) et télécharger le fichier kubeconfig avec le bouton `Download kubeconfig`.

Pour tester rapidement l'accès, on peut exécuter les commandes suivantes:

```bash
export KUBECONFIG=~/Downloads/k8s-cedille-sandbox-kubeconfig.yaml #Modifier selon l'emplacement du kubeconfig téléchargé
kubectl get nodes
```

Une page d’authentification devrait s’ouvrir, puis une fois authentifié, la commande devrait retourner un output similaire à celui-ci: 

```console
NAME                                 STATUS   ROLES           AGE    VERSION
k8s-cedille-sandbox-controlplane-0   Ready    control-plane   207d   v1.30.0
k8s-cedille-sandbox-worker-0         Ready    <none>          207d   v1.30.0
k8s-cedille-sandbox-worker-1         Ready    <none>          207d   v1.30.0
k8s-cedille-sandbox-worker-2         Ready    <none>          207d   v1.30.0
```

Kubectl est prêt à être utilisé! Cependant, cette configuration du KUBECONFIG est temporaire. Il est donc recommandé d'utiliser la configuration recommandée. 

@[https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig) 


Il peut aussi être pertinent de configurer l'accès à plusieurs clusters.

@[https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters)