122 lines
No EOL
3.6 KiB
Markdown
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
|
|
``` |