wazuh-operator

module
v0.0.0-...-cf30d46 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 25, 2026 License: Apache-2.0

README

Wazuh Kubernetes Operator

A Kubernetes operator for managing Wazuh clusters, providing a declarative way to deploy and configure Wazuh security monitoring platforms.

Features

  • Declarative Cluster Management - Define your entire Wazuh cluster using Kubernetes custom resources
  • Automated Deployment - Automatically provisions Manager, Indexer, and Dashboard components
  • Rule & Decoder Management - Manage Wazuh detection rules and log decoders as CRDs
  • CDB Lists & Active Response - Manage CDB lists and custom active response scripts declaratively
  • Integrations & Agent Groups - Configure external integrations (Slack, VirusTotal, …) and shared agent group configuration declaratively
  • OpenSearch Security CRDs - Manage users, roles, role mappings, and tenants declaratively
  • Wazuh API RBAC CRDs - Manage Manager API roles, policies, rules, and users; restrict dashboard menus per user via run_as
  • Index Lifecycle Management - Configure ISM policies, index templates, and snapshot policies
  • Backup & Restore - OpenSearch snapshots and Wazuh Manager backups to S3, GCS, Azure, HDFS
  • TLS Automation - Auto-generated certificates with hot reload support (Wazuh 4.9+)
  • High Availability - Multi-node deployments with pod disruption budgets
  • Safe Rollouts - Controlled indexer/manager drain with retry and rollback
  • Networking - Gateway API and Ingress for dashboard/manager exposure
  • Storage Ops - Online PVC volume expansion and log rotation
  • Monitoring & Tracing - Prometheus metrics, ServiceMonitor, and OpenTelemetry distributed tracing

Architecture

The operator watches resources.wazuh.com custom resources and reconciles the Wazuh stack: it deploys and configures the Manager, Indexer, and Dashboard, and pushes RBAC / rules / index config to their APIs.

graph LR
    crs["Custom Resources<br/>WazuhCluster, Wazuh*, OpenSearch*"]
    operator["Wazuh Operator<br/>(controllers)"]
    crs -->|watch / reconcile| operator

    agents["Wazuh agents"]

    subgraph cluster["WazuhCluster (managed)"]
        manager["Manager<br/>Master + Workers"]
        indexer["Indexer<br/>(modified OpenSearch)"]
        dashboard["Dashboard<br/>(modified OpenSearch Dashboards)"]
    end

    operator -->|deploy + configure| manager
    operator -->|deploy + configure| indexer
    operator -->|deploy + configure| dashboard

    agents -->|events| manager
    manager -->|alerts via Filebeat| indexer
    dashboard -->|query / search| indexer
    dashboard -->|Manager API :55000| manager

Quick Start

Prerequisites
  • Kubernetes 1.25+
  • kubectl configured
  • 16GB+ RAM recommended
Installation with Helm

Due to CRD size, use helm template + kubectl apply instead of helm install:

# Install the operator
helm template wazuh-operator oci://ghcr.io/maximewewer/charts/wazuh-operator \
  --namespace wazuh-operator --create-namespace | kubectl apply -f -

# Deploy a Wazuh cluster
helm template wazuh-cluster oci://ghcr.io/maximewewer/charts/wazuh-cluster \
  --namespace wazuh | kubectl apply -f -

# Check status
kubectl get wazuhcluster -n wazuh
Access Dashboard
kubectl port-forward svc/wazuh-cluster-dashboard -n wazuh 5601:5601

Open https://localhost:5601 - Credentials are auto-generated in secrets.

See Quick Start Guide for detailed instructions.

Supported Wazuh Versions

Wazuh OpenSearch Notes
4.12.x - 4.14.x 2.19.0+ Automatic TLS certificate hot reload (file-watch).
4.10.x - 4.11.x 2.16.0
4.9.x 2.13.0 TLS certificate hot reload via API call. Minimum version supported by the operator.
< 4.9.0 Not supported Might work, but it hasn't been tested.

Custom Resource Definitions

API Group: resources.wazuh.com/v1

