feat: add scripts/hbd.sh and some docs

This commit is contained in:
cătălin 2026-07-31 11:33:23 +02:00
commit ac2520891f
No known key found for this signature in database
2 changed files with 138 additions and 3 deletions

135
README.md
View file

@ -1 +1,136 @@
# fukuops
Kubernetes homelab operations repository.
## Scripts
### hbd.sh - Helm Build and Deploy
Package and push Helm charts to an OCI registry.
```bash
scripts/hbd.sh <chart-name> [version] [--oci-registry <registry>]
```
**Arguments:**
- `chart-name` - Name of the chart in `k8s/charts/`
- `version` (optional) - Version to deploy. If omitted, bumps patch version (e.g., 0.1.0 → 0.1.1)
- `--oci-registry <registry>` (optional) - Override default OCI registry
**Default registry:** `oci://git.roboces.dev/catalin/fukuops`
**Examples:**
```bash
# Deploy next patch version (0.1.0 → 0.1.1)
scripts/hbd.sh vaultwarden
# Deploy specific version
scripts/hbd.sh vaultwarden 0.2.0
# Deploy to custom registry
scripts/hbd.sh vaultwarden 0.1.1 --oci-registry oci://my-registry.com/charts
```
---
### k3scale.sh - Kubernetes Scaling
Scale deployments and statefulsets in a k3s cluster.
```bash
scripts/k3scale.sh REPLICAS [RESOURCE...] [OPTIONS]
```
**Arguments:**
- `REPLICAS` - Number of replicas to scale to
- `RESOURCE` - Resource to scale in `namespace/name` format (can specify multiple)
**Options:**
- `--all` - Scale all deployments/statefulsets in current namespace
- `--all-namespaces` - Scale across all namespaces
- `-n, --namespace NAMESPACE` - Target namespace
- `--dry-run` - Show actions without executing
- `-v|-vv|-vvv` - Verbosity levels
**Examples:**
```bash
scripts/k3scale.sh 1 mynamespace/mydeployment
scripts/k3scale.sh 0 --all --namespace production
scripts/k3scale.sh 3 --all --dry-run
```
---
### proxmox-power.sh - Proxmox VM Management
Start or shutdown QEMU VMs and LXC containers on a Proxmox cluster.
```bash
scripts/proxmox-power.sh --op start|shutdown [--all | --ids <vmid> ...]] [OPTIONS]
```
**Options:**
- `--op OP` - Operation: `start` or `shutdown` (required)
- `--all` - Operate on all VMs/containers (honors filters)
- `--ids LIST` - Space-separated list of VMIDs
- `--only-qemu` - Only QEMU VMs
- `--only-lxc` - Only LXC containers
- `--force` - Force shutdown if timeout exceeded
- `--timeout SEC` - Shutdown wait timeout (default: 120)
- `--concurrency N` - Parallel operations (default: 4)
- `--node NODE` - Restrict to specific node
- `--dry-run` - Show actions without executing
- `--insecure` - Skip SSL verification
**Authentication (env vars):**
- API Token: `PVE_TOKEN_ID` + `PVE_TOKEN_SECRET`
- Password: `PVE_USER` + `PVE_PASSWORD` (or via GNOME keyring)
**Examples:**
```bash
scripts/proxmox-power.sh --op shutdown --all
scripts/proxmox-power.sh --op start --ids 100 101 --node mynode
PVE_TOKEN_ID=user@pam!ci scripts/proxmox-power.sh --op start --all
```
---
### encode-secrets.sh - Base64 Encode Secrets
Base64 encode secret values in a Kubernetes Secret YAML manifest.
```bash
scripts/encode-secrets.sh <file>
```
**Arguments:**
- `file` - Path to a Kubernetes Secret YAML file
**Example:**
```bash
scripts/encode-secrets.sh k8s/secrets/my-secret.yaml
```
---
### update-argo.sh - ArgoCD Upgrades
Upgrade ArgoCD to a new version.
```bash
scripts/update-argo.sh [VERSION] [OPTIONS]
```
**Arguments:**
- `VERSION` (optional) - Target version. If omitted, auto-detects latest
**Options:**
- `--dry-run` - Show what would be done
- `-v|-vv|-vvv` - Verbosity levels
**Examples:**
```bash
scripts/update-argo.sh # Upgrade to latest
scripts/update-argo.sh v2.9.0 # Upgrade to specific version
scripts/update-argo.sh --dry-run -vv # Preview with verbose output
```

View file

@ -63,9 +63,9 @@ function main() {
while [[ $# -gt 0 ]]; do
case "$1" in
--oci-register)
--oci-registry)
if [[ -z "${2:-}" ]] || [[ "$2" == -* ]]; then
echo "Error: --oci-register requires a registry argument" >&2
echo "Error: --oci-registry requires a registry argument" >&2
exit 1
fi
oci_registry="$2"
@ -75,7 +75,7 @@ function main() {
echo "$USAGE"
echo ""
echo "Options:"
echo " --oci-register <registry> Override default OCI registry (default: oci://git.roboces.dev/catalin/fukuops)"
echo " --oci-registry <registry> Override default OCI registry (default: oci://git.roboces.dev/catalin/fukuops)"
exit 0
;;
-*)