Deployment Script
Main Deployment Script (deploy.sh)
The deploy.sh script handles the complete lifecycle of operator management.
Usage
Options
--uninstall- Uninstall the operator and all resources--namespace <name>- Target namespace (default: o2operator)--image <repo>- Custom image repository--tag <tag>- Custom image tag (default: latest)--skip-certs- Skip certificate generation (use existing)--dry-run- Preview changes without applying them-h, --help- Show help message
Examples
# Basic installation
./deploy.sh
# Preview changes without applying (dry-run)
./deploy.sh --dry-run
# Install with custom image
./deploy.sh --image public.ecr.aws/zinclabs/o2operator --tag v1.0.0
# Uninstall operator (handles finalizers automatically)
./deploy.sh --uninstall
# Skip certificate generation (use existing certificates)
./deploy.sh --skip-certs
Kubernetes Manifests
Core Manifests (manifests/)
- 00-namespace.yaml - Creates the
o2operatornamespace - CRD Files - Custom Resource Definitions:
01-o2configs.crd.yaml- OpenObserveConfig for connection settings01-o2alerts.crd.yaml- OpenObserveAlert for alert definitions01-o2alerttemplates.crd.yaml- OpenObserveAlertTemplate for notification templates01-o2destinations.crd.yaml- OpenObserveDestination for alert and pipeline destinations01-o2pipelines.crd.yaml- OpenObservePipeline for data pipeline configurations01-o2functions.crd.yaml- OpenObserveFunction for VRL transformation functions- 02-configmap.yaml - ConfigMap for operator configuration:
- Controller concurrency settings for each resource type
- API rate limiting configuration (RPS and burst)
- HTTP connection pool settings
- Logging level configuration
- Optional stream validation settings
- 02-rbac.yaml - Sets up RBAC:
- ServiceAccount for the operator
- ClusterRole with required permissions
- ClusterRoleBinding
- Leader election Role and RoleBinding
- 03-deployment.yaml - Contains:
- Operator Deployment (with HA configuration, 2 replicas)
- PodDisruptionBudget for high availability
- Metrics Service (port 8080)
- Webhook Service (port 443)
- 04-webhook.yaml - ValidatingWebhookConfiguration for resource validation
Operator Configuration
The operator behavior can be tuned via the ConfigMap in manifests/02-configmap.yaml:
Performance Tuning Options
- Controller Concurrency: Control parallel processing for each resource type
ALERT_CONTROLLER_CONCURRENCY: Default 1, recommended 1-20TEMPLATE_CONTROLLER_CONCURRENCY: Default 1, recommended 1-10DESTINATION_CONTROLLER_CONCURRENCY: Default 1, recommended 1-20PIPELINE_CONTROLLER_CONCURRENCY: Default 1, recommended 1-10FUNCTION_CONTROLLER_CONCURRENCY: Default 1, recommended 1-5-
CONFIG_CONTROLLER_CONCURRENCY: Default 1, recommended 1-3 -
API Rate Limiting: Control API request rates to OpenObserve
O2_RATE_LIMIT_RPS: Requests per second (default: 10, max: 100)-
O2_RATE_LIMIT_BURST: Burst capacity (default: 20, max: 200) -
HTTP Connection Pool: Manage HTTP connections
O2_MAX_CONNS_PER_HOST: Max concurrent connections (default: 10)O2_MAX_IDLE_CONNS: Total idle connections (default: 100)O2_MAX_IDLE_CONNS_PER_HOST: Idle connections per host (default: 10)O2_IDLE_CONN_TIMEOUT: Idle connection timeout (default: 90s)-
O2_HTTP_TIMEOUT: HTTP request timeout (default: 30s) -
Logging: Control operator log verbosity
O2OPERATOR_LOG_LEVEL: Log level (debug, info, error)
Environment Configuration
OpenObserve Configuration (configs/)
The configs/ directory contains environment-specific configurations:
- dev/o2dev-config.yaml - Development environment configuration
- test/o2test-config.yaml - Test environment configuration
- prod/o2prod-config.yaml - Production environment configuration
Each configuration file contains: - Secret definition for OpenObserve credentials - OpenObserveConfig resource definition
Important: Edit the appropriate configuration file before applying to add your actual: - OpenObserve endpoint URL - Username and password - Organization name
Sample Resources
Alert Samples (samples/alerts/)
11 example alert configurations demonstrating various use cases: - alert9-minimal.template.yaml - Minimal configuration example - alert1-full.template.yaml - Full-featured alert with all options - alert2-simple-log.template.yaml - Basic log monitoring - alert3-sql.template.yaml - SQL query-based alerts - alert4-promql.template.yaml - PromQL metrics alerts - alert5-realtime.template.yaml - Real-time alerting - alert6-deduplication.template.yaml - Alert deduplication - alert7-multi-time-range.template.yaml - Multiple time ranges - alert8-traces.template.yaml - Distributed tracing alerts - alert-aggregation-example.yaml - Aggregation examples - alert.sample.yaml - General sample alert
Alert Template Samples (samples/alerttemplates/)
5 alert template examples for different notification formats: - alerttemplate.template.yaml - Complete template with all available options - email-alert-template.yaml - Email notification template - http-alert-template.yaml - Generic HTTP webhook template - http-pagerduty-webhook-template.yaml - PagerDuty integration template - http-slack-webhook-template.yaml - Slack notification template
Destination Samples (samples/destinations/)
Multiple destination configurations for alerts and pipelines: - destination.template.yaml - Complete destination with all available options - email-alert-destination.yaml - Email destination for alerts - http-alert-destination.yaml - HTTP webhook destination for alerts - pipeline-custom-destination.yaml - Custom HTTP destination for pipelines - pipeline-datadog-destination.yaml - Datadog integration for pipelines - pipeline-dynatrace-destination.yaml - Dynatrace integration for pipelines - pipeline-elasticsearch-destination.yaml - Elasticsearch destination - pipeline-newrelic-destination.yaml - New Relic integration - pipeline-openobserve-desntination.yaml - OpenObserve to OpenObserve replication - pipeline-splunk-destination.yaml - Splunk integration
Pipeline Samples (samples/pipelines/)
5 pipeline configuration examples: - pipeline.sample.yaml - General sample pipeline configuration - srctodest.yaml - Simple source to destination pipeline - srctodest-two-branches.yaml - Multi-branch pipeline with conditions - querysrctodest-sql.yaml - SQL query-based data transformation - querysrctodest-promql.yaml - PromQL query-based pipeline
Function Samples (samples/functions/)
VRL transformation function examples: - basic-function.yaml - Basic VRL function example - functions.template - Template reference for function configuration