Skip to main content

Installation Guide

This guide walks you through installing the PipeOps Kubernetes Agent using various methods. Choose the installation method that best fits your environment and requirements.

tip

For detailed technical documentation and advanced configuration options, visit the PipeOps Agent Documentation.

Prerequisites

Before installing the agent, ensure your system meets these requirements:

System Requirements

  • CPU: Minimum 2 cores (recommended for cluster creation)
  • Memory: Minimum 2GB RAM
  • Disk Space: At least 20GB available
  • Operating System: Linux (Ubuntu 18.04+, CentOS 7+, RHEL 7+), macOS 10.14+, or Windows with WSL2

Software Dependencies

  • curl or wget for downloading the installer
  • bash shell (version 4.0+)
  • sudo privileges for system-level operations
  • Internet connectivity for downloading components

Network Requirements

  • Outbound HTTPS (443) access to:
    • api.pipeops.sh (PipeOps API)
    • get.pipeops.dev (installer scripts)
    • ghcr.io (container images and Helm charts)
  • Ports for monitoring stack (if enabled):
    • 9090 (Prometheus)
    • 3000 (Grafana)
    • 3100 (Loki)

Authentication

You'll need:

  • A PipeOps account (Sign up here)
  • Your PipeOps API token (obtain from your account settings)

The intelligent installer is the easiest way to get started. It automatically detects your environment and installs the appropriate components.

One-Line Installation

curl -fsSL https://get.pipeops.dev/k8-install.sh | bash

This command will:

  1. Analyze your system resources (CPU, memory, disk)
  2. Detect your environment (Docker, LXC, WSL, macOS, bare metal)
  3. Automatically select the optimal Kubernetes distribution (k3s, minikube, k3d, kind)
  4. Install the cluster and all required components
  5. Deploy the PipeOps agent as a pod in your cluster
  6. Auto-install monitoring stack (Metrics Server, VPA, Prometheus, Loki, Grafana, OpenCost)
  7. Auto-install NGINX Ingress Controller (if not present)
  8. Enable Gateway Proxy by default for automatic ingress route management

Interactive Setup

The installer will prompt you for:

Enter your PipeOps API token: ********
Enter cluster name (optional, default: auto-generated): my-cluster
Enable monitoring stack? (y/n, default: y): y

Non-Interactive Installation

For automation or CI/CD pipelines, use environment variables:

export PIPEOPS_TOKEN="your-pipeops-api-token"
export CLUSTER_NAME="production-cluster"
export CLUSTER_TYPE="auto" # Options: auto, k3s, minikube, k3d, kind

curl -fsSL https://get.pipeops.dev/k8-install.sh | bash

The installer automatically detects the best Kubernetes distribution when CLUSTER_TYPE=auto (default) based on:

  • Available system resources
  • Environment type (Docker, LXC, WSL, macOS, bare metal)
  • Operating system capabilities

Helm Installation (Kubernetes Clusters)

If you already have a Kubernetes cluster, Helm provides the most flexible installation method. The PipeOps agent chart is available as an OCI artifact in GitHub Container Registry.

Component Auto-Installation Behavior

When installing via Helm or Kubernetes manifests, the agent does NOT auto-install monitoring components by default. It only establishes secure tunnel and cluster management capabilities, assuming you have existing infrastructure.

To enable automatic component installation (Metrics Server, VPA, Prometheus, Grafana, etc.):

--set agent.autoInstallComponents=true

Minimal Installation

Install with just the required configuration:

helm install pipeops-agent oci://ghcr.io/pipeopshq/pipeops-agent \
--set agent.pipeops.token="your-api-token" \
--set agent.cluster.name="your-cluster-name" \
--namespace pipeops-system \
--create-namespace

This installs:

  • PipeOps agent pod with WebSocket connectivity
  • Gateway proxy watcher (enabled by default)
  • Health check and metrics endpoints
  • Does NOT install monitoring stack (use next option or enable autoInstallComponents)

Installation with Auto-Install Components

Enable automatic installation of monitoring and cluster components:

helm install pipeops-agent oci://ghcr.io/pipeopshq/pipeops-agent \
--set agent.pipeops.token="your-api-token" \
--set agent.cluster.name="production-cluster" \
--set agent.autoInstallComponents=true \
--namespace pipeops-system \
--create-namespace

