Skip to content
Merged
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
1 change: 1 addition & 0 deletions .context/agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,4 @@ This directory contains ready-to-customize playbooks for AI agents collaborating
- [Documentation Index](../docs/README.md)
- [Agent Knowledge Base](../../AGENTS.md)
- [Contributor Guidelines](../../CONTRIBUTING.md)
- [Release Blog Post (GLPI 12.0.0-rc1)](../../content/en/blog/glpi-12-0-0-rc1.md)
2 changes: 2 additions & 0 deletions .context/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ Welcome to the repository knowledge base. Start with the project overview, then
**Blog Posts Reference**

The following blog posts have been added to the documentation index:
- [GLPI 12.0.0-rc1 and Helm Chart 2.12.0: Subchart Modernization, Security Hardening, and High Availability](../../content/en/blog/glpi-12-0-0-rc1.md) (en) — EF-TECH release of GLPI 12.0.0-rc1 and Helm Chart 2.12.0 with Valkey subchart, PDB, HPA, S3 backup, and readOnlyRootFilesystem hardening
- [GLPI 12.0.0-rc1 e Helm Chart 2.12.0: modernização de subcharts, hardening e alta disponibilidade](../../content/pt-br/blog/glpi-12-0-0-rc1.md) (pt-br) — Lançamento da EF-TECH do GLPI 12.0.0-rc1 e Helm Chart 2.12.0 com subchart Valkey, PDB, HPA, backup S3 e hardening com readOnlyRootFilesystem
- [Understanding P99 and Tail Latency](../../content/en/blog/p99-tail-latency/index.md) (en) — Why the mean lies and how to eliminate tail latency bottlenecks in production
- [P99 e Latência de Cauda (Tail Latency)](../../content/pt-br/blog/p99-tail-latency/index.md) (pt-br) — Por que a média engana e como mitigar gargalos de latência de cauda em produção
- [Understanding RFC 10008: The HTTP QUERY Method](../../content/en/blog/rfc-10008-http-query.md) (en) — Standardizing HTTP QUERY as a safe and idempotent method with a body payload
Expand Down
5 changes: 3 additions & 2 deletions .context/plans/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ This directory contains plans for coordinating work across documentation and pla
1. [Add Whatsapp Link](./add-whatsapp-link.md)
2. [Blog Hermes K8s Install](./blog-hermes-k8s-install.md)
3. [Blog Image Support](./blog-image-support.md)
4. [Oracle Always Free Post](./oracle-always-free-post.md)
5. [Rfc 10008 Blog Post](./rfc-10008-blog-post.md)
4. [Glpi 12 0 0 Rc1 Announcement](./glpi-12-0-0-rc1-announcement.md)
5. [Oracle Always Free Post](./oracle-always-free-post.md)
6. [Rfc 10008 Blog Post](./rfc-10008-blog-post.md)

## How To Create Or Update Plans
- Run "ai-context plan <name>" to scaffold a new plan template.
Expand Down
100 changes: 100 additions & 0 deletions .context/plans/glpi-12-0-0-rc1-announcement.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
status: active
generated: 2026-09-08
agents:
- type: "documentation-writer"
role: "Draft clear, comprehensive announcement blog posts in PT-BR and EN"
- type: "frontend-specialist"
role: "Generate cover PNG image and integrate media into Hugo posts"
- type: "devops-specialist"
role: "Validate Hugo build, link checks, and prepare git branch and PR"
docs:
- "project-overview.md"
- "architecture.md"
- "development-workflow.md"
phases:
- id: "phase-1"
name: "Discovery & Alignment"
prevc: "P"
agent: "documentation-writer"
- id: "phase-2"
name: "Implementation & Iteration"
prevc: "E"
agent: "documentation-writer"
- id: "phase-3"
name: "Validation & Handoff"
prevc: "V"
agent: "devops-specialist"
---

# GLPI 12.0.0-rc1 Blog Post Announcement Plan

> Create EN and PT-BR blog posts for GLPI 12.0.0-rc1 release, generate PNG cover image, validate with Hugo, and prepare PR.

