garm-helm/charts/garm/README.md

122 lines
No EOL
3.6 KiB
Markdown

# 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
```