This will automatically install:

  • Metrics Server (for pod/node metrics)
  • Vertical Pod Autoscaler (VPA)
  • Prometheus (monitoring)
  • Loki (log aggregation)
  • Grafana (visualization)
  • NGINX Ingress Controller (if not present)

Installation with Custom Values

Create a values.yaml file for advanced configuration:

# values.yaml
agent:
cluster:
name: "production-cluster"
pipeops:
token: "your-api-token"
apiUrl: "https://api.pipeops.sh"
resources:
limits:
cpu: "500m"
memory: "512Mi"
requests:
cpu: "250m"
memory: "256Mi"

monitoring:
enabled: true
prometheus:
enabled: true
persistence:
enabled: true
size: 10Gi
grafana:
enabled: true
persistence:
enabled: true
size: 5Gi
loki:
enabled: true
persistence:
enabled: true
size: 10Gi

Install with your custom values:

helm install pipeops-agent oci://ghcr.io/pipeopshq/pipeops-agent \
-f values.yaml \
--namespace pipeops-system \
--create-namespace

Kubernetes Manifest Installation

For manual deployment without Helm, you can extract manifests from the Helm chart or use kubectl directly with the OCI registry.

Extract Manifests from Helm Chart

# Pull the chart and extract manifests
helm template pipeops-agent oci://ghcr.io/pipeopshq/pipeops-agent \
--set agent.pipeops.token="your-api-token" \
--set agent.cluster.name="your-cluster-name" \
--namespace pipeops-system > pipeops-agent.yaml

Configure the Manifest

Edit the manifest to add your API token:

# Create a secret with your API token
kubectl create secret generic pipeops-agent-config \
--from-literal=token=your-api-token \
--from-literal=cluster-name=your-cluster-name \
--namespace pipeops-system \
--dry-run=client -o yaml > secret.yaml

# Apply the secret
kubectl apply -f secret.yaml

Deploy the Agent

kubectl apply -f pipeops-agent.yaml

Docker Container Installation

Run the agent as a standalone Docker container (requires existing Kubernetes cluster).

Basic Docker Run

docker run -d \
--name pipeops-agent \
--restart always \
-e PIPEOPS_TOKEN="your-api-token" \
-e CLUSTER_NAME="docker-cluster" \
-e KUBERNETES_SERVICE_HOST="your-k8s-api-host" \
-e KUBERNETES_SERVICE_PORT="6443" \
-v $HOME/.kube/config:/config/.kube/config:ro \
ghcr.io/pipeopshq/pipeops-k8-agent:latest

Docker Compose

Create a docker-compose.yml:

version: '3.8'

services:
pipeops-agent:
image: ghcr.io/pipeopshq/pipeops-k8-agent:latest
container_name: pipeops-agent
restart: always
environment:
- PIPEOPS_TOKEN=your-api-token
- CLUSTER_NAME=docker-cluster
- PIPEOPS_API_URL=https://api.pipeops.sh
- KUBERNETES_IN_CLUSTER=false
volumes:
- $HOME/.kube/config:/config/.kube/config:ro
- ./agent-config.yaml:/config/config.yaml:ro
networks:
- pipeops-network

networks:
pipeops-network:
driver: bridge

Start the agent:

docker-compose up -d

Binary Installation

Install the agent binary directly on your system.

Download the Binary

For Linux (amd64):

curl -LO https://github.com/PipeOpsHQ/pipeops-k8-agent/releases/latest/download/pipeops-agent-linux-amd64
chmod +x pipeops-agent-linux-amd64
sudo mv pipeops-agent-linux-amd64 /usr/local/bin/pipeops-agent

For Linux (arm64):

curl -LO https://github.com/PipeOpsHQ/pipeops-k8-agent/releases/latest/download/pipeops-agent-linux-arm64
chmod +x pipeops-agent-linux-arm64
sudo mv pipeops-agent-linux-arm64 /usr/local/bin/pipeops-agent

For macOS (amd64):

