# Garm Helm Chart This Helm chart deploys Garm (GitHub Actions Runner Manager) on a Kubernetes cluster. ## Prerequisites - Kubernetes 1.19+ - Helm 3.0+ - Ingress controller (nginx recommended) - Cert-manager (optional, for TLS) ## Installing the Chart 1. Add the Helm repository: ```bash helm repo add garm https://your-repo-url helm repo update ``` 2. Create a values file (e.g., `values.yaml`) and configure the required parameters: ```yaml # Only Edge Connect credentials are required, others will be auto-generated credentials: edgeConnect: username: "your-ec-username" password: "your-ec-password" # Optional: Override auto-generated credentials credentials: admin: generateCredentials: false # Set to false to use custom credentials username: "custom-admin" password: "custom-password" email: "admin@example.com" gitea: generateToken: false # Set to false to use custom token token: "your-custom-token" ingress: hosts: - host: your-garm-domain.example.com paths: - path: / pathType: Prefix tls: - secretName: garm-tls hosts: - your-garm-domain.example.com ``` Note: If you don't provide custom credentials, the chart will automatically generate secure random values for: - Admin password - Gitea token - JWT secret - Database passphrase 3. Install the chart: ```bash helm install garm garm/garm -f values.yaml ``` ## Configuration The following table lists the configurable parameters of the Garm chart and their default values. | Parameter | Description | Default | |-----------|-------------|---------| | `image.repository` | Garm image repository | `edp.buildth.ing/devfw-cicd/garm` | | `image.tag` | Garm image tag | `provider-ec-30` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `replicaCount` | Number of Garm replicas | `1` | | `persistence.enabled` | Enable persistence using PVC | `true` | | `persistence.size` | PVC size | `100Gi` | | `persistence.storageClass` | PVC storage class name | `""` | | `ingress.enabled` | Enable ingress | `true` | | `ingress.className` | Ingress class name | `nginx` | | `credentials.gitea.generateToken` | Auto-generate Gitea token | `true` | | `credentials.gitea.token` | Custom Gitea token (if generateToken=false) | `""` | | `credentials.admin.generateCredentials` | Auto-generate admin credentials | `true` | | `credentials.admin.username` | Admin username | `admin` | | `credentials.admin.password` | Custom admin password (if generateCredentials=false) | `""` | | `credentials.admin.email` | Admin email | `"admin@example.com"` | | `credentials.edgeConnect.username` | Edge Connect username (required) | `""` | | `credentials.edgeConnect.password` | Edge Connect password (required) | `""` | ## Security Considerations 1. Always change default passwords in production 2. Use secrets management solutions for sensitive data 3. Enable TLS via ingress configuration 4. Configure proper RBAC if needed ## Troubleshooting 1. Check the Garm logs: ```bash kubectl logs -l app.kubernetes.io/name=garm ``` 2. Verify the init job status: ```bash kubectl get jobs -l app.kubernetes.io/name=garm ``` 3. Check the ingress configuration: ```bash kubectl get ingress -l app.kubernetes.io/name=garm ``` ## Uninstalling the Chart To uninstall/delete the `garm` deployment: ```bash helm delete garm ``` Note: This will not delete the PVC. To delete the PVC as well: ```bash kubectl delete pvc -l app.kubernetes.io/name=garm ```