> ## Documentation Index
> Fetch the complete documentation index at: https://infra-docs.kaeyros.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Registres d'images : ghcr.io et registre GitLab interne

> Kaeyros utilise ghcr.io comme registre principal pour les images de production, et un registre GitLab interne pour les usages résiduel. Procédures de connexion et gestion des pull-secrets Kubernetes.

Kaeyros Analytics maintient deux registres de conteneurs Docker. Le registre principal héberge toutes les images de production et est consommé par ArgoCD et le cluster Kubernetes. Le registre secondaire sert aux usages internes et résiduels sur la plateforme d'outillage.

## Registre principal : GitHub Container Registry

Le registre `ghcr.io` est la source de vérité pour toutes les images déployées en production.

```text theme={null}
ghcr.io/kaeyros-analytics-org/<nom-du-service>:<tag>
```

### Se connecter à ghcr.io

Pour pousser ou tirer des images depuis votre poste de développement, utilisez un Personal Access Token (PAT) GitHub avec le scope `write:packages` :

```bash theme={null}
# Authentification avec PAT
docker login ghcr.io -u <votre-username-github> -p <votre-PAT>
```

> [!WARNING]
>
> Utilisez un PAT dédié avec le minimum de permissions nécessaires. Ne partagez jamais votre PAT personnel. Pour les pipelines CI, préférez le secret `GHCR_PAT` configuré au niveau de l'organisation.

### Images typiques hébergées

| Image | Description | Exemple de tag |
| - | - | - |
| `ghcr.io/kaeyros-analytics-org/api-core` | API principale | `a1b2c3d`, `v2.1.0` |
| `ghcr.io/kaeyros-analytics-org/web-frontend` | Application web | `a1b2c3d`, `v1.5.2` |
| `ghcr.io/kaeyros-analytics-org/worker-jobs` | Worker de traitement | `a1b2c3d`, `v3.0.1` |

## Registre secondaire : GitLab interne

Le serveur d'outillage héberge un registre Docker GitLab accessible en interne.

```text theme={null}
registry.gitlab.kaeyros.org/<groupe>/<projet>:<tag>
```

Ce registre est utilisé dans les cas suivants :

* Images d'outillage interne (SonarQube scanners, runners CI custom)
* Projets migrés avant la standardisation sur ghcr.io
* Backups temporaires lors de migrations

### Se connecter au registre GitLab

```bash theme={null}
docker login registry.gitlab.kaeyros.org -u <votre-user-gitlab> -p <votre-token-gitlab>
```

> [!NOTE]
>
> Le registre GitLab interne est en mode maintenance progressive. Privilégiez systématiquement ghcr.io pour tout nouveau projet ou service.

## Pull-secret Kubernetes : argo-pull

Pour que le cluster Kubernetes puisse tirer les images privées depuis ghcr.io, un `docker-registry` secret nommé `argo-pull` est configuré dans chaque namespace applicatif.

### Structure du secret

```yaml argo-pull-secret.yaml theme={null}
apiVersion: v1
kind: Secret
metadata:
  name: argo-pull
  namespace: <namespace-applicatif>
type: kubernetes.io/dockerconfigjson
data:
  .dockerconfigjson: <base64-encoded-config>
```

### Créer ou mettre à jour le secret

```bash theme={null}
# Création du secret dans un namespace
kubectl create secret docker-registry argo-pull \
  --namespace=<votre-namespace> \
  --docker-server=ghcr.io \
  --docker-username=<bot-username> \
  --docker-password=<bot-PAT> \
  --docker-email=devops@kaeyros-analytics.com
```

### Référence dans les manifests

Les charts Helm internes référencent automatiquement ce secret via les `values.yaml` :

```yaml values.yaml theme={null}
image:
  repository: ghcr.io/kaeyros-analytics-org/mon-service
  tag: "latest"
  pullPolicy: IfNotPresent

imagePullSecrets:
  - name: argo-pull
```

## Gestion des accès

> **Développeurs**
>
> Accès en lecture seule sur ghcr.io via PAT personnel. Pas de push manuel : la CI GitHub Actions pousse automatiquement les images.

> **CI/CD (GitHub Actions)**
>
> Accès en écriture via le secret `GHCR_PAT` au niveau organisation. Utilisé par les workflows pour pousser les images après build.

> **Cluster Kubernetes**
>
> Accès en lecture via le secret `argo-pull`. Le compte bot associé a uniquement les permissions `read:packages`.

> **argocd-image-updater**
>
> Accès en lecture via le même secret `argo-pull`. Détecte les nouveaux tags et met à jour les Applications ArgoCD.

## Rotation des credentials

**1. Générer un nouveau PAT**

Dans GitHub Settings > Developer settings > Personal access tokens, créez un nouveau token avec le scope `read:packages` (ou `write:packages` pour la CI).

**2. Mettre à jour le secret Kubernetes**

Recréez le secret `argo-pull` dans tous les namespaces concernés avec la nouvelle valeur.

**3. Mettre à jour GitHub Secrets**

Remplacez la valeur de `GHCR_PAT` dans les secrets de l'organisation GitHub.

**4. Valider le pull**

Déclenchez un déploiement de test et vérifiez que les pods démarrent correctement avec la nouvelle image.

**5. Révoquer l'ancien PAT**

Supprimez l'ancien token GitHub une fois la validation terminée.

> [!WARNING]
>
> La rotation des credentials du registre est une opération sensible. Prévenez l'équipe DevOps à [devops@kaeyros-analytics.com](mailto:devops@kaeyros-analytics.com) avant toute modification du secret `argo-pull` dans les namespaces de production.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.