# 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/`) :

```yaml
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
  name: <app>-<env>-tls
  namespace: <app>-<env>  # Le namespace où sera utilisé le secret TLS
spec:
  secretName: <app>-<env>-tls
  issuerRef:
    name: letsencrypt-prod  # Pour sites publics (.fr)
    # OU
    # name: ca-issuer  # Pour sites internes (.local)
    kind: ClusterIssuer
  dnsNames:
    - <domain>
```

### 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

