GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - cncf/devstats-helm: 📈DevStats deployment on Kubernetes using Equinix servers and Helm, CoreDNS, containerd, MetalLB, OpenEBS, nginx-ingress, nginx, cert-manager, nfs-server-provisioner.

BranchesTags
Open more actions menu

Latest commit

 

History

1,191 Commits
1,191 Commits

Folders and files

NameName
Last commit message
Last commit date
.github/ISSUE_TEMPLATE
.github/ISSUE_TEMPLATE
 
 
akamai
akamai
 
 
cert
cert
 
 
devstats-helm
devstats-helm
 
 
equinix
equinix
 
 
k8s
k8s
 
 
manifests
manifests
 
 
oci
oci
 
 
prod
prod
 
 
scripts
scripts
 
 
test
test
 
 
.gitignore
.gitignore
 
 
ADDING_NEW_PROJECTS.md
ADDING_NEW_PROJECTS.md
 
 
ADD_ORG_REPO.md
ADD_ORG_REPO.md
 
 
ARCHIVING.md
ARCHIVING.md
 
 
BACKUPS.md
BACKUPS.md
 
 
CODE_OF_CONDUCT.md
CODE_OF_CONDUCT.md
 
 
CONTRIBUTING.md
CONTRIBUTING.md
 
 
CONTRIBUTORS.md
CONTRIBUTORS.md
 
 
GRADUATING.md
GRADUATING.md
 
 
INSTALL.md
INSTALL.md
 
 
ISSUE_TEMPLATE.md
ISSUE_TEMPLATE.md
 
 
LICENSE
LICENSE
 
 
PULL_REQUEST_TEMPLATE.md
PULL_REQUEST_TEMPLATE.md
 
 
README.md
README.md
 
 
SSL.old
SSL.old
 
 
SSL.old2
SSL.old2
 
 
akamai-todo.md
akamai-todo.md
 
 
current_context.sh
current_context.sh
 
 
devstats-linodes-migration-step-by-step.md
devstats-linodes-migration-step-by-step.md
 
 
devstats-linodes-migration.md
devstats-linodes-migration.md
 
 
find.sh
find.sh
 
 
headlamp.sh
headlamp.sh
 
 
orphan_restore_seq.sh
orphan_restore_seq.sh
 
 
reinit_seq.sh
reinit_seq.sh
 
 
switch_context.sh
switch_context.sh
 
 

Repository files navigation

DevStats deployment on Akamai Cloud (Linode) dedicated Kubernetes nodes using Helm.

This is deployed:

  • CNCF prod, CNCF test, CDF, GraphQL.

Current architecture (since 2026-08, migrated from Oracle OCI)

  • 8 × Linode g7-dedicated-256-56 (56 vCPU, 256 GB RAM, 5 TB NVMe each), region us-ord, VPC 10.60.0.0/24:
    • devstats-compute-01 (10.60.0.31) - Kubernetes master + web/ingress,
    • devstats-compute-02 (10.60.0.32), devstats-compute-03 (10.60.0.33) - web/ingress + sync workers,
    • devstats-prod-db-01..03 (10.60.0.11-13) - prod Patroni PostgreSQL (leader + 2 replicas),
    • devstats-test-db-01..02 (10.60.0.21-22) - test Patroni PostgreSQL (leader + 1 replica).
  • Kubernetes 1.36.x installed with kubeadm, flannel CNI, /22 pod CIDRs, up to 1024 pods per node.
  • ingress-nginx v1.15.1 (chart 4.15.1), two independent controllers/classes: nginx-prod + nginx-test.
  • cert-manager with per-namespace Let's Encrypt issuers; TLS certificates are bucketed per domain (a domain that cannot pass ACME validation can never block certificate issuance for other domains).
  • Two Linode NodeBalancers (TCP pass-through 80/443 → ingress NodePorts): prod 172.233.210.24, test 172.233.210.165.
  • Storage: OpenEBS (openebs-hostpath on /data, 4.8 TB btrfs per node) + OpenEBS dynamic NFS provisioner (shared backups volume).
  • PostgreSQL 17 via Patroni (Zalando spilo images), streaming replication, sync/backup jobs run as Kubernetes CronJobs.
  • Namespaces: devstats-prod (~240 projects) and devstats-test (~13 projects).

Installation

The complete, command-by-command install + migration runbook (infrastructure creation, Kubernetes, storage, Patroni, ingress, certificates, restores, DNS cutover, validation) is in devstats-linodes-migration-step-by-step.md.

Helper scripts for the Linode infrastructure live in akamai/.

Adding/archiving projects, backups and other operational docs: ADDING_NEW_PROJECTS.md, ARCHIVING.md, BACKUPS.md, GRADUATING.md, ADD_ORG_REPO.md.

Images: Rust port (since 2026-09-12)

DevStats binaries run from the Rust port (devstatscode/rust): every image that contains DevStats binaries is deployed under its -rust name (devstats-prod-rust, devstats-minimal-prod-rust, devstats-test-rust, devstats-minimal-test-rust, devstats-api-prod-rust, devstats-api-test-rust, devstats-reports-rust, devstats-tests-rust) - this is what devstats-helm/values.yaml and the runbooks here use. Images without DevStats binaries (grafana, patroni, static pages, backups page) keep their names; devstats-static-{prod,test} carry the Go replacer/sqlitedb/runq only for REINIT_SHARED_GRAFANA - the shared Grafana data (devstats/devel/create_grafana_shared_data.sh) ships the Rust ones for the grafana pods. The Go images are still built and pushed under their original names (lukaszgryglicki/devstats-prod, ...) as the rollback path: drop the -rust suffix in the *Image values (or kubectl set image the CronJobs/Deployments).

Historical deployments

  • Oracle Cloud Infrastructure (2025-2026): oci/README_oci.md + oci/ scripts.
  • Equinix Metal: equinix/README_equinix.md.
  • Packet (pre-Equinix): equinix/README-prev.md.

About

📈DevStats deployment on Kubernetes using Equinix servers and Helm, CoreDNS, containerd, MetalLB, OpenEBS, nginx-ingress, nginx, cert-manager, nfs-server-provisioner.

Resources

Readme
Apache-2.0 license

Code of conduct

Code of conduct

Contributing

Contributing
Activity
Custom properties

Stars

18 stars

Watchers

3 watching

Forks

12 forks
Report repository

Releases

Packages

Used by

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.