Accéder à Woodpecker en privé¶
AKKO v2026.04 livre Woodpecker CI en Deployment interne uniquement.
Le défaut ingress.enabled=false signifie qu'aucun trafic entrant
n'atteint Woodpecker depuis Internet — bon défaut pour tout serveur CI
(exposition CVE, vol de credentials, abus supply-chain sont des risques
réels).
Cette page liste les trois patrons d'accès supportés, par ordre de préférence.
1. kubectl port-forward (défaut)¶
Aucune exposition réseau — un opérateur forwarde le Service vers son laptop à la demande :
kubectl -n akko port-forward svc/akko-akko-woodpecker-server 8000:80
# Puis ouvrir http://localhost:8000
Idéal pour un usage admin ponctuel. Aucun credential ne traverse l'Internet public, les sessions s'arrêtent avec le port-forward.
2. Mesh privé (recommandé en quotidien)¶
Joindre les nodes du cluster à un overlay privé — Tailscale, Cloudflare Tunnel, WireGuard, Nebula — le Service cluster-interne devient alors accessible uniquement aux membres autorisés du mesh.
Exemple Tailscale :
# Sur chaque node k8s
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --authkey=<key> --advertise-routes=<cluster-cidr>
# Sur ton laptop
tailscale up
kubectl proxy # ou un port-forward direct à travers le mesh
Aucun changement du chart AKKO requis.
3. Ingress opt-in (uniquement si vous acceptez le risque)¶
Si votre réalité opérationnelle impose une URL publique (par ex. les webhooks GitHub doivent atteindre Woodpecker directement), optez explicitement avec une pile stricte :
akko-woodpecker:
ingress:
enabled: true
className: traefik
annotations:
# Middlewares Traefik — grille OAuth2 + allowlist IP
traefik.ingress.kubernetes.io/router.middlewares: >-
akko-oauth2-woodpecker@kubernetescrd,akko-ghwebhooks-ipallowlist@kubernetescrd
tls:
- hosts: ["ci.votre-domaine.example"]
secretName: woodpecker-tls
Puis créer deux CR Middleware Traefik :
akko-oauth2-woodpecker— oauth2-proxy qui ne laisse passer que le groupe Keycloakakko-admins.akko-ghwebhooks-ipallowlist—IPAllowListTraefik avec les plages IP webhook GitHub (https://api.github.com/meta →.hooks).
Webhooks GitHub sans exposition publique¶
Pour déclencher push-to-main / PR quand l'Ingress est désactivé :
- Cloudflare Tunnel (
cloudflared) — gratuit, à associer à une policy Cloudflare Access qui ne laisse poster que les ranges webhook GitHub. Le Tunnel traverse NAT sans ouvrir le moindre port entrant. - smee.io — proxy public qui forwarde les webhooks GitHub vers un agent local. Bien pour le dev, moins idéal en prod.
- Mode poll dépôt — un
CronJobdans le cluster lancewoodpecker-cli pipeline start --interval 30scontre le repo et déclenche les pipelines sans dépendre des webhooks.
À NE PAS faire¶
- Ne pas
helm upgradeavecakko-woodpecker.ingress.enabled=truesur un domaine par défaut sans grille OAuth2 et IP allowlist. - Ne pas embarquer d'URLs webhook avec des secrets Woodpecker dans un repo public.
- Ne pas configurer Woodpecker pour signer les artefacts Cosign avec un issuer OIDC public découvrable — utiliser un issuer privé.