clear part2

This commit is contained in:
2026-01-21 22:38:06 +01:00
parent 0027501e09
commit b125232ec0
9 changed files with 0 additions and 221 deletions

View File

@@ -1,101 +0,0 @@
# Gestion des Certificats TLS pour le cluster OPS
Ce chart gère les certificats TLS générés par cert-manager dans le cluster OPS.
## Stratégie de certificats
- **Sites publics** (`.fr`) → **Let's Encrypt** (`letsencrypt-prod`)
- Validation HTTP-01, nécessite accès Internet
- Certificats reconnus par tous les navigateurs
- **Sites internes** (`.local`) → **PKI Interne** (`ca-issuer`)
- Certificats signés par votre CA root interne
- Pas besoin d'accès Internet
- Voir [PKI Interne](../../../../docs/PKI-INTERNE.md) pour plus de détails
## Structure
- `Chart.yaml` : Définition du chart Helm
- `templates/` : Dossiers organisés par application (uniquement des fichiers YAML)
- `homarr/` : Certificats pour l'application Homarr
- `[autre-app]/` : Certificats pour d'autres applications
- `docs/` : Documentation par application
- `homarr/README.md` : Documentation pour les certificats Homarr
**⚠️ IMPORTANT** : Seuls les fichiers YAML doivent être dans `templates/`. Les fichiers de documentation doivent être dans `docs/`.
## Ajout d'un nouveau certificat
### Pour une application existante
Ajoutez un fichier dans le dossier de l'application (ex: `templates/homarr/`) :
#### Pour un site public (`.fr`) - Let's Encrypt
```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: <app>-<env>-tls
namespace: certificates-ops
spec:
secretName: <app>-<env>-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- <domain>.fr
```
#### Pour un site interne (`.local`) - PKI Interne
```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: <app>-<env>-tls
namespace: certificates-ops
annotations:
# IMPORTANT: Les certificats utilisant ca-issuer doivent être créés
# après que la PKI soit initialisée (sync-wave "2")
argocd.argoproj.io/sync-wave: "2"
spec:
secretName: <app>-<env>-tls
issuerRef:
name: ca-issuer # PKI interne pour domaines .local
kind: ClusterIssuer
dnsNames:
- <domain>.local
```
**⚠️ Important pour les certificats internes** : Ajoutez toujours l'annotation `argocd.argoproj.io/sync-wave: "2"` pour garantir que la PKI est initialisée avant la création du certificat.
### Pour une nouvelle application
1. Créez un nouveau dossier dans `templates/` : `templates/<app>/`
2. Créez le fichier Certificate dans ce dossier (uniquement des fichiers YAML)
3. Optionnellement, créez un `README.md` dans `docs/<app>/` pour documenter les certificats de cette application
## Déploiement
Les certificats sont déployés automatiquement via l'ApplicationSet `certificates-apps` dans ArgoCD.
## Vérification
```bash
# Vérifier les certificats
kubectl get certificates -A
# Vérifier un certificat spécifique
kubectl describe certificate homarr-dev-tls -n homarr-dev
# Vérifier le secret TLS créé
kubectl get secret homarr-dev-tls -n homarr-dev
```
## Notes importantes
- Les certificats sont créés dans le cluster OPS où cert-manager est installé
- Le namespace du Certificate doit correspondre au namespace où le secret TLS sera utilisé
- Pour utiliser le certificat dans d'autres clusters (DEV, RCT, PRD), le secret TLS doit être synchronisé depuis OPS

View File

@@ -1,30 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ca-root-certificate
namespace: certificates-ops
annotations:
# Ce certificat doit être créé en premier pour générer le secret ca-root-secret
# utilisé par le ClusterIssuer ca-issuer
argocd.argoproj.io/sync-wave: "0"
spec:
# Ce certificat génère la CA root de votre PKI interne
secretName: ca-root-secret
issuerRef:
name: ca-root-issuer
kind: ClusterIssuer
commonName: "GK Domaine Internal CA Root"
dnsNames:
- "gkdomaine.local"
- "*.gkdomaine.local"
- "*.dev.gkdomaine.local"
- "*.rct.gkdomaine.local"
- "*.prd.gkdomaine.local"
isCA: true
duration: 87600h # 10 ans
usages:
- signing
- key encipherment
- cert sign
- crl sign

View File

@@ -1,10 +0,0 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-root-issuer
annotations:
# Ce ClusterIssuer doit être créé en premier (avant le Certificate ca-root-certificate)
argocd.argoproj.io/sync-wave: "-1"
spec:
selfSigned: {}

View File

@@ -1,15 +0,0 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: ca-issuer
annotations:
# Ce ClusterIssuer dépend du secret ca-root-secret généré par ca-root-certificate
# ArgoCD créera d'abord le Certificate, puis ce ClusterIssuer
argocd.argoproj.io/sync-wave: "1"
spec:
ca:
secretName: ca-root-secret
# Le secret ca-root-secret contient la clé privée et le certificat de la CA root
# Il est généré par le Certificate ca-root-certificate ci-dessus
# IMPORTANT: Ce ClusterIssuer sera en erreur jusqu'à ce que le secret soit créé

View File

@@ -1,7 +0,0 @@
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}

View File

@@ -1,16 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: ca-root-certificate
namespace: certificates-ops
labels:
app: pki-internal
component: ca-root-cert
data:
# Le certificat CA root sera injecté ici par un script ou manuellement
# Ce ConfigMap peut être synchronisé vers les autres clusters pour que les clients
# puissent faire confiance aux certificats signés par cette CA
ca.crt: |
# Le certificat CA sera ajouté ici après la génération
# Pour l'extraire : kubectl get secret ca-root-secret -n certificates-ops -o jsonpath='{.data.tls\.crt}' | base64 -d

View File

@@ -1,17 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: harbor-ops-tls
namespace: certificates-ops
annotations:
# Ce certificat dépend de ca-issuer qui doit être prêt en premier
# ca-issuer a sync-wave "1", donc ce certificat doit être créé après
argocd.argoproj.io/sync-wave: "2"
spec:
secretName: harbor-ops-tls
issuerRef:
name: ca-issuer # PKI interne pour domaine .local
kind: ClusterIssuer
dnsNames:
- harbor.gkdomaine.local

View File

@@ -1,16 +0,0 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: headlamp-dev-tls
namespace: certificates-ops
annotations:
# Ce certificat dépend de ca-issuer qui doit être prêt en premier
# ca-issuer a sync-wave "1", donc ce certificat doit être créé après
argocd.argoproj.io/sync-wave: "2"
spec:
secretName: headlamp-dev-tls
issuerRef:
name: ca-issuer
kind: ClusterIssuer
dnsNames:
- headlamp.dev.gkdomaine.local

View File

@@ -1,9 +0,0 @@
apiVersion: v1
kind: Namespace
metadata:
name: certificates-ops
labels:
name: certificates-ops
managed-by: argocd
purpose: tls-certificates