Configuration

GAGOS is configured through environment variables. This page documents all available options.

Environment Variables

Variable Default Description
GAGOS_HOST 0.0.0.0 Listen address for the web server
GAGOS_PORT 8080 Listen port for the web server
GAGOS_PASSWORD (required) Authentication password
GAGOS_RUNTIME docker Runtime environment: docker or kubernetes
GAGOS_LOG_LEVEL info Log level: debug, info, warn, error

Authentication

GAGOS requires password authentication. The password must be set via the GAGOS_PASSWORD environment variable.

Docker

docker run -e GAGOS_PASSWORD="your-secure-password" gagos:latest

Kubernetes

In Kubernetes, the password is typically stored in a Secret:

apiVersion: v1
kind: Secret
metadata:
  name: gagos-auth
  namespace: gagos
type: Opaque
data:
  password: eW91ci1zZWN1cmUtcGFzc3dvcmQ=  # base64 encoded

Then reference in the Deployment:

env:
  - name: GAGOS_PASSWORD
    valueFrom:
      secretKeyRef:
        name: gagos-auth
        key: password

Auto-Generated Password

The all-in-one Kubernetes manifest auto-generates a password on first deploy if the Secret doesn't exist.

Runtime Detection

The GAGOS_RUNTIME variable affects:

Kubernetes RBAC

For Kubernetes features, GAGOS needs appropriate RBAC permissions. The default ClusterRole includes:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: gagos
rules:
  - apiGroups: [""]
    resources:
      - namespaces
      - nodes
      - pods
      - pods/log
      - pods/exec
      - services
      - configmaps
      - secrets
      - persistentvolumeclaims
      - events
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  - apiGroups: ["apps"]
    resources:
      - deployments
      - daemonsets
      - statefulsets
      - replicasets
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  - apiGroups: ["batch"]
    resources:
      - jobs
      - cronjobs
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  - apiGroups: ["networking.k8s.io"]
    resources:
      - ingresses
    verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  - apiGroups: ["autoscaling"]
    resources:
      - horizontalpodautoscalers
    verbs: ["get", "list", "watch"]

Network Capabilities

For ping and traceroute to work, GAGOS needs NET_RAW capability:

Docker

docker run --cap-add=NET_RAW gagos:latest

Kubernetes

securityContext:
  capabilities:
    add:
      - NET_RAW

Persistent Storage

GAGOS stores CI/CD data (pipelines, jobs, SSH hosts) in a SQLite database. For persistence in Kubernetes:

volumeMounts:
  - name: data
    mountPath: /data
volumes:
  - name: data
    persistentVolumeClaim:
      claimName: gagos-data

Resource Limits

Recommended resource limits:

resources:
  limits:
    cpu: "500m"
    memory: "512Mi"
  requests:
    cpu: "100m"
    memory: "128Mi"

Increase limits if running heavy CI/CD workloads or large Kubernetes queries.