## Task Snapshot
- **Primary goal:** Publish announcement blog posts in Portuguese (`content/pt-br/blog/glpi-12-0-0-rc1.md`) and English (`content/en/blog/glpi-12-0-0-rc1.md`) covering GLPI 12.0.0-rc1 / Helm Chart 2.12.0 from EF-TECH, with a generated featured PNG image and validated links.
- **Success signal:** Clean Hugo production build (`hugo --gc --minify`), no broken images or links, both language versions published, and a clean Git commit / PR ready.
- **Key references:**
- [Documentation Index](../docs/README.md)
- [Agent Handbook](../agents/README.md)
- [Plans Index](./README.md)
- [GitHub Release eftechcombr/glpi](https://github.com/eftechcombr/glpi/releases/tag/v12.0.0-rc1)

## Codebase Context
- **Hugo Site:** Multilingual setup with `pt-br` as default and `en` language section.
- **Blog Post Location:** `content/pt-br/blog/` and `content/en/blog/`.
- **Assets:** `static/img/blog/glpi-12-0-0-rc1/cover.png` generated via Python PIL script.

## Agent Lineup
| Agent | Role in this plan | Playbook | First responsibility focus |
| --- | --- | --- | --- |
| Documentation Writer | Technical content creation | [Documentation Writer](../agents/documentation-writer.md) | Draft accurate, engaging release notes in PT-BR and EN |
| Frontend Specialist | Media & Image generation | [Frontend Specialist](../agents/frontend-specialist.md) | Design and generate cover PNG image matching site theme |
| DevOps Specialist | Build & verification | [Devops Specialist](../agents/devops-specialist.md) | Validate Hugo build, verify links, manage git PR |

## Documentation Touchpoints
| Guide | File | Primary Inputs |
| --- | --- | --- |
| Project Overview | [project-overview.md](../docs/project-overview.md) | Site structure, multilingual content mapping |
| Development Workflow | [development-workflow.md](../docs/development-workflow.md) | Hugo commands, link trailing slash requirements, PR process |

## Working Phases

### Phase 1 — Discovery & Alignment
> **Primary Agent:** `documentation-writer` - [Playbook](../agents/documentation-writer.md)

**Objective:** Inspect release details from `eftechcombr/glpi`, analyze existing blog post patterns (`glpi-11-0-8.md`), and prepare structured content outline.

**Tasks**
| # | Task | Agent | Status | Deliverable |
|---|------|-------|--------|-------------|
| 1.1 | Analyze GLPI 12.0.0-rc1 release notes and PR details | `documentation-writer` | completed | Content outline |
| 1.2 | Design cover image concept and specifications | `frontend-specialist` | completed | Python PIL generation script |

---

### Phase 2 — Implementation & Iteration
> **Primary Agent:** `documentation-writer` - [Playbook](../agents/documentation-writer.md)

**Objective:** Generate PNG cover image and author comprehensive blog posts in PT-BR and EN with proper frontmatter, code snippets, and internal links.

**Tasks**
| # | Task | Agent | Status | Deliverable |
|---|------|-------|--------|-------------|
| 2.1 | Generate 1200x630 cover PNG at `static/img/blog/glpi-12-0-0-rc1/cover.png` | `frontend-specialist` | pending | Cover image PNG |
| 2.2 | Write `content/pt-br/blog/glpi-12-0-0-rc1.md` | `documentation-writer` | pending | Portuguese blog post |
| 2.3 | Write `content/en/blog/glpi-12-0-0-rc1.md` | `documentation-writer` | pending | English blog post |

---

### Phase 3 — Validation & Handoff
> **Primary Agent:** `devops-specialist` - [Playbook](../agents/devops-specialist.md)

**Objective:** Validate Hugo build, verify all links and image paths, commit changes, create PR and monitor checks.

**Tasks**
| # | Task | Agent | Status | Deliverable |
|---|------|-------|--------|-------------|
| 3.1 | Test build with `hugo --gc --minify` | `devops-specialist` | pending | Build verification |
| 3.2 | Check image rendering and link integrity | `devops-specialist` | pending | No 404 or broken links |
| 3.3 | Create git branch, commit, push, create PR and verify CI | `devops-specialist` | pending | Merged or approved PR |
153 changes: 153 additions & 0 deletions content/en/blog/glpi-12-0-0-rc1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
---
title: "GLPI 12.0.0-rc1 and Helm Chart 2.12.0: Subchart Modernization, Security Hardening, and High Availability"
description: "EF-TECH announces the release of GLPI 12.0.0-rc1 and Helm Chart 2.12.0. Discover key updates: Valkey subchart, PDB, HPA, S3 backup, and readOnlyRootFilesystem hardening."
summary: "EF-TECH releases Docker images for GLPI 12.0.0-rc1 and Helm Chart 2.12.0, introducing Valkey subchart support, external cache options, PDB/HPA for php-fpm and nginx, S3 backup CronJob, and enterprise security hardening."
date: 2026-09-06
draft: false
tags: ["glpi", "docker", "kubernetes", "helm", "cloud-native", "security"]
categories: ["infrastructure"]
featureimage: "/img/blog/glpi-12-0-0-rc1/cover.png"
featureimagecaption: "GLPI 12.0.0-rc1 and Helm Chart 2.12.0 from EF-TECH"
---

EF-TECH is excited to announce the release of **GLPI 12.0.0-rc1** (Release Candidate) alongside **Helm Chart version 2.12.0**. This release marks a significant architectural milestone in the evolution of EF-TECH's cloud-native GLPI distribution, bringing subchart modernization, native Valkey cache support, horizontal scalability, automated S3 backups, and enterprise-grade security hardening for Kubernetes clusters.

![GLPI 12.0.0-rc1 and Helm Chart 2.12.0](/img/blog/glpi-12-0-0-rc1/cover.png)

As a **Release Candidate**, this pre-release is designed for teams wanting to evaluate GLPI 12's upcoming capabilities, test new features in staging environments, and validate database and configuration migration paths ahead of the general availability release.

---

## Key Updates and New Features

### 1. Subchart Modernization: Valkey and MariaDB

To stay aligned with current open-source standards and ensure dependable lifecycle management:

- **Valkey Subchart (`helmforge/valkey`)**: Replaced the previous inline Redis subchart with **Valkey**, the high-performance open-source in-memory data store hosted under the Linux Foundation. Valkey handles GLPI session caching and background state efficiently.
- **MariaDB Subchart (`helmforge/mariadb`)**: Replaced inline MariaDB with the modernized and dedicated `helmforge/mariadb` subchart.
- **External Cache Configuration (`externalCache`)**: Added direct configuration parameters for teams deploying against managed cache clusters (such as AWS ElastiCache, Azure Redis, or independent Valkey/Redis instances).

### 2. High Availability and Scalability (PDB and HPA)

To ensure enterprise-grade resilience and smooth traffic handling under heavy loads:

- **PodDisruptionBudget (PDB)**: Added optional PDB configurations for both `php-fpm` and `nginx` pods. This guarantees minimum available replicas during voluntary disruptions like node drains, cluster maintenance, or node pool upgrades.
- **HorizontalPodAutoscaler (HPA)**: Added optional HPA v2 autoscaling support for `php-fpm` and `nginx`, automatically adjusting pod replicas according to CPU and memory utilization thresholds.
- **Workload Scheduling with `priorityClassName`**: Added `priorityClassName` support for GLPI-owned pods, ensuring Kubernetes prioritizes GLPI workload scheduling and prevents preemption by lower-priority workloads.

### 3. Security Hardening and Least Privilege

Security in Kubernetes environments is a core focus at EF-TECH:

- **Root Filesystem Hardening (`readOnlyRootFilesystem`)**: Added optional `readOnlyRootFilesystem: true` hardening, empirically tested and verified for GLPI's runtime needs using appropriate ephemeral volume mounts for temporary paths.
- **Nginx Attack Surface Reduction**: Removed unused volume mounts and database secrets from the Nginx container, strictly following the principle of least privilege.
- **Secret Separation for Databases**: The database password (`MARIADB_PASSWORD`) is now retrieved directly from the MariaDB subchart's Secret.
- **Existing Secret Support for External Databases**: When connecting to an `externalDatabase`, you can supply an `existingSecret` with fast-fail validation to ensure misconfigurations are detected before pods attempt to boot.

### 4. Operational Reliability and S3 Backup

- **Files Backup CronJob to S3-Compatible Storage**: Added a dedicated CronJob to automatically back up uploaded GLPI files and attachments (`/var/lib/glpi/files`) to S3-compatible storage (AWS S3, MinIO, Cloudflare R2, or Ceph).
- **Readiness-Gated Maintenance CronJob**: The maintenance CronJob now actively checks and waits for GLPI application and database readiness, preventing spurious errors during pod rollout or restarts.
- **Resource Presets (`resourcesPreset`)**: Added Bitnami-style resource tiers (`nano`, `micro`, `small`, `medium`, `large`, `xlarge`) to simplify pod resource allocations based on organizational workload requirements.
- **Chart Reorganization & Artifact Hub Compliance**: Chart files have been cleanly reorganized under the standard `helm/` directory structure, resolving all Artifact Hub metadata validations.

---

## Component Matrix

| Componente | Version | Source / Catalog |
|---|---|---|
| GLPI (Application) | `12.0.0-rc1` | [ghcr.io/eftechcombr/glpi](https://github.com/eftechcombr/glpi/packages) |
| Helm Chart | `2.12.0` | [eftech/glpi](https://github.com/eftechcombr/glpi/releases/tag/glpi-2.12.0) |
| Default Cache | Valkey | `helmforge/valkey` |
| Default Database | MariaDB | `helmforge/mariadb` |

---

## Installation and Upgrade Guide

### Upgrading via Helm Chart

Add or update the official EF-TECH Helm repository and run the upgrade:

```bash
# Add or update the EF-TECH Helm repository
helm repo add eftech https://eftechcombr.github.io/glpi/charts
helm repo update

# Install or upgrade to version 2.12.0
helm upgrade --install glpi eftech/glpi \
--namespace glpi \
--create-namespace \
--version 2.12.0
```

### Example `values.yaml` Configuration

Here is an example demonstrating the new high availability, hardening, and resource preset options:

```yaml
# Standardized resource tier
resourcesPreset: "medium"

# Filesystem security hardening
securityContext:
readOnlyRootFilesystem: true

# High availability with PodDisruptionBudget
podDisruptionBudget:
enabled: true
minAvailable: 1

# Horizontal Pod Autoscaling (HPA)
autoscaling:
enabled: true
minReplicas: 2
maxReplicas: 8
targetCPUUtilizationPercentage: 75
targetMemoryUtilizationPercentage: 80

# Kubernetes scheduling priority
priorityClassName: "system-cluster-critical"

# Modernized Valkey cache
valkey:
enabled: true

# S3-compatible files backup
backup:
files:
enabled: true
schedule: "0 2 * * *" # Daily at 02:00 UTC
s3:
endpoint: "https://s3.amazonaws.com"
bucket: "my-glpi-backup-bucket"
region: "us-east-1"
existingSecret: "s3-backup-credentials"
```

### Upgrading via Docker

If running standalone containers with Docker or Docker Compose:

```bash
docker pull ghcr.io/eftechcombr/glpi:12.0.0-rc1
```

---

## Useful Links

- [Official EF-TECH GLPI Repository on GitHub](https://github.com/eftechcombr/glpi)
- [GLPI 12.0.0-rc1 Release Notes](https://github.com/eftechcombr/glpi/releases/tag/v12.0.0-rc1)
- [Helm Chart 2.12.0 Release](https://github.com/eftechcombr/glpi/releases/tag/glpi-2.12.0)
- [Docker Image Packages and Releases](https://github.com/eftechcombr/glpi/packages)

---

## Enterprise Support & Consulting

**EF-TECH** specializes in architecting, deploying, and maintaining high-performance ITSM and Service Desk platforms on Kubernetes. We provide enterprise support, migration assistance, and continuous maintenance for containerized GLPI deployments.

Preparing for GLPI 12 or looking to modernize your ITSM infrastructure? [Contact our team](/en/contato/) to speak with an infrastructure specialist.
Loading
Loading