curl -LO https://github.com/PipeOpsHQ/pipeops-k8-agent/releases/latest/download/pipeops-agent-darwin-amd64
chmod +x pipeops-agent-darwin-amd64
sudo mv pipeops-agent-darwin-amd64 /usr/local/bin/pipeops-agent

For macOS (arm64/M1/M2):

curl -LO https://github.com/PipeOpsHQ/pipeops-k8-agent/releases/latest/download/pipeops-agent-darwin-arm64
chmod +x pipeops-agent-darwin-arm64
sudo mv pipeops-agent-darwin-arm64 /usr/local/bin/pipeops-agent

Create Configuration File

sudo mkdir -p /etc/pipeops
sudo tee /etc/pipeops/config.yaml > /dev/null <<EOF
agent:
cluster_name: "my-cluster"

pipeops:
api_url: "https://api.pipeops.sh"
token: "your-api-token"

kubernetes:
in_cluster: false
kubeconfig: "$HOME/.kube/config"

logging:
level: "info"
format: "json"
EOF

Create systemd Service

For Linux systems with systemd:

sudo tee /etc/systemd/system/pipeops-agent.service > /dev/null <<EOF
[Unit]
Description=PipeOps Kubernetes Agent
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/pipeops-agent --config /etc/pipeops/config.yaml
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

Enable and start the service:

sudo systemctl daemon-reload
sudo systemctl enable pipeops-agent
sudo systemctl start pipeops-agent

Verification

After installation, verify that the agent is running correctly.

Check Agent Status

For Kubernetes deployments:

kubectl get pods -n pipeops-system
kubectl logs deployment/pipeops-agent -n pipeops-system

For systemd service:

sudo systemctl status pipeops-agent
sudo journalctl -u pipeops-agent -f

For Docker:

docker ps | grep pipeops-agent
docker logs pipeops-agent

Verify Connection to PipeOps

Check the agent logs for successful connection:

# Kubernetes
kubectl logs -n pipeops-system deployment/pipeops-agent | grep "connected"

# Systemd
sudo journalctl -u pipeops-agent | grep "connected"

# Docker
docker logs pipeops-agent | grep "connected"

You should see messages indicating:

  • Successful authentication with PipeOps API
  • Tunnel established
  • Agent registered with cluster name

Check Monitoring Stack (if enabled)

kubectl get pods -n pipeops-monitoring

# Expected output:
# NAME READY STATUS RESTARTS AGE
# prometheus-server-xxxxx 1/1 Running 0 5m
# grafana-xxxxx 1/1 Running 0 5m
# loki-xxxxx 1/1 Running 0 5m

Access Monitoring Dashboards

Port-forward to access Grafana:

kubectl port-forward svc/grafana 3000:3000 -n pipeops-monitoring

Then open http://localhost:3000 in your browser.

Default credentials (change after first login):

  • Username: admin
  • Password: pipeops (or check your Helm values)

Post-Installation

Update Agent Configuration

To update agent configuration after installation:

Kubernetes/Helm:

helm upgrade pipeops-agent pipeops/pipeops-agent \
--set agent.pipeops.token="new-token" \
--namespace pipeops-system \
--reuse-values

Binary/systemd:

sudo nano /etc/pipeops/config.yaml
sudo systemctl restart pipeops-agent

Enable/Disable Monitoring

To add monitoring to an existing agent installation:

helm upgrade pipeops-agent pipeops/pipeops-agent \
--set monitoring.enabled=true \
--namespace pipeops-system \
--reuse-values

Troubleshooting Installation

Agent Pod Not Starting

Check pod events and logs:

kubectl describe pod -n pipeops-system -l app=pipeops-agent
kubectl logs -n pipeops-system -l app=pipeops-agent

Common issues:

  • Invalid API token (check secret configuration)
  • Network connectivity issues (verify firewall rules)
  • Insufficient resources (check node capacity)

Connection to PipeOps API Fails

Verify network connectivity:

curl -v https://api.pipeops.sh/health

Check proxy settings if behind a corporate firewall.

Kubernetes Cluster Not Created

For new installations, check the installer logs:

# The installer creates logs in /var/log/pipeops/
sudo cat /var/log/pipeops/install.log

Common issues:

  • Insufficient system resources
  • Port conflicts (6443, 10250, etc.)
  • Docker/containerd not installed

Next Steps