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>-binding
format (e.g.my-app-binding
) (#267, #111)
- Some monitoring configurations such as
bearerTokenSecret
are 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
app
andapps
to 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/monitor
tomonitor.appsody.dev/enabled
- Breaking change: When
service.consumes[].namespace
is 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.name
toapp.kubernetes.io/instance
and made former labelapp.kubernetes.io/name
user configurable. (#179)
- Allow users to add new annotations or override default annotations for resources created by the operator via setting annotations on
AppsodyApplication
CRs. (#177)
- Added documentation on how to do canary testing with the standard
Route
resource. (#143)
- Changed the label corresponding to the Appsody Stack information from
app.appsody.dev/stack
tostack.appsody.dev/id
. (#169)
- Support for watching multiple namespaces by setting
WATCH_NAMESPACE
to 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
AppsodyApplication
CRs. (#118) - Support for automatically creating and configuring
ServiceMonitor
resource 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-defaults
ConfigMap since Appsody Stacks would already have defaults. (#104) - Made the
stack
field not required to specify inAppsodyApplication
. (#125)
- Breaking change: When deploying to Knative, Knative route is only accessible if
expose
is set totrue
. This is to makeexpose
behaviour 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.mountPath
andstorage.size
) that ifstorage.size
is not specified or is not valid, handle it gracefully. (#130)
The initial release of the Appsody Operator 🎉🥳