Category CRDs Short Names
Wazuh Core WazuhCluster wc
Wazuh Config WazuhRule, WazuhDecoder, WazuhIntegration, WazuhCDBList, WazuhActiveResponse, WazuhCertificate, WazuhFilebeat, WazuhAgentGroup, WazuhAgentGroupAssignment wrule, wdecoder, wintegration, wcdb, war, wzcert, wfb, wagentgroup, waga
Wazuh API RBAC WazuhRole, WazuhUser wrole, wuser
Wazuh Backup WazuhBackup, WazuhRestore wbak, wrest
OpenSearch Security OpenSearchUser, OpenSearchRole, OpenSearchRoleMapping, OpenSearchActionGroup, OpenSearchTenant, OpenSearchAuthConfig osuser, osrole, osrmap, osag, ostenant, osauth
OpenSearch Index OpenSearchIndex, OpenSearchIndexTemplate, OpenSearchComponentTemplate, OpenSearchISMPolicy, OpenSearchSnapshotPolicy osidx, osidxt, osctpl, osism, ossnap
OpenSearch Backup OpenSearchSnapshotRepository, OpenSearchSnapshot, OpenSearchRestore osrepo, ossnapshot, osrestore

See CRD Reference for complete API documentation.

Documentation

User Guide
Topic Description
Installation How to install the operator
Quick Start Deploy your first cluster
Credentials Auto-generated passwords, secrets
TLS Configuration Certificate management
Wazuh API RBAC Manager API roles/users, run_as restriction
Monitoring Prometheus integration
Backup & Restore Data protection (S3, GCS, Azure, HDFS)
Repository Plugins Auto plugin install & keystore
OpenSearch Security Indexer users, roles, tenants
Gateway API & Ingress Expose dashboard/manager
Drain Strategy Safe node drain, retry, rollback
Log Rotation Component log rotation
Volume Expansion Online PVC growth
Filebeat Manager→indexer shipping config
Advanced Topology NodePools, dedicated roles
Sizing Resource sizing guidance
Examples Configuration examples
Troubleshooting Common issues and debugging
Developer Guide
Topic Description
Architecture Overall design
Testing Guide How to run and write tests
Contributing How to contribute

Development

# Generate manifests and code
make manifests generate

# Build and test
make build test

# Build Docker image
make docker-build IMG=myregistry/wazuh-operator:dev

# Run locally
make install run

See Testing Guide for complete testing instructions.

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Support

Acknowledgments

Directories

Path Synopsis
api
v1
Package v1 contains API Schema definitions for the Wazuh Operator All CRDs use the resources.wazuh.com API group for both Wazuh and OpenSearch resources
Package v1 contains API Schema definitions for the Wazuh Operator All CRDs use the resources.wazuh.com API group for both Wazuh and OpenSearch resources
cmd
wazuh-operator command
hack
version-sync command
Command version-sync keeps the wazuhVersionMapping table in pkg/versions/versions.go in step with upstream releases, without spinning up any cluster or container.
Command version-sync keeps the wazuhVersionMapping table in pkg/versions/versions.go in step with upstream releases, without spinning up any cluster or container.
internal
adapters
Package adapters provides external API adapters for the Wazuh Operator
Package adapters provides external API adapters for the Wazuh Operator
certificates
Package certificates provides certificate generation utilities for the Wazuh operator.
Package certificates provides certificate generation utilities for the Wazuh operator.
certificates/reconciler
Package reconciler provides helper reconcilers for Wazuh components
Package reconciler provides helper reconcilers for Wazuh components
metrics
Package metrics provides Prometheus metrics for the Wazuh Operator
Package metrics provides Prometheus metrics for the Wazuh Operator
monitoring
Package monitoring provides monitoring resources for Wazuh components
Package monitoring provides monitoring resources for Wazuh components
opensearch/api
Package api provides OpenSearch API client implementations
Package api provides OpenSearch API client implementations
opensearch/builder/configmaps
Package configmaps provides Kubernetes ConfigMap builders for OpenSearch components
Package configmaps provides Kubernetes ConfigMap builders for OpenSearch components
opensearch/builder/deployments
Package deployments provides Kubernetes StatefulSet builders for OpenSearch components
Package deployments provides Kubernetes StatefulSet builders for OpenSearch components
opensearch/builder/jobs
Package jobs provides Kubernetes Job builders for OpenSearch operations
Package jobs provides Kubernetes Job builders for OpenSearch operations
opensearch/builder/pvc
Package pvc provides Kubernetes PersistentVolumeClaim builders for OpenSearch components
Package pvc provides Kubernetes PersistentVolumeClaim builders for OpenSearch components
opensearch/builder/secrets
Package secrets provides Kubernetes Secret builders for OpenSearch components
Package secrets provides Kubernetes Secret builders for OpenSearch components
opensearch/builder/services
Package services provides Kubernetes Service builders for OpenSearch components
Package services provides Kubernetes Service builders for OpenSearch components
opensearch/config
Package config provides configuration builders for OpenSearch components
Package config provides configuration builders for OpenSearch components
opensearch/drain
Package drain provides OpenSearch-specific drain functionality for indexer scale-down
Package drain provides OpenSearch-specific drain functionality for indexer scale-down
opensearch/health
Package health provides health check utilities for OpenSearch components
Package health provides health check utilities for OpenSearch components
opensearch/hotreload
Package hotreload provides OpenSearch certificate hot reload functionality.
Package hotreload provides OpenSearch certificate hot reload functionality.
opensearch/reconciler
Package reconciler provides helper reconcilers for OpenSearch components
Package reconciler provides helper reconcilers for OpenSearch components
opensearch/security
Package security provides OpenSearch security initialization and synchronization
Package security provides OpenSearch security initialization and synchronization
opensearch/securityconfig
Package security_config provides security configuration management for OpenSearch
Package security_config provides security configuration management for OpenSearch
opensearch/validation
Package validation provides validation logic for OpenSearch nodePool configurations
Package validation provides validation logic for OpenSearch nodePool configurations
shared/drain
Package drain provides drain strategy implementation for safe scale-down operations
Package drain provides drain strategy implementation for safe scale-down operations
shared/patch
Package patch provides utilities for detecting and applying resource changes
Package patch provides utilities for detecting and applying resource changes
shared/rolling
Package rolling provides quorum-safe rolling restart orchestration for StatefulSets.
Package rolling provides quorum-safe rolling restart orchestration for StatefulSets.
shared/serviceaccount
Package serviceaccount provides shared ServiceAccount reconciliation for all components
Package serviceaccount provides shared ServiceAccount reconciliation for all components
telemetry
Package telemetry provides OpenTelemetry tracing integration for the wazuh-operator
Package telemetry provides OpenTelemetry tracing integration for the wazuh-operator
utils
Package utils provides shared utilities for the Wazuh Operator
Package utils provides shared utilities for the Wazuh Operator
validation
Package validation provides validation functions for CRDs
Package validation provides validation functions for CRDs
wazuh/builder/configmaps
Package configmaps provides Kubernetes ConfigMap builders for Wazuh components
Package configmaps provides Kubernetes ConfigMap builders for Wazuh components
wazuh/builder/cronjobs
Package cronjobs provides Kubernetes CronJob builders for Wazuh components
Package cronjobs provides Kubernetes CronJob builders for Wazuh components
wazuh/builder/deployments
Package deployments provides Kubernetes Deployment builders for Wazuh components
Package deployments provides Kubernetes Deployment builders for Wazuh components
wazuh/builder/jobs
Package jobs provides Kubernetes Job and CronJob builders for Wazuh backup operations
Package jobs provides Kubernetes Job and CronJob builders for Wazuh backup operations
wazuh/builder/pvc
Package pvc provides Kubernetes PersistentVolumeClaim builders for Wazuh components
Package pvc provides Kubernetes PersistentVolumeClaim builders for Wazuh components
wazuh/builder/secrets
Package secrets provides Kubernetes Secret builders for Wazuh components
Package secrets provides Kubernetes Secret builders for Wazuh components
wazuh/builder/services
Package services provides Kubernetes Service builders for Wazuh components
Package services provides Kubernetes Service builders for Wazuh components
wazuh/cdblist
Package cdblist provides helpers to build Wazuh CDB list content.
Package cdblist provides helpers to build Wazuh CDB list content.
wazuh/config
Package config provides configuration builders for Wazuh components
Package config provides configuration builders for Wazuh components
wazuh/health
Package health provides health check utilities for Wazuh components
Package health provides health check utilities for Wazuh components
wazuh/reconciler
Package reconciler provides helper reconcilers for Wazuh components
Package reconciler provides helper reconcilers for Wazuh components
wazuh/validation
Package validation provides validation logic for Wazuh resources
Package validation provides validation logic for Wazuh resources
pkg
config
Package config provides runtime configuration for the wazuh-operator.
Package config provides runtime configuration for the wazuh-operator.
constants
Package constants provides shared constants for the Wazuh Operator
Package constants provides shared constants for the Wazuh Operator
dns
Package dns provides Kubernetes cluster DNS domain configuration and FQDN generation.
Package dns provides Kubernetes cluster DNS domain configuration and FQDN generation.
logging
Package logging provides structured logging utilities with OpenTelemetry trace correlation.
Package logging provides structured logging utilities with OpenTelemetry trace correlation.
version
Package version provides version information for the operator
Package version provides version information for the operator
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL