|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). |
| 6 | +This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 7 | + |
| 8 | +--- |
| 9 | + |
| 10 | +## [0.1.0] — 2026-04-09 |
| 11 | + |
| 12 | +Initial public release of the AxonOps Kubernetes Operator. |
| 13 | + |
| 14 | +### Added |
| 15 | + |
| 16 | +#### Infrastructure (`core.axonops.com`) |
| 17 | +- `AxonOpsPlatform` CRD — deploys and manages the full AxonOps server stack (axon-server, axon-dash, axondb-timeseries, axondb-search) from a single declarative resource |
| 18 | +- `AxonOpsConnection` CRD — stores reusable AxonOps API credentials referenced by alert and backup CRDs |
| 19 | +- Internal database components: operator-managed StatefulSets with automatic credential generation and TLS certificate provisioning via cert-manager |
| 20 | +- External database support: connect axon-server to user-managed Cassandra and Elasticsearch/OpenSearch clusters |
| 21 | +- TLS for external connections: `spec.*.external.tls.certSecretRef` — required when `tls.enabled=true` and `tls.insecureSkipVerify=false`; omitting it sets `Ready=False` with reason `MissingExternalTLSCert` |
| 22 | +- `spec.imageRegistry` — global registry override for all default component images (on-premises support) |
| 23 | +- `spec.initImage` — configurable init container image (default: `docker.io/library/busybox:1.37.0`) |
| 24 | +- `spec.pause` — halts reconciliation without deleting owned resources |
| 25 | +- Startup ordering: Server waits for databases to be ready; Dashboard waits for Server |
| 26 | +- Config rolling updates via checksum annotations on pod templates |
| 27 | +- Ingress and Gateway API support for Server (agent and API endpoints) and Dashboard |
| 28 | +- `spec.server.license.secretRef` / `spec.server.license.key` for license configuration |
| 29 | +- `spec.server.config` for additional axon-server configuration (merged into generated config) |
| 30 | + |
| 31 | +#### Alerting and operations (`alerts.axonops.com`) |
| 32 | +- `AxonOpsMetricAlert` — metric threshold alert rules |
| 33 | +- `AxonOpsLogAlert` — log pattern alert rules |
| 34 | +- `AxonOpsAlertRoute` — alert routing to notification channels |
| 35 | +- `AxonOpsAlertEndpoint` — integration endpoint definitions (PagerDuty, Slack, email, OpsGenie, etc.) |
| 36 | +- `AxonOpsHealthcheckHTTP` — HTTP endpoint healthchecks |
| 37 | +- `AxonOpsHealthcheckTCP` — TCP port healthchecks |
| 38 | +- `AxonOpsHealthcheckShell` — shell script healthchecks |
| 39 | +- `AxonOpsDashboardTemplate` — declarative dashboard management |
| 40 | +- `AxonOpsAdaptiveRepair` — adaptive Cassandra repair configuration |
| 41 | +- `AxonOpsScheduledRepair` — cron-based Cassandra scheduled repairs |
| 42 | +- `AxonOpsCommitlogArchive` — commitlog archive settings |
| 43 | +- `AxonOpsSilenceWindow` — alert silence windows |
| 44 | +- `AxonOpsLogCollector` — log collector configuration |
| 45 | + |
| 46 | +#### Backups (`backups.axonops.com`) |
| 47 | +- `AxonOpsBackup` — Cassandra scheduled snapshot backups with S3, SFTP, and Azure Blob storage support; inline and SecretRef credential patterns |
| 48 | + |
| 49 | +#### Kafka (`kafka.axonops.com`) |
| 50 | +- `AxonOpsKafkaTopic` — Kafka topic lifecycle and configuration management |
| 51 | +- `AxonOpsKafkaACL` — Kafka ACL entry management |
| 52 | +- `AxonOpsKafkaConnector` — Kafka Connect connector management |
| 53 | + |
| 54 | +#### Operator infrastructure |
| 55 | +- OpenTelemetry tracing support (OTLP exporter, configurable via environment variables) |
| 56 | +- Prometheus metrics endpoint with RBAC protection (port 8443, HTTPS) |
| 57 | +- Periodic drift detection on all controllers |
| 58 | +- Leader election support for multi-replica deployments |
| 59 | +- Namespace-scoped watch (`--watch-namespaces` flag) |
| 60 | +- Helm chart published to `oci://ghcr.io/axonops/charts/axonops-operator` |
| 61 | +- Kustomize-based installation (`make deploy`) |
| 62 | +- Convenience RBAC helper roles (`rbacHelpers.enable=true` in Helm values) |
| 63 | + |
| 64 | +### Security |
| 65 | +- All AxonOps API URL path segments escaped with `url.PathEscape()` to prevent path injection |
| 66 | +- `errors.As` used throughout for safe API error type discrimination |
| 67 | +- Controller metrics served over HTTPS with RBAC-protected scraping endpoint |
| 68 | + |
| 69 | +### Known limitations |
| 70 | +- Defaulting webhooks are not yet implemented; all components require explicit configuration (`enabled: true` must be set) |
| 71 | +- No conversion webhooks; only `v1alpha1` is available |
| 72 | +- External database credentials are not auto-generated; `authentication.secretRef` or inline credentials are required |
| 73 | +- `BuildHostURL` hardcodes `https://`, ignoring the `protocol` field in `AxonOpsConnection` |
| 74 | +- A new AxonOps API client is created on every reconciliation (no connection reuse) |
| 75 | +- Ingress and Gateway resources are not cleaned up automatically when disabled after initial creation |
| 76 | + |
| 77 | +[0.1.0]: https://github.com/axonops/axonops-operator/releases/tag/v0.1.0 |
0 commit comments