00 Prérequis et préparation
Installation des outils nécessaires, structure du dépôt et configuration initiale pour déployer Skube
Prérequis
Avant de commencer, assurez-vous d’avoir installé les outils suivants sur votre poste de travail.
Outils nécessaires
| Nom | URL | Note |
|---|---|---|
| Git | git-scm.com | — |
| talosctl | Documentation Talos | ⚠️ Assurez-vous de prendre la dernière version |
| kubectl | kubernetes.io | — |
| velero | velero.io | (optionnel) |
Structure du dépôt — structure de fichiers
kube/
├── README.md
├── .gitignore
│
├── docs/
│ ├── 00-prerequis.md
│ ├── 01-bootstrap-talos.md
│ ├── 02-bootstrap-flux.md
│ ├── 03-ajouter-un-cluster.md
│ └── 04-ajouter-une-app.md
│
├── model_node/ # Je crée un template simple avec les IPs, le stockage et les hostnames que je patcherai
│ ├── PC01.yaml
│ ├── PC01.yaml
│ ├── PC02.yaml
│ └── PC02.yaml
│
│
├── model_kube/ # Fonctions simples du cluster
│ ├── mono-host/ # <10 users, 1 node
│ └── mini-cluster-3node/ # <20-30 users, 3 nodes
│
│
├── clusters/ # ⭐ Un dossier par cluster réel déployé
│ ├── famille-maison/
│ │ ├── app-config/ # vars par app (non-secret, committed)
│ │ ├── node/ # 🔒 gitignore — patchs IP/hostname finaux
│ │ └── talos/ # 🔒 gitignore — configs générées avec secrets
│ │ ├── controlplane.yaml
│ │ ├── worker.yaml
│ │ └── talconfig.yaml
│ │
│ └── cluster-exemple-2/ # structure identique pour un futur cluster
│ └── ...
│
└── apps/ # Définitions d'apps réutilisables (base commune)
└── base/
├── pocket-id/
│ ├── kustomization.yaml
│ ├── deployment.yaml
│ ├── service.yaml
│ └── httproute.yaml
├── jellyfin/
├── vaultwarden/
├── seafile/
├── tuwunel/
└── netbird-client/
Préparation du dépôt
Option 1 — Accès au dépôt distant
Si vous avez accès au dépôt Git distant, clonez-le directement :
git clone $URL
Option 2 — Créer le dépôt localement
Sinon, voici comment monter la structure du dépôt manuellement :
git init kube
cd ./kube
mkdir -p apps
mkdir -p docs
mkdir -p model_node
mkdir -p model_kube
mkdir -p clusters/_Model/node
mkdir -p clusters/_Model/talos
Ajoutez ensuite les patterns nécessaires au .gitignore :
cat > .gitignore <<EOF
*.env
clusters/*/talos
clusters/*/node
EOF
info;
Note : les dossiers talos/ et node/ contiennent des configurations générées avec des secrets. Ils sont volontairement exclus du versioning Git.
Option 2 — (suite) model_kube par défaut
Voici deux modèles de configuration cluster par défaut.
info; Tenez compte que les modèles présentés ici peuvent ne pas être à jour. (Actuellement optimisés pour la version 1.14 et incompatibles avec les versions antérieures.)
Voici un modèle de configuration optimisé pour tester. Aucun CNI inclus par défaut : nous installerons Cilium dans les prochaines étapes, ainsi que FluxCD, qui installera Longhorn et Cert-Manager.
---
apiVersion: v1alpha1
kind: KubeAdmissionControlConfig
name: PodSecurity
configuration:
exemptions:
namespaces:
- longhorn-system
---
apiVersion: v1alpha1
kind: KubeFlannelCNIConfig
$patch: delete
---
apiVersion: v1alpha1
kind: KubeProxyConfig
enabled: false
---
apiVersion: v1alpha1
kind: KubeExternalManifestConfig
name: fluxcd
url: https://github.com/fluxcd/flux2/releases/latest/download/install.yaml
---
apiVersion: v1alpha1
kind: KubeInlineManifestConfig
name: longhorn
manifest: |
apiVersion: v1
kind: Namespace
metadata:
name: longhorn-system
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: longhorn
namespace: longhorn-system
spec:
interval: 5m0s
url: https://charts.longhorn.io/
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: longhorn
namespace: longhorn-system
spec:
interval: 10m
chart:
spec:
chart: longhorn
version: "v1.12.1"
sourceRef:
kind: HelmRepository
name: longhorn
namespace: longhorn-system
interval: 10m
values:
replicaCount: 1
preUpgradeChecker:
jobEnabled: false
csi:
attacherReplicaCount: 1
provisionerReplicaCount: 1
resizerReplicaCount: 1
snapshotterReplicaCount: 1
---
apiVersion: v1alpha1
kind: KubeInlineManifestConfig
name: cert-manager
manifest: |
apiVersion: v1
kind: Namespace
metadata:
name: cert-manager
---
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cert-manager
namespace: cert-manager
spec:
type: "oci"
interval: 5m0s
url: oci://quay.io/jetstack/charts/
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: cert-manager
namespace: cert-manager
spec:
interval: 10m
chart:
spec:
chart: cert-manager
version: "v1.21.1"
sourceRef:
kind: HelmRepository
name: cert-manager
namespace: cert-manager
interval: 10m
values:
crds:
enabled: true
podDnsPolicy: "None"
podDnsConfig:
nameservers:
- "1.1.1.1"
- "1.0.0.1"
Option 2 — (suite) model_node
voici un model simple. Pour plus de documentation, consultez https://docs.siderolabs.com/talos/v1.14/networking/configuration/overview
---
## export talossrv="--insecure --nodes 192.168.0.100"
version: v1alpha1
machine:
time:
servers:
- time.cloudflare.com
install:
disk: /dev/sde
image: ## Allez sur https://factory.talos.dev/ et générez une image adaptée à vos besoins
wipe: true
grubUseUKICmdline: true
---
apiVersion: v1alpha1
kind: HostnameConfig
hostname: bismuth
auto: off
---
apiVersion: v1alpha1
kind: ResolverConfig
nameservers:
- address: 8.8.8.8
- address: 1.1.1.1
---
apiVersion: v1alpha1
kind: LinkConfig
name: eth0
mtu: 1500
up: true
addresses:
- address: 192.168.0.3/24
routes:
- gateway: 192.168.0.1
metric: 210
---