Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
128 changes: 128 additions & 0 deletions 0.1.0-alpha/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
# Agones Headlamp Plugin

The **Agones Headlamp Plugin** integrates [Agones](https://agones.dev) game server orchestration directly into [Headlamp](https://headlamp.dev). It gives cluster operators and game backend engineers a visual dashboard to inspect fleets, game servers, and autoscalers β€” without dropping into `kubectl` to decode custom resource YAML.

Agones is an open-source, batteries-included, multiplayer dedicated game server scaling and orchestration platform built on Kubernetes. This plugin translates the Agones custom resources (`Fleet`, `GameServer`, `FleetAutoscaler`, `GameServerAllocation`) into interactive Headlamp UI views.

**IMPORTANT:** This plugin is in alpha state!

## Key Features

- **Overview Dashboard**: At-a-glance summary of all Agones resources across the cluster β€” game server state counts, fleet readiness, and autoscaler activity in one place.
- **Fleet Management**: List and detail views for `Fleet` resources, including replica status bars, scheduling strategy, and rollout configuration.
- **Game Server Views**: Per-server detail pages with colour-coded lifecycle state chips (Ready, Allocated, Unhealthy, …), address and port tables, counters and lists, and pod previews.
- **Fleet Autoscalers**: Inspect `FleetAutoscaler` policies (Buffer, Webhook, Counter, List, Schedule, Chain) with a plain-English explainer of the current scaling status.
- **Allocations from the UI**: Create `GameServerAllocation` requests directly from Headlamp via a guided dialog β€” selectors, scheduling, counters, lists, and priorities included.
- **Map View**: Visual graph showing the relationships between Fleets, GameServers, and their backing Pods.
- **Agones Detection Guard**: On clusters without Agones installed, the plugin shows a friendly install banner instead of empty views.
- **Allocated-Session Protection**: A prominent warning banner on `Allocated` game servers reminds operators that live player sessions may be connected before they edit or delete anything.

---

## Overview Dashboard

The Overview page aggregates the state of your entire Agones installation: total game servers grouped by lifecycle state, fleet replica health, and autoscaler summaries.

### Capabilities:

- Game server counts ordered by lifecycle stage (`PortAllocation` β†’ `Creating` β†’ `Starting` β†’ `Ready` β†’ `Allocated` β†’ …).
- Quick navigation into any Fleet, GameServer, or FleetAutoscaler.

---

## Fleets & Game Servers

Fleets are the heart of Agones β€” they keep a warm pool of ready game servers available for allocation. The plugin provides full lifecycle visibility for both fleets and the individual game servers they manage.

### Capabilities:

- Fleet detail view with replica status (ready / allocated / reserved), scheduling strategy, and the game servers belonging to the fleet.
- GameServer detail view with state chip, node address and ports, counters and lists, eviction settings, and a preview of the backing pod.
- The `agones.dev/fleet` label links each game server back to its owning fleet.

---

## Fleet Autoscalers

The FleetAutoscaler views decode every Agones autoscaling policy type into readable tables β€” no more mentally parsing nested YAML.

### Capabilities:

- Buffer, Webhook, Counter, List, Schedule, and Chain policies rendered with their effective parameters.
- Live status: current vs. desired replicas, whether the autoscaler is able to scale, and whether scaling is limited.

---

## Game Server Allocations

Allocating a game server for a match normally requires crafting a `GameServerAllocation` manifest by hand. The plugin builds it for you.

### Capabilities:

- Guided allocation dialog with label selectors, game server state, scheduling strategy, counter/list filters, mutations, and priorities.
- Validation-friendly: empty or malformed entries are dropped instead of producing broken manifests.

---

## Demo

A visual walkthrough of the plugin is available in the repository's pull requests and the [Agones Headlamp Plugin repository](https://github.com/agones-dev/headlamp-plugin).

## Prerequisites & Agones Setup

To use this plugin you need Agones installed in your Kubernetes cluster.

### 1. Verify the Agones controllers

```bash
kubectl get pods -n agones-system
```

### 2. Check the Agones CRDs

```bash
kubectl api-resources --api-group=agones.dev
```

If Agones is not installed, follow the [official installation guide](https://agones.dev/site/docs/installation/install-agones/) β€” the plugin will point you there too.

---

## Installation & Development

### Installing via Headlamp Catalog (Desktop)

1. Open your Headlamp desktop application.
2. Navigate to the **Plugin Catalog** from the main navigation.
3. Search for **Agones** and click **Install**.
4. Reload the UI to activate the **Agones** section in the sidebar.

### Local Development Setup

To test or contribute to the Agones plugin locally:

```bash
# Clone the plugin repository
git clone https://github.com/agones-dev/headlamp-plugin.git
cd headlamp-plugin

# Install npm dependencies
npm ci

# Run unit tests with Vitest
npm run test

# Start the Headlamp development server with hot-reloading enabled
npm run start
```

See [CONTRIBUTING.md](https://github.com/agones-dev/headlamp-plugin/blob/main/CONTRIBUTING.md) for the full development workflow.

---

## References & Official Links

- [Agones Official Website & Documentation](https://agones.dev)
- [Agones GitHub Repository](https://github.com/agones-dev/agones)
- [Agones Headlamp Plugin Repository](https://github.com/agones-dev/headlamp-plugin)
- [Headlamp Documentation](https://headlamp.dev)
24 changes: 24 additions & 0 deletions 0.1.0-alpha/artifacthub-pkg.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: 0.1.0-alpha
name: "headlamp_agones"
displayName: Agones
createdAt: "2026-08-02T19:00:00Z"
logoURL: "https://raw.githubusercontent.com/agones-dev/agones/main/docs/agones.png"
description: A Headlamp plugin for visualising and managing Agones game servers, fleets, and autoscalers in Kubernetes.
changes:
- kind: added
description: "Add Overview dashboard summarising Agones resources across the cluster."
- kind: added
description: "Add Fleet, GameServer, and FleetAutoscaler list and detail views with colour-coded lifecycle state chips."
- kind: added
description: "Add GameServerAllocation dialog to allocate game servers directly from the UI."
- kind: added
description: "Add Map view showing relationships between Fleets, GameServers, and Pods."
- kind: added
description: "Add CRD detection guard that shows an install banner on clusters without Agones."
- kind: added
description: "Add Allocated-state warning banner on the GameServer detail view to protect active game sessions."
annotations:
headlamp/plugin/archive-url: "https://github.com/agones-dev/headlamp-plugin/releases/download/v0.1.0-alpha/agones-plugin-0.1.0-alpha.tar.gz"
headlamp/plugin/archive-checksum: "SHA256:7b2c3141e72538d773cbd91ea82490d391ee07132bb01c184620346f2b02af09"
headlamp/plugin/version-compat: ">=0.22"
headlamp/plugin/distro-compat: in-cluster,web,docker-desktop,desktop
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "agones-plugin",
"version": "0.1.0",
"description": "Your Headlamp plugin",
"version": "0.1.0-alpha",
"description": "A Headlamp plugin for visualising and managing Agones game servers, fleets, and autoscalers in Kubernetes",
"scripts": {
"start": "headlamp-plugin start",
"build": "headlamp-plugin build",
Expand Down