Files
wiki/Catalogue-Self-Hosted/apps/app-canine.md
T
2026-06-09 18:40:21 +02:00

4.6 KiB


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
GitHub czetech/canine
License MIT
Langage Ruby (Rails 7) + Hotwire
Étoiles GitHub 2,9k
Catégorie cat-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é)

# 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

🔗 Pages Liées