# K8s - Didacticiels

## Débuter

### Se connecter à l'UI Rancher

**cegedim.cloud** utilise [Rancher](https://rancher.com/docs/rancher/v2.x/en/) comme plateforme de gestion de [Kubernetes](https://kubernetes.io/fr/docs/home/).

Rancher supporte la même authentification SSO que ITCare.

#### Instances Rancher <a href="#kuberneteshowtos-instancesrancher" id="kuberneteshowtos-instancesrancher"></a>

Rancher est accessible via différentes URL selon la région et l'environnement de votre cluster :

| Région / Environnement                         | URL Rancher                                  | Exigences d'Accès                                        |
| ---------------------------------------------- | -------------------------------------------- | -------------------------------------------------------- |
| **ET (Toulouse-Labège) - Production**          | <https://rancher-et.cegedim.cloud>           | Accès réseau serveur uniquement (ex : depuis un bastion) |
| **ET (Toulouse-Labège) - Non-Production**      | <https://rancher-et-qa.cegedim.cloud>        | Accès réseau standard                                    |
| **EB (Boulogne-Billancourt) - Production**     | <https://rancher-eb.cegedim.cloud>           | Accès réseau serveur uniquement (ex : depuis un bastion) |
| **EB (Boulogne-Billancourt) - Non-Production** | <https://rancher-eb-qa.cegedim.cloud>        | Accès réseau standard                                    |
| **EM (Monaco Cloud)**                          | Géré par les mêmes Ranchers que la région EB | Même accès que EB                                        |

{% hint style="warning" %}
**rancher-et.cegedim.cloud** et **rancher-eb.cegedim.cloud** sont uniquement accessibles depuis le réseau serveur. Vous devez vous connecter via un hôte bastion pour accéder à ces instances Rancher.
{% endhint %}

\
Dans ITCare, vous pouvez trouver l'URL de votre cluster dans la page de détail de celui-ci :

<figure><img src="/files/SnTa26NYNPP1IlOZaQcZ" alt=""><figcaption></figcaption></figure>

#### Se connecter à Rancher <a href="#kuberneteshowtos-seconnecterarancher" id="kuberneteshowtos-seconnecterarancher"></a>

Rancher demandera une authentification lors de la première connexion : cliquez simplement sur "Login with OIDC".

<figure><img src="/files/JyJ0CzHoRbgUNVyGQdJN" alt=""><figcaption></figcaption></figure>

Vous serez ensuite redirigé vers la mire de connexion standard :

<figure><img src="/files/CnJZOMidznR4URXOaPE7" alt=""><figcaption></figcaption></figure>

Une fois connecté, vous devriez avoir un écran listant tous les clusters auxquels vous avez accès :

<figure><img src="/files/XwzSLohLXPVXfIObOjSJ" alt=""><figcaption></figcaption></figure>

Si l'interface se bloque sur "Loading" après l'authentification, veuillez essayer :

* Ouvrir l'URL Rancher dans une fenêtre de navigation privée/incognito
* Ou vous connecter directement à :
  * <https://rancher-et.cegedim.cloud/dashboard/home>
  * <https://rancher-et-qa.cegedim.cloud/dashboard/home>
  * <https://rancher-eb.cegedim.cloud/dashboard/home>
  * <https://rancher-eb-qa.cegedim.cloud/dashboard/home>

Si lors de la première connexion vous ne voyez pas votre cluster dans la liste des clusters, vous pouvez vous déconnecter et vous reconnecter.

<figure><img src="/files/oclA8tf17gPEZx6ILmoN" alt=""><figcaption></figcaption></figure>

#### Gérer vos préférences <a href="#kuberneteshowtos-gerervospreferences" id="kuberneteshowtos-gerervospreferences"></a>

Vous pouvez gérer vos préférences d'interface utilisateur (thème sombre, nombre de lignes par tableau...) en configurant vos préférences utilisateur. Veuillez vous référer ici à la documentation complète ci-dessous.

{% embed url="<https://rancher.com/docs/rancher/v2.x/en/user-settings/preferences/>" %}

### Configurer kubectl

Afin de se connecter au cluster en utilisant la CLI, vous avez deux options :

* par `kubectl` normal à distance
* en utilisant rancher online `kubectl`.

Les deux sont disponibles en accédant à la page "cluster" dans Rancher.\
Il y a deux façons de le faire :

<figure><img src="/files/HJhzexxUCD6vDve2LymZ" alt=""><figcaption><p>Cliquez sur le nom du cluster dans la liste des clusters</p></figcaption></figure>

<figure><img src="/files/OLyWZbyDKn2RXOdmFaE1" alt=""><figcaption><p>Cliquez sur le nom du cluster dans le menu supérieur gauche</p></figcaption></figure>

#### En utilisant le fichier de configuration kubectl <a href="#kuberneteshowtos-enutilisantlefichierdeconfigurationkubectl" id="kuberneteshowtos-enutilisantlefichierdeconfigurationkubectl"></a>

Une fois sur la page d'accueil du cluster, vous pouvez télécharger le "Kubeconfig File" :

<figure><img src="/files/xJgurQArULNNYQVpOZy1" alt=""><figcaption></figcaption></figure>

Ou bien juste copier le contenu du "Kubeconfig File" :

<figure><img src="/files/YtG2bY7oaSChzcMrMNns" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Si vous ne disposez pas de `kubectl`, nous vous conseillons vivement d'installer `kubectl` sur votre poste d'administration en suivant [ce document](https://kubernetes.io/docs/tasks/tools/install-kubectl/).
{% endhint %}

Cette configuration peut être mélangée avec d'autres configurations kubectl.

L'authentification peut être partagée avec tout cluster géré par la même instance de rancher.

#### Utilisation du cli web <a href="#kuberneteshowtos-utilisationducliweb" id="kuberneteshowtos-utilisationducliweb"></a>

Une fois sur la page d'accueil du cluster, vous pouvez utiliser le CLI web en cliquant sur l'icône ci-dessous :

<figure><img src="/files/7fM1oH3BI3nlGjrl9mLh" alt=""><figcaption></figcaption></figure>

Cela devrait lancer un shell web comme celui-ci :

<figure><img src="/files/WL3UD9iKfohHv8KdMTk3" alt=""><figcaption></figcaption></figure>

{% hint style="info" %}
Ce shell est temporaire, tout changement effectué à l'intérieur sera supprimé une fois la fenêtre fermée. Cette session peut être déconnectée si aucune entrée/sortie n'est observée.
{% endhint %}

### Obtenir un Jeton API et Token

L'interface de gestion des jetons est accessible juste en dessous de l'avatar de l'utilisateur :

<figure><img src="/files/Ar5xwbpCN94bVveV1n2P" alt=""><figcaption></figcaption></figure>

#### Portée des jetons <a href="#kuberneteshowtos-porteedesjetons" id="kuberneteshowtos-porteedesjetons"></a>

Il existe deux portées :

* no-scope : portée globale : utilisé pour interagir avec l'API globale de Rancher
* cluster-scoped : jeton dédié à l'accès à un cluster spécifique

{% hint style="info" %}
Un jeton à portée de cluster est recommandé pour configurer les pipelines CI/CD.\
Cela signifie que vous avez besoin d'un jeton par cluster dans vos pipelines CI/CD.
{% endhint %}

#### Cycle de vie des jetons <a href="#kuberneteshowtos-cycledeviedesjetons" id="kuberneteshowtos-cycledeviedesjetons"></a>

Les jetons peuvent avoir des cycles de vie différents :

* Une durée de vie illimitée, il suivra le cycle de vie du compte qui lui est rattaché
* Une durée limitée

## Gestion des nœuds

### Redimensionner un cluster

Vous pouvez utiliser ITCare pour ajouter ou supprimer des nœuds à votre cluster.

## Gérer les Namespaces

### Comprendre les projets - Un concept de Rancher

Rancher gère les espaces de noms via project, qui est un concept n'existant spécifiquement que dans les clusters Kubernetes gérés par Rancher.

Le projet n'est pas une ressource native de Kubernetes. Par défaut, un cluster Kubernetes est provisionné avec 2 projets :

* System : contenant les espaces de noms des composants principaux comme : kube-system, etc.
* Default : contenant l'espace de noms "par défaut".

Les utilisateurs sont libres de créer d'autres projets si nécessaire. En se basant sur le niveau du projet, Rancher offre une automatisation intégrée comme : l'octroi de droits d'accès, l'isolation du réseau, etc.

Les utilisateurs sont fortement encouragés à classer les espaces de noms dans un projet.

### Comment créer correctement un espace de noms

* Passer à la vue projet

<figure><img src="/files/rIrjcT6mbjKYv1Dziv0y" alt=""><figcaption></figcaption></figure>

* Créer un nouvel espace de noms à partir de la vue du projet

<figure><img src="/files/w9TjlBx1PKw5EQzy9qnr" alt=""><figcaption></figcaption></figure>

* Insérez un nom unique et remplissez les autres champs si nécessaire, puis cliquez sur "Créer"

{% hint style="info" %}
Si vous créez un espace de noms avec le CLI de kubernetes, par exemple kubectl, l'espace de noms créé sera déplacé dans le projet parent de l'espace de noms "default" (qui est, par défaut, le projet nommé Default).
{% endhint %}

## Gestion des Droits <a href="#kuberneteshowtos-gestiondesdroits" id="kuberneteshowtos-gestiondesdroits"></a>

**cegedim.cloud** recommande et supporte officiellement la gestion des droits d'accès via les groupes AD.

Seuls les groupes AD commençant par G\_EMEA\_\* et G\_K8\_\* sont connus par Rancher.

Par défaut, lors de la création d'un cluster :

* Le rôle d'utilisateur standard est donné au groupe **G\_K8\_**\<NOM\_DU\_CLUSTER>**\_USERS** qui contient les power users du Cloud associé.
* Le rôle d'administrateur est attribué au groupe **G\_K8\_**\<NOM\_DU\_CLUSTER>**\_ADMINS** qui est vide par défaut et peut être complété par des utilisateurs compétents et certifiés via un ticket ITCare vers l'équipe de support AD.

Par exemple, l'utilisateur **<user1@cegedim.com>** a besoin d'accès standard au cluster **test-preprod**, il doit faire une demande pour l'ajouter dans le groupe AD nommé **G\_K8\_TEST\_PREPROD\_USERS**.

Lorsque les utilisateurs créent un nouveau projet, en tant que propriétaire par défaut, ils sont libres de lier n'importe quel rôle à n'importe quel groupe AD dans le cadre de ce projet.

{% embed url="<https://ranchermanager.docs.rancher.com/how-to-guides/new-user-guides/authentication-permissions-and-global-configuration/manage-role-based-access-control-rbac/cluster-and-project-roles>" %}

Si les rôles prédéfinis de Rancher ne peuvent pas répondre à vos besoins, veuillez contacter les administrateurs de votre cluster pour configurer un rolebinding personnalisé ou un clusterrolebinding.

{% embed url="<https://kubernetes.io/docs/reference/access-authn-authz/rbac/>" %}

### Gérer les Droits

**Gestion des Droits au Niveau du Projet**

{% hint style="warning" %}
**cegedim.cloud** supporte uniquement la liaison de droits sur les **groupes**, pas les utilisateurs individuels. Cela assure une gestion d'accès cohérente et simplifie l'administration.
{% endhint %}

Pour gérer les droits sur un projet, il existe deux moyens : l'interface utilisateur ou l'API.

Le rôle le plus élevé que vous pouvez attribuer est **"Cegedim.Cloud Project Admin"**, qui est un rôle Rancher Project Owner prédéfini avec des droits étendus sur les ressources CRD (Custom Resource Definition).

#### Utilisation de l'Interface Utilisateur

Éditez le projet dont vous êtes propriétaire ou sur lequel vous avez suffisamment de droits accordés par le créateur du projet.

<figure><img src="/files/4tXBTfY84DZvxUIHA7xH" alt=""><figcaption></figcaption></figure>

Sélectionnez le groupe et le rôle dans le formulaire.

{% hint style="info" %}
Veuillez noter que seuls les groupes commençant par G\_EMEA\_\* et G\_K8\_\* sont connus par Rancher.
{% endhint %}

<figure><img src="/files/MApwmpArvUog7kDFHi20" alt=""><figcaption></figcaption></figure>

#### Utilisation de l'API

L'utilisation de l'API est simple. Vous aurez d'abord besoin de quelques paramètres :

* **Obtenir l'ID du Projet**

Pour obtenir l'ID du projet, vous pouvez utiliser l'explorateur d'API ou simplement utiliser le bouton "View in API".

{% code overflow="wrap" %}

```bash
curl --request GET \
 --url https://rancher-eb.cegedim.cloud/v3/projects \
 --header 'authorization: Bearer token-tttt:token-of-doom'
```

{% endcode %}

* **Donner l'Accès**

En utilisant votre jeton API, vous pouvez faire une seule requête POST pour créer la liaison de rôle :

{% code overflow="wrap" %}

```bash
curl --request POST \
--url https://rancher-eb.cegedim.cloud/v3/projectRoleTemplateBindings \
--header 'authorization: Bearer token-tttt:token-of-doom' \
--header 'content-type: application/json' \
--data '{
"projectId": "c-6t7f4:p-d43l6",
"namespaceId":"",
"groupPrincipalId":"keycloakoidc_group_group://G_EMEA_DUPER_GROUP",
"roleTemplateId": "cgdm-project-admin"
}'
```

{% endcode %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.cegedim.cloud/francais/calcul/conteneurs-k8s/k8s-didacticiels.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
