All notable changes to this project will be documented in this file.
- Added support for embedding service bindings into a custom resource (#267, #111)
- Added support for affinity settings such as nodeAffinity, podAffinity and podAntiAffinity (#267, #116)
- Breaking change: In order for the operator to detect Service Binding custom resources automatically ("auto-detect" functionality), the name of the binding resource must follow the
<CR_NAME>-bindingformat (e.g.my-app-binding) (#267, #111)
- Some monitoring configurations such as
bearerTokenSecretare not propagated to the createdServiceMonitor(#267, #157, #116)
- Operator crash when Ingress is created without defining spec.route field (#261)
- Unnecessary pod restarts due to adding kubectl.kubernetes.io/last-applied-configuration to resources created by the operator (#261)
- Added Ingress (vanilla) support (#259, #79)
- Added support for external service bindings (#259, #76)
- Added additional service ports support (#259, #80)
- Added support to specify NodePort on service (#259, #60)
- Auto-scaling (HPA) not working as expected (#72)
- Operator crashes on some cluster due to optional CRDs (Knative Service, ServiceMonitor) not being present (#254)
- Update the predicates for watching StatefulSet and Deployment sub-resource to check for generation to minimize number of reconciles (#254)
- Added support for integration with OpenShift's Certificate Management. (#214)
- Added support for referencing images in image streams. (#218)
- Added support to specify application name to group related resources. (#237)
- Added support for sidecar containers. (#237)
- Added optional targetPort field to CRD (#181)
- Added support for naming service port. (#237)
- Added must-gather scripts for troubleshooting. (#209)
- Added the shortnames
appandappsto the AppsodyApplication CRD. (#198) - Added OpenShift specific annotations (#54)
- Set port name for Knative service if specified (#55)
- Changed the match label of the ServiceMonitor created by operator from
app.appsody.dev/monitortomonitor.appsody.dev/enabled - Breaking change: When
service.consumes[].namespaceis not specified, injected name of environment variable follows<SERVICE-NAME>_<KEY>format and binding information are mounted at<mountPath>/<service_name>. (#27 and #46)
- Changed the default labels and annotations to more closely align with the generic operator and OpenShift guidelines (#233)
- Changed the label corresponding to
metadata.nametoapp.kubernetes.io/instanceand made former labelapp.kubernetes.io/nameuser configurable. (#179)
- Allow users to add new annotations or override default annotations for resources created by the operator via setting annotations on
AppsodyApplicationCRs. (#177)
- Added documentation on how to do canary testing with the standard
Routeresource. (#143)
- Changed the label corresponding to the Appsody Stack information from
app.appsody.dev/stacktostack.appsody.dev/id. (#169)
- Support for watching multiple namespaces by setting
WATCH_NAMESPACEto a comma-separated list of namespaces. (#114) - Allow users to add new labels or override default labels for resources created by the operator via setting labels on
AppsodyApplicationCRs. (#118) - Support for automatically creating and configuring
ServiceMonitorresource for integration with Prometheus Operator. (#125) - Automatically configure the
AppsodyApplication's Kubernetes resources to allow automatic creation of an application definition by kAppNav, Kubernetes Application Navigator. (#128 and #135)
- Removed default values for all stacks from
appsody-operator-defaultsConfigMap since Appsody Stacks would already have defaults. (#104) - Made the
stackfield not required to specify inAppsodyApplication. (#125)
- Breaking change: When deploying to Knative, Knative route is only accessible if
exposeis set totrue. This is to makeexposebehaviour consistent with non-Knative deployment so users need to explicitly declare to make their application accessible externally. (#122) - Fixed an issue for basic storage scenario (i.e. specifying
storage.mountPathandstorage.size) that ifstorage.sizeis not specified or is not valid, handle it gracefully. (#130)
The initial release of the Appsody Operator 🎉🥳