114 lines
4.6 KiB
Markdown
114 lines
4.6 KiB
Markdown
---
|
|
title: Canine
|
|
created: 2026-06-07
|
|
updated: 2026-06-07
|
|
type: app
|
|
tags: [catalogue, deployment, kubernetes, paas, devops]
|
|
confidence: high
|
|
contested: false
|
|
sources: [https://selfh.st/apps/?tag=Deployment, https://github.com/czetech/canine]
|
|
---
|
|
|
|
# 🚀 Canine
|
|
|
|
> **PaaS Kubernetes minimaliste** — la surcouche K8s la plus simple pour déployer des apps depuis Git, sans la complexité d'outils comme ArgoCD ou Rancher.
|
|
|
|
## 📋 Informations Générales
|
|
|
|
| Champ | Valeur |
|
|
| :--- | :--- |
|
|
| **Site web** | [canine.sh](https://canine.sh/) |
|
|
| **GitHub** | [czetech/canine](https://github.com/czetech/canine) |
|
|
| **License** | MIT |
|
|
| **Langage** | Ruby (Rails 7) + Hotwire |
|
|
| **Étoiles GitHub** | 2,9k ⭐ |
|
|
| **Catégorie** | [[cat-deployment\|Deployment]] |
|
|
| **Stack cible** | Kubernetes (K3s, EKS, GKE…) |
|
|
|
|
## 📝 Description
|
|
|
|
**Canine** est un **PaaS Kubernetes** conçu dans un esprit "simplicité radicale". Contrairement à ArgoCD (GitOps pur, déclaratif, sans UI vraiment pensée pour l'utilisateur final) ou à Kubero (plus complet mais aussi plus dense), Canine vise un public qui veut juste **pousser du code sur son cluster sans réfléchir à la grammaire Kubernetes**.
|
|
|
|
Le positionnement marketing officiel est "Heroku for Kubernetes" : on connecte un repo Git, on clique sur "Deploy", et Canine crée un Deployment, un Service, un Ingress avec TLS, et configure les variables d'environnement. Le tout en quelques secondes.
|
|
|
|
**Fonctionnalités principales** :
|
|
|
|
- ✅ **Déploiement Git** : push → build → deploy, buildpacks ou Dockerfile
|
|
- ✅ **TLS automatique** via cert-manager
|
|
- ✅ **Custom domains** : associer un domaine à chaque service
|
|
- ✅ **Add-ons managés** : PostgreSQL, MySQL, Redis (provisionnement en un clic)
|
|
- ✅ **Logs et exec** temps réel depuis l'UI
|
|
- ✅ **Rollback** en un clic (versions d'images Docker)
|
|
- ✅ **CLI** (`caninectl`) pour scripter les déploiements
|
|
|
|
**Positionnement vs Kubero** : Canine est **plus jeune et plus minimaliste** (2,9k ⭐ vs 4,3k). Si l'écosystème est moins riche, l'UX est plus directe. Pour un solo dev qui veut "Heroku sur son cluster K3s", Canine est probablement le bon choix. Pour une équipe de 5+ avec des add-ons complexes, Kubero est plus adapté.
|
|
|
|
## 🚀 Installation
|
|
|
|
### Prérequis
|
|
- Un cluster Kubernetes (K3s, microK8s, k3d, ou managé)
|
|
- `kubectl` configuré
|
|
- Helm 3
|
|
|
|
### Via Helm (recommandé)
|
|
|
|
```bash
|
|
# Ajouter le repo
|
|
helm repo add canine https://czetech.github.io/canine
|
|
helm repo update
|
|
|
|
# Créer le namespace
|
|
kubectl create namespace canine
|
|
|
|
# Installer
|
|
helm install canine canine/canine \
|
|
--namespace canine \
|
|
--set apiKey=$(openssl rand -hex 32) \
|
|
--set ingress.host=canine.example.com
|
|
```
|
|
|
|
### Configuration DNS
|
|
|
|
Pointer un wildcard `*.canine.example.com` vers l'IP de l'Ingress. Canine utilise ce wildcard pour les apps déployées (ex. `monapp.canine.example.com`).
|
|
|
|
## ⚙️ Configuration
|
|
|
|
- **Git provider** : connecter un compte GitHub ou GitLab via OAuth
|
|
- **Registry** : Canine peut builder lui-même (buildpacks) ou utiliser des images pré-construites depuis Docker Hub, GHCR, GitLab Registry
|
|
- **Resource limits** : fixer requests/limits par projet pour protéger le cluster
|
|
- **Sleep mode** : configurer l'arrêt automatique des apps en dev/staging la nuit
|
|
- **API tokens** : créer un token par membre de l'équipe, avec un scope limité
|
|
|
|
## 🔗 Alternatives
|
|
|
|
- **[[app-kubero]]** — PaaS K8s plus complet, plus mature, mais plus dense à configurer
|
|
- **[[app-coolify]]** — PaaS Docker (pas K8s), plus accessible si vous n'avez pas de cluster
|
|
- **ArgoCD** — standard GitOps K8s, courbe d'apprentissage très raide
|
|
- **Rancher** — management de cluster complet, vise l'entreprise
|
|
- **Sealos** — PaaS K8s "cloud-like", très populaire en Chine
|
|
|
|
## 🔒 Sécurité
|
|
|
|
- ⚠️ **Ne pas exposer Canine sans Ingress TLS** : activer HTTPS en priorité
|
|
- **Limiter l'opérateur K8s** : le ServiceAccount de Canine crée des ressources, lui donner un ClusterRole minimal
|
|
- **Secrets et variables** : Canine stocke les secrets en Secrets K8s, mais le chiffrement at-rest d'`etcd` reste à activer au niveau du cluster
|
|
- **Audit** : activer les logs d'audit K8s pour tracer qui déploie quoi
|
|
- **Pas de multi-tenant fort** : Canine n'est pas conçu pour héberger des clients hostiles ; pour un PaaS commercial, préférer Sealos ou Qovery
|
|
|
|
## 📚 Ressources
|
|
|
|
- [Site officiel](https://canine.sh/)
|
|
- [Dépôt GitHub](https://github.com/czetech/canine)
|
|
- [Documentation](https://docs.canine.sh/)
|
|
- [Démo](https://demo.canine.sh/)
|
|
|
|
## 🔗 Pages Liées
|
|
|
|
- [[cat-deployment]]
|
|
- [[app-portainer]]
|
|
- [[app-kubero]]
|
|
- [[app-coolify]]
|
|
- [[cat-docker]]
|
|
- [[securisation-home-lab]]
|
|
- [[recettes-docker-compose]]
|