GitHub Actions
Automatizza il provisioning dei cluster e la sincronizzazione della configurazione con GitHub Actions.
Prerequisiti
- Un repository che contiene il tuo
cluster.lok8s.yaml - La CLI lok8s disponibile in CI (installata tramite
b env add) - I secret del repository GitHub configurati
Secret richiesti
Aggiungili nelle impostazioni del repository in Settings > Secrets and variables > Actions:
| Secret | Descrizione |
|---|---|
HCLOUD_TOKEN | Token API di Hetzner Cloud |
SSH_PRIVATE_KEY | Chiave privata SSH per l'accesso ai nodi |
KUBECONFIG | Kubeconfig codificato in Base64 (per i workflow di sincronizzazione) |
Workflow di provisioning
Crea .github/workflows/provision.yml:
yaml
name: Provision Cluster
on:
workflow_dispatch:
inputs:
action:
description: 'Action to perform'
required: true
default: 'provision'
type: choice
options:
- provision
- destroy
jobs:
provision:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install lok8s
run: b env add github.com/kernpilot/lok8s
- name: Setup SSH key
run: |
mkdir -p ~/.ssh
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
- name: Provision
env:
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
run: lo provisionWorkflow di sincronizzazione
Crea .github/workflows/sync.yml per applicare le modifiche alla configurazione a ogni push:
yaml
name: Sync Cluster
on:
push:
branches: [main]
paths:
- 'cluster.lok8s.yaml'
- 'deploy/**'
jobs:
sync:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install lok8s
run: b env add github.com/kernpilot/lok8s
- name: Setup kubeconfig
run: |
mkdir -p ~/.kube
echo "${{ secrets.KUBECONFIG }}" | base64 -d > ~/.kube/config
- name: Reconcile infrastructure
env:
HCLOUD_TOKEN: ${{ secrets.HCLOUD_TOKEN }}
run: lo provision
- name: Deploy platform
run: lo deploylo provision è idempotente — rieseguirlo riconcilia il cluster con il tuo spec. lo deploy distribuisce i manifest di piattaforma/workload sotto deploy/.
Prossimi passi
- Registrazione — registrazione con la dashboard kubehz
- KubeOne — dettagli sul provisioner
- CAPI — provisioner Cluster API
Stato del documento
| Aspetto | Dettaglio |
|---|---|
| Stato | attivo |
| Ultima revisione | 2026-04-04 |