2023-06-14 19:52:42 +02:00
---
title: Installation d'un POC K8S sous Proxmox
description:
published: true
2023-06-14 21:10:54 +02:00
date: 2023-06-14T19:10:52.534Z
2023-06-14 19:52:42 +02:00
tags: k8s, proxmox
editor: markdown
dateCreated: 2023-06-14T17:52:35.877Z
---
# Prérequis
## Un serveur hyperviseur
Plusieurs solutions sont disponibles, le plus simple reste le petit NUC boosté aux stéroïde. C'est vers cette solution que je me suis tourné !
Voici donc la bête que j'ai acheté spécialement pour ce POC :
![poc_server.jpg ](/Conteneurisation/poc_server.jpg )
2023-06-14 20:32:02 +02:00
[Disponible sur Amazon ](https://amzn.to/3P9ySPp )
{.amazon}
2023-06-14 19:52:42 +02:00
16 Threads et 32Go de RAM seront parfait pour faire un POC K8S, voir même de la prod dans un futur proche.
J'ai cependant profité du port SATA pour ajouter un SSD de 1To au NVME de 500Go déjà disponible.
## Installer Proxmox
Je ne vous guiderai pas dans ce tutoriel dans l'installation de Proxmox, mais vous pouvez retrouver toutes la documentation necessaire directement sur internet ou peut être dans un avenir proche dans cette catégorie Wiki-Tech : https://wiki-tech.io/Virtualisation#proxmox
2023-06-14 20:49:20 +02:00
A la fin de l'installation de Proxmox, j'ai pour habitude d'utiliser un petit script post installation pour changer quelques configurations :
2023-06-14 20:48:00 +02:00
```bash
bash -c "$(wget -qLO - https://github.com/tteck/Proxmox/raw/main/misc/post-pve-install.sh)"
```
![pve2_-_proxmox_console_2023-06-14_20.45.08@2x.png ](/Conteneurisation/pve2_-_proxmox_console_2023-06-14_20.45.08@2x.png )
2023-06-14 19:52:42 +02:00
## Configurer le SSD de 1To
2023-06-14 20:03:44 +02:00
Afin de bénéficier de la place disponible dans ce SSD SATA nouvellement ajouté à la machine, il fait le configurer dans Proxmox pour permettre son utilisation.
Pour cela, rendez vous dans la catégorie `Disk` de votre hyperviseur, et cliquer sur `Create Volume Group` :
![pve2_-_proxmox_virtual_environment_2023-06-14_19.56.48@2x.png ](/Conteneurisation/pve2_-_proxmox_virtual_environment_2023-06-14_19.56.48@2x.png )
> Pensez à retenir le nom de votre volume, on va en avoir besoin par la suite.
{.is-warning}
> Votre disque est prêt à être utilisé !
{.is-success}
2023-06-14 20:15:34 +02:00
## Créer un utilisateur
Par la suite je vais utiliser Packer et Terraform pour déployer l'infra rapidement, pour cela, je vais créer un utilisateur dédié :
![pve2_-_proxmox_virtual_environment_2023-06-14_20.09.41@2x.png ](/Conteneurisation/pve2_-_proxmox_virtual_environment_2023-06-14_20.09.41@2x.png )
![pve2_-_proxmox_virtual_environment_2023-06-14_20.11.16@2x.png ](/Conteneurisation/pve2_-_proxmox_virtual_environment_2023-06-14_20.11.16@2x.png )
Et on lui ajoute les bonnes permissions :
![pve2_-_proxmox_virtual_environment_2023-06-14_20.12.57@2x.png ](/Conteneurisation/pve2_-_proxmox_virtual_environment_2023-06-14_20.12.57@2x.png )
![pve2_-_proxmox_virtual_environment_2023-06-14_20.14.46@2x.png ](/Conteneurisation/pve2_-_proxmox_virtual_environment_2023-06-14_20.14.46@2x.png )
2023-06-14 20:59:05 +02:00
## Créer un template Debian 12
2023-06-14 20:15:34 +02:00
Là aussi vous êtes libre de créer ce template par les moyens que vous souhaitez, dans mon cas je vais en profiter pour utiliser Packer avec l'aide de l'excellent projet de QJoly :
2023-06-14 20:20:04 +02:00
2023-06-14 20:32:02 +02:00
[QJoly/Debian-Template-Proxmox ](https://github.com/QJoly/Debian-Template-Proxmox )
2023-06-14 20:20:04 +02:00
{.github}
2023-06-14 20:15:34 +02:00
2023-06-14 20:59:05 +02:00
# Déployer l'infra du POC
Dans ce POC je vais avoir besoin de 3 VM.
Pour leur création, je vais utiliser Terraform.
2023-06-14 20:15:34 +02:00
2023-06-14 21:10:54 +02:00
## Préparer Terraform
Il faut installer le client Terraform sur sa machine, dans mon cas j'utilise MacOS donc je l'installe avec :
```bash
brew install terraform
```
Ensuite nous avons besoin d'un fichier pour permettre à Terraform de se connecter à notre cluster Proxmox : `provider.tf`
```json
terraform {
required_providers {
proxmox = {
source = "Telmate/proxmox"
version = "2.9.14"
}
}
}
provider "proxmox" {
pm_api_url = "https://< IP_DU_PROXMOX > :8006/api2/json"
pm_user = "terraform@pve"
pm_password = "< MOT_DE_PASSE > "
pm_tls_insecure = "true"
pm_parallel = 3
}
```
Et d'un autre fichier pour décrire l'infrastructure que nous voulons : `main.tf`
```json
module "machinetest" {
count = 3
source = "QJoly/proxmox/module"
version = "0.0.1"
node_name = "master-${count.index}-tf"
node_target = "< NOM_DU_SERVER_PROXMOX > "
node_qemuga = 1
node_pool = ""
node_size_disk = "32G"
node_bootauto = true
node_template = "< NOM_DU_TEMPLATE > "
node_storage_disk = "< NOM_DE_VOTRE_STORAGE > "
node_network_host = "vmbr0"
node_notes = "Super-VM for the customer No 01"
node_cpu = 4
node_memory = 4092
}
```
}