History
[1.36.0]
CHANGES:
- initial K8S 1.36 release
- deprecating 1.33 release
- added new Kubernetes API objects that graduated to stable:
mutatingadmissionpolicy,mutatingadmissionpolicybinding,validatingadmissionpolicyandvalidatingadmissionpolicybinding. - added a new
genericAPI object that allows to define generic objects of any sort. Whilecustomresourceobjects by definition need to have aspecfield, this is not the case forgenericobjects, they only need akindand anapiVersion. The idea is to offer an escape hatch for creating arbitrary and more exotic objects within the scope of HULL.
FIXES:
- fixed error when using function
hull.object.container.imageoutside the scope of an object specification. In this case, missing logging parameters that are autopopulated in the scope of an object definition caused an error. The parameters are now populated with default values to prevent crashes.
[1.35.3]
FIXES:
- fixed error handling changes because it caused installation failures with errors in disabled content and sub chart rendering. Instead of the changed approach (raising every error that occurs during processing) and the original approach (raise only errors in rendered objects), a combined approach is used now. The old error handling practice is restored (raise all visible errors in templates) but extended with raising errors from
conditionalsreferences, however this is limited to the cases where the associated object is actually rendered. If errors inconditionalreferences are recorded for objects that don't get rendered in the end, the errors are dropped. - improved error messages for better understanding and added object tree paths for direct identification of error source
[1.35.2]
CHANGES:
- introduce
conditionalsfeature to allow conditional rendering of elements in places whereenabledproperties are not available. By binding one or more properties to an arbitrary condition, the rendering of the properties can be indirectly controlled which allows to render or hide sub-trees completely under specified conditions. Check the documentation on chart design for more information. Thanks Armin sanarena for the feature request!
FIXES:
- improved error handling by storing all found HULL errors in the charts values tree instead of inline in the object YAMLs. Previously, HULL errors were written to the output YAML as the values of the properties where the errors occured and in a final parsing stage the complete YAML tree was searched and errors collected and raised. This approach was performance costly due to the complete parsing of the object YAMLs and also misses errors that happen in places which don't get rendered in the final object YAML. The new approach, that collects all errors separately and later raises them if any are found, is less resource heavy and misses no errors.
[1.35.1]
CHANGES:
- support subchart usecases with HULL. First, the parsing of HULL relevant fields for transformations has been extended to all of
.Valuesinstead of.Values.hull. This means that HULL transformations in sections outside of.Values.hull, such as subchart configurations and.Values.global, are now also handled and the result is available for further processing. When adding thehull.yamlto a subchartstemplates/zzzfolder in a HULL based parent chart, it becomes possible to use transformations that involve shared data under.Values.globaland make the result available to parent and sub charts.
FIXES:
- due to changes made to Helm 3 versions, the behavior for accessing undefined values has changed for specific Helm 3 versions starting with 3.19.5+ and 3.20+. The named versions (and potentially all following Helm 3 patches) exhibit the Helm 4 behavior which leads to an error if an undefined field is accessed. Tests were adapted to differentiate concrete Helm 3 versions and set correct expectations.
[1.35.0]
CHANGES:
- initial K8S 1.35 release
- deprecating 1.32 release
[1.34.2]
FIXES:
- fixed inconsistency in usage of ConfigMap
binaryDataentries. Previously, it was possible to provide the binary data via thebinaryDataentries' value dictionarypathproperty when it is stored in an external file or directly as a string value to thebinaryDataentries key, omitting the dictionary structure in the value. To restore the symmetry in usage with a value dictionary, it is now possible to alternatively use theinlineproperty in the value dictionary to submitbinaryDataentries, this works the same way as using a string value for thebinaryDatadirectly.
CHANGES:
- ensured compatibility with Helm v4 major releases. It is expected that the vast majority of HULL based use cases is unaffected by the major version of the Helm binary used to manage the chart. See the information in the
README.mdabout the existing differences between Helm v3 and Helm v4 which may affect HULL based charts as well. To accomodate for these differences, some tests were relaxed or made context aware to the hosting Helm binaries major version. - added optional boolean parameter
preEncodedto Secretdataentries. If set, the value read from theinlineproperty or from an external file with pathpathwill not be Base64 encoded by HULL. Instead, ifpreEncodedis set totrue, the corresponding data content is expected to already be Base64 encoded and HULL will skip auto-encoding it. SettingpreEncodedtotrueforemost allows to import Base64 encoded (binary) data as from a Secretdataentry into a pod. Note that whenpreEncodedis set totrue, the data must be correctly Base64 encoded, otherwise the Kubernetes API will not accept it. ThepreEncodedproperty applies to Secretdataonly and is ignored on ConfigMapdataentries. Thanks Armin sanarena for the feature request! - added convenient way to replace a customizable string pattern with double opening and closing curly braces in the rendered final YAML. This is especially helpful when packaging
customresourceobjects which in its spec may contain templating expressions using double curly braces, popular examples are CRDs for External Secrets Operator and Kyverno. Since these applications have their own templating engine included, their CustomResources typically contain double curly braces. Using this last minute string replacement technique, it becomes possible to execute HULL transformations on such content containing templating expressions partially targeted for Helm and partially targeted for the downstream application. The post-render string replacement of the downstream applications double curly braces allows for a clear separation of the templating stages. To enable the feature, set bothhull.config.general.postRender.globalStringReplacements.openingDoubleCurlyBraces.enabledandhull.config.general.postRender.globalStringReplacements.closingDoubleCurlyBraces.enabledtotrue. Then, whenever down stream double curly braces need replacing in the rendered result, use{+{for opening and}+}for closing double curly braces and the placeholders will be replaced with{{and}}respectively last-minute before submittal to the Kubernetes API. If needed, the placeholder values can be customized in thehull.config.general.postRender.globalStringReplacementschart configuration.
[1.34.1]
CHANGES:
- added optional parameters
NOTEMPLATINGandSERIALIZATIONtohull.util.tools.virtualdata.data.globtransformation. The parameters match the behavior ofnoTemplatingandserializationwhich are available for processing individual ConfigMap or Secretdatavalues. Used with thehull.util.tools.virtualdata.data.globtransformation, templating can be skipped and/or serialization performed on all external files captured via the given glob. Thanks ievgenii-shepeliuk for the feature request.
[1.34.0]
FIXES:
- fixed error thrown due to calculation of hashsums attempted on
secretandconfigmapobject content when the object instance is implicitly disabled. Settingenabled: falsein the corresponding_HULL_OBJECT_TYPE_DEFAULT_instance will implicitly disable rendering for instances which in this case don't explicitly setenabled: true. Now, when avolumeMounthas propertyhashsumAnnotationset totrueand the targetedconfigmaporsecretis either implicitly or explicitly disabled in the chart, the calculation of the hashsum is skipped and no errors are thrown.
CHANGES:
- initial K8S 1.34 release
- deprecating 1.31 release
- deprecating
endpointobject type in accordance with Kubernetes deprecation.endpointremains as a configurable object type for the time being but tests forendpointare removed because they fail linting starting with Kubernetes JSON schema version 1.34.
[1.33.0]
CHANGES:
- initial K8S 1.33 release
- deprecating 1.30 release
[1.32.3]
FIXES:
- fix CronJob schema missing allowed property
timeZoneas reported here in this issue. Thanks for reporting seniorquico!
[1.32.2]
FIXES:
- added schema validation of Gateway API objects created in tests so they are validated properly
- corrected version of created ReferenceGrant objects from
v1tov1alpha2 - fixed Gateway API incorrect schema in field
hostnamesby changing it to an array - fixed usage of HULL transformations in all fields of Gateway API schema objects in
values.schema.json. Additional JSON schema properties targeting regular, non-HULL transformation inputs (pattern,default,enum,minLengthandmaxLengthfor strings,format,minimumandmaximumfor integers) were also applied to the_HTinputs which broke usage of them. Solved by strictly separating inputs between_HTHULL transformation strings and regular inputs using theanyOfproperty. Thanks to ievgenii-shepeliuk for raising the issue here in the issues
[1.32.1]
CHANGES:
- added Gateway API objects in version 1.2.0-experimental as main object types to HULL:
backendlbpolicy,backendtlspolicy,gatewayclass,gateway,grpcroute,httproute,referencegrant,tcproute,tlsrouteandudproute. This should make it more comfortable to use them opposed to specifying them using the genericcustomresourceobject type. Thanks to suggestion from ievgenii-shepeliuk made in the comments - introducing
sourcesfeature for pods (podlevel in the workload specifications) and containers (initContainersandcontainerslevels in the workload specifications). Usingsourcesenables global defaulting of pod and container properties and flexible sharing plus stacking of sets of properties for both pods and containers. Potential usages range from globally enforcing workload security settings, specifying shared minimum or special resource requirements or harmonization of all pods and containers in a chart. See the chart design guide for details. This also closes issues Add sharedContainers feature and Default security settings. - added configurable multi-pass rendering of HULL transformations. This enables forward referencing of values in the YAML tree which was previously not possible. For example, using only a single HULL transformation rendering pass, a field
.Values.hull.config.specific.field_a: _HT*hull.config.specific.field_b, where_HT*hull.config.specific.field_b: _HT*hull.config.specific.field_c, will resolvefield_ato literal string_HT*hull.config.specific.field_c. This is the case because at the time whenfield_ais resolved the value offield_bis not yet resolved due to the alphanumeric order of HULL transformation processing. With the new multi-pass default ofhull.config.general.render: 3, thefield_a: _HT*hull.config.specific.field_cvalue is fully resolved to the referenced value of_HT*hull.config.specific.field_cin the second pass.
[1.31.2]
FIXES:
- fixed printed empty string when referencing multi-line strings including line breaks using
_HT*. Referenced strings via_HT*are now bytewise interpreted and printed including newlines usingprintf "%s" ($value | quote)instead of just$value. This transports original string as they are literally specified. - partially fixed referencing large numbers in their original form. Previously if a string contains large numbers > 999999 or values resembling scientific notation, any reference via
_HT*to the source field interpreted the strings as numbers and converted them to usually undesired scientific notation, changing their value and meaning. Side effect of usingprintf "%s" ($value | quote)for string references, all strings are now transported unchanged. Essentially this makes the JSON hack mentioned in this issue obsolete when the source value is in string form.
CHANGES:
- using
tpltransformations with_HT!now allows in-place serialization of the result usingtoJson,toPrettyJson,toRawJson,toYamlortoString. This adds another serialization possibility besides the existing_HT/include and_HT*get transformation result serialization capabilities. Thanks ievgenii-shepeliuk for the feature request. - made previously required dictionary wrapping of array contents for include/
_HT/transformations obsolete by correctly making use of tofromYamlArrayHelm function. If an array was to be returned by a_HT/transformation, previously it was needed to wrap it in a dictionary and grab the result from the chosen dictionary key. For example, an transformation like_HT/result/hull.transformation.do.somethingwould essentially return an array if the include produces a dictionary with a keyresultthat has an array value. Starting with this version, it is possible to call_HT/hull.transformation.do.somethingand the resulting include can directly produce the array. - restructured documentation on transformations in the
hull/doc/transformation.mdfile and removed references to obsolete legacy syntax for transformations.
[1.31.1]
FIXES:
- fixed follow-up problem with a previous fix for calculation of
hashsumAnnotationfor ConfigMaps or Secrets. In an unlikely case, where a ConfigMap or Secret object has nodataproperty set and is then disabled, an unintended error was thrown. ConfigMaps or Secrets with no actualdataproperties can now be disabled without thehashsumAnnotationfunctionality failing.
CHANGES:
- added include shortform transformation
_HT/to the allowed transformations that can be used within_HT!tpl transformations. Similar to using the_HT*get syntax within_HT!transformations, the_HT/include syntax is now embeddable as well. To delimit the_HT/arguments from the rest of the_HT!content, the_HT/block must have a clear ending suffix/TH_, similar to bashsif/fistyle. For example, the following syntax now executes the include function within the tpl content:_HT!{{- printf "%s-%s" _HT/hull.metadata.name:COMPONENT:"tpl-include"/TH_ "example" -}} - added possibility to override individual object instance namespaces by setting an optional
namespaceOverrideproperty on the object instance. CAUTION: creating objects in multiple namespaces may go against Helm principles since normally all objects are created only in the release namespace! - added more example
values.yamlfiles tofiles/examplesand updated outdated ones
[1.31.0]
CHANGES:
- initial K8S 1.31 release
- deprecating 1.28 release
[1.30.5]
FIXES:
- fixed issue with using
_HT*get transformation path syntax within_HT!tpl functions when there is an overlap in the paths of the_HT*expressions. Since expressions were resolved in order of appearance this could lead to unexpected results where parts of longer expressions were incorrectly overwritten. For example, having get expressions_HT*hull.config.specific.path.apiand_HT*hull.config.specific.path.api-user.passwordcould lead to_HT*hull.config.specific.path.apibeing resolved incorrectly in the latter expresison leaving-user.passwordas an invalid remainder. By sorting the found expressions by descending length instead of order of appearance, it is guaranteed that the longer paths are resolved correctly before any shorter paths that may have an overlap. - fixed rendering error in case a Secret or ConfigMap that was referred to via the
hashsumAnnotationfeature was set toenabled: false. Disabled ConfigMaps or Secrets are now ignored for the calculation of hashsums.
[1.30.4]
FIXES:
- fixed unwanted fields being merged when using the
sourcesfeature. When adding multiple sources, the intermediate results were not only merged into the target object but were also added to the sources themselves permanently. If_HULL_OBJECT_TYPE_DEFAULT_is in the sources list, this could lead to unwanted fields merged back into object instances that did not have sources specified and only inherited from_HULL_OBJECT_TYPE_DEFAULT_implicitly.
[1.30.3]
FIXES:
- If HULL errors are detected during processing, the processing is not stopped immediately. Instead, all errors are collected and printed after all objects were processed, making it easier to fix multiple problems in one go.
- Multiple HULL errors in one fields value are detectable now and can be shown. Previously only one error per field value was supported.
CHANGES:
- allow combination of bool and include transformations using extended
_HT?/prefix. Include functions in Helm can only return string values details in this Helm issue so it is not possible to set a boolean value via retrieving the result of an include function triggered by_HT/include. Using_HT?/this is possible now, when the include returns a literaltrueorfalsethis is treated as a boolean value using this syntax. See the transformation documentation for a detailed explanation and examples. - allow usage of
_HT*get transformation path syntax within_HT!tpl functions and_HT?bool transformations to referencevalues.yamlfields. Opposed to a more implementation heavy extension of_HT*to add more flexibility, this solution combines full Go templating flexibility while retaining a concise way of referencing fields in thevalues.yamlvia_HT*syntax. Additionally, in the case, where only one templating operation is required, the extended_HT!*prefix allows to omit the double curly brace wrapping for even more conciseness. To e.g. reference and lower case and trim a.yamlsuffix of avalues.yamlfield, this expression may be used:field: _HT!* _HT*hull.config.specific.source | lower | trimSuffix ".yaml" - due to the introduction of combined transformations with two characters after
_HT(_HT?/and_HT!*), the syntax for_HT**with added serialization instructions has been changed too so that_HT**toJson|hull.config.specific.abcis the valid syntax now. The former legal form,_HT*toJson|*hull.config.specific.abc, is still usable but considered legacy from now on.
[1.30.2]
CHANGES:
- allow to force render an otherwise disabled object using
hull.object.base.xyzinclude by setting FORCE_ENABLED to true. This opens up the possibility to define object instance templates in HULL which are not deployed by HULL itself (by settingenabled: false). Instead, the object template can be rendered to a ConfigMap as a full-fledged Kubernetes YAML object which for example can serve as an object template the underlying application creates instances from.
[1.30.1]
FIXES:
- fix default RoleBinding between default Role and default ServiceAccount. Since namespace was not set for the default ServiceAccount reference, the default RBAC RoleBinding did not apply to the default ServiceAccount as intended.
CHANGES:
- add possibility to access array items in
_HT*via using the item index for arrays instead of a dictionary key for dictionaries in the dotted path. Accessing into multiple nested arrays is possible like for example_HT*hull.config.specific.outer-list.0.inner-list.1.key. Related feature issue is this one - improve debugging broken YAML errors by including all available info in the generated error message. The error message now contains the actual YAML error and the reference to the specific object type and instance which could not be rendered.
- started adding reusable helper functions for use with
_HT/in_util_tools.tpl. Populating thedatafor a Secret or ConfigMap with external files matching a GLOB pattern can be achieved by usinghull.util.tools.virtualdata.data.glob. Withhull.util.tools.file.get, the contents of an external file can be loaded conveniently outside of the ConfigMap and Secretdatacontext. Thanks ievgenii-shepeliuk for the ideas in this isue
[1.30.0]
CHANGES:
- initial K8S 1.30 release
- deprecating 1.27 release
[1.29.7]
CHANGES:
- added possibility to get values from the charts root with notation
_HT**
[1.29.6]
CHANGES:
- added possibility to access the current object instance key and object type in
_HT*transformations by using special keys§OBJECT_INSTANCE_KEY§and§OBJECT_TYPE§in the dotted path
[1.29.5]
FIXES:
- fixed
OBJECT_INSTANCE_KEYandOBJECT_TYPEnot existing in context of_HT?boolean transformations. Access toOBJECT_INSTANCE_KEYandOBJECT_TYPEis now provided same as in context of_HT!and_HT/transformations - fixed inability to use
OBJECT_INSTANCE_KEYandOBJECT_TYPEfor_HULL_OBJECT_TYPE_DEFAULT_instances in context of_HT/include transformations. This fix allows to combinepostRenderreplacements in content created by_HT/transformations on a_HULL_OBJECT_TYPE_DEFAULT_instance
[1.29.4]
FIXES:
- fixed problem with running both HULL transformations and
tplonpathcontent in ConfigMaps and Secrets. After loading the external files content, decide whether to run HULL transformations ortplbased on HULL transformation prefix presence - fixed checks for
virtualFolderDataPathExistsandvirtualFolderDataInlineValidin the case of Secrets. Due to the Base64 encoding of data any error signaling strings weren't properly detected. With added Base64 decoding of the content for secrets the error checks now work for both ConfigMaps and Secrets - make all keys within
.Valuesavailable for reference in Secret and ConfigMapdatainlineandpathcontent templating. Due to obsolete code, all other keys thanhullwere removed from the parent charts.Valuescontext when being passed to ConfigMap and Secret for template processing. Thanks again khmarochos for pointing out the problem in this isue
[1.29.3]
CHANGES:
- avoid rendering of empty collections. All
annotations,labelsand several other fields, which are explicitly handled by HULL, now are fully omitted if they resolve to empty dictionaries or arrays. This changed behaviour can be reverted by individually choosing to renderemptyAnnotations,emptyLabels,emptyTemplateAnnotations,emptyTemplateLabelsand/oremptyHullObjectsunderconfig.global.render. This default behavior change is in favor of improving compatibility with tools that potentially auto-prune empty collection fields like ArgoCD and thus may have syncing issues with empty collections. In terms of severity this change is considered non-breaking. Down the line, Kubernetes treats missing and empty collection fields in the same way. Note that per the schema, some collection fields are required (containersinpodandpathsiningressrules) and omitting them or leaving them empty now violates the Kubernetes schema. However, in these cases Kubernetes also verifies that at least one element is in the collection on deployment so the problem only shows earlier. Thanks alexrimlin for the suggestion!
[1.29.2]
CHANGES:
- removed hardcoded
type: Opaqueand allow to freely set type of Secrets, thanks khmarochos for PR - enabled specification of
configmapandsecretdatainlinefields as dictionaries or lists and added implicit and explicit serialization toconfigmapandsecretdataentries. Implicit and automatic serialization takes place for files ending with.json(toPrettyJson) and files ending with.yamland.yml(toYaml) if theinlinecontent is a dictionary or a list. Explicit serialization is possible using the newserializationproperty fordataelements and can be applied to dictionary, list and stringinlineentries and stringpath` contents. Thanks khmarochos for the idea in this report - added optional serialization arguments to
_HT/and_HT*to serialize dictioanry and liststoJson,toPrettyJson,toRawJson,toStringortoYaml, also thanks khmarochos for the idea in this report - added optional
postRenderoption to inject object instance key or object name strings into rendered object YAML. This enables very efficient specification of multiple identical object instances via thesourcesand_HULL_OBJECT_TYPE_DEFAULT_feature and last-minute insertion of the actual object instance key or name into the rendered YAML string. Handle with caution since this can invalidate the YAML structure! - added error checks in HULL to prevent common configuration errors by failing the Helm command. By default verify
imagespecifications exist and are valid for allcontainers, files pointed to viapathphysically exist and all tree elements in a_HT*references are resolvable
FIXES:
- fixed hashsumAnnotation calculation of secrets incorrectly being done on Base64 encoded value instead of decoded value
- centralized
configmapandsecretfunctionality and tests to guarantee exact same handling whether content is definedinlineor in a file withpath. Code difference betweensecretandconfigmapreduced to only late base64 value encoding in the case of secrets. - improve code in helper functions, thanks JuryA for PR
[1.29.1]
CHANGES:
- removed all required field definitions from values.schema.json. Validating required fields is helpful on the output side because it indicates which fields are important in the rendered output but on input side side they block the full potential of efficient defaulting. When present, The JSON schema demands that required fields are added to all individual instances of an object - even when a source or HULL_OBJECT_TYPE_DEFAULT has already set them appropriately and concisely. This leads often to unnecessary bloat and complexity in the values.yaml and therefore the usage of required fields in the JSON schema was dropped favor of cleaner chart design.
- added tests to solidify expectations on workarounds for YAML parser issues with large numbers (unwanted rendering in scientific notation, unwanted interpretation of strings as scientific notation). The issues mentioned in this report cannot be solved in HULL but the tests should from now on indicate if something has changed in Helm about the applicability of the workarounds, thanks seniorquico
FIXES:
- fixed bug where imagePullSecrets cannot be overwritten with empty list, thanks khmarochos
[1.29.0]
CHANGES:
- initial K8S 1.29 release
- deprecating 1.26 release
[1.28.6]
FIXES:
- fix still broken CronJob rendering which is now in line with the rendering style of other object types
[1.28.5]
FIXES:
- fix broken HULL_OBJECT_TYPE_DEFAULT defaulting of CronJobs properties where all values from HULL_OBJECT_TYPE_DEFAULT or sources where not merged to rendered CronJob instances
- fix missing rendering of embedded Job Kubernetes properties in a Cronjobs jobTemplate where any Kubernetes property of an embedded Job was missing from the rendered output
[1.28.4]
FIXES:
- fix sources feature not properly working for non-pod based object types
- fix OBJECT_INSTANCE_KEY handling causes error for calls to hull.util.transformation.tpl originating outside of hull.util.transformation
[1.28.3]
CHANGES:
- introducing more flexible mechanism to populate default values for object intances. It is possible to opt to load default values from zero to multiple object instances by using new hull.base.v1 property sources. All referenced object instances are merged in the provided order to allow sharing definitions between object instances and object types. The default behavior to merge default values from HULL_OBJECT_TYPE_DEFAULT remains intact.
FIXES:
- added icon to Chart.yaml to fix linter warning
- fail with speaking error message instead of hard to decode error message when path elements in get transformations are not found
[1.28.2]
FIXES:
- extend loosening of schema type to env fields. User input of type float, integer or boolean is now allowed and on rendering a late to string conversion is taking place to guarantee the Kubernetes schema is not violated demanding string values.
[1.28.1]
FIXES:
- loosen schema types of image tag, annotation and label values. For image tag values user input of type float or integer and for annotation and label values user input of type float, integer and boolean is allowed. On rendering a late to string conversion is taking place to guarantee the Kubernetes schema is not violated demanding string values. Reasoning behind is that for these fields correct quoting of user input is often missing in case of values which are interpreted as non-strings. Allowing a flexible input type and late guaranteed conversion to string helps avoid unncessary and unexpected errors due to user input.
- drop kubeVersion from Chart.yaml to support running hull-demo in lower version clusters, kubeVersion field does not seem to have relevance for hull as a library chart but is copied over to hull-demo Chart.yaml
[1.28.0]
CHANGES:
- initial K8S 1.28 release
- deprecating 1.25 release
- allow to use implicitly set OBJECT_INSTANCE_KEY and OBJECT_TYPE context variables for accessing an object instance's key and type as strings in the context of transformations executed within an object instance's specification.
[1.27.1]
CHANGES:
- allow to set an explicit namespaceOverride via chart configuration on the object instances rendered. This is helpful for usage with helm template command so that rendered templates contain a namespace and can be used directly in GitOps style declarative workflows. If no namespaceOverride is provided, the namespace is now still always added to the object instances and falls back to the release namespace.
[1.27.0]
CHANGES:
- initial K8S 1.27 release
- deprecating 1.24 release
[1.26.2]
CHANGES:
- by adding property hashsumAnnotation: true to a pods volumeMount, env or envFrom referencing a ConfigMap or Secret, a pod restart can be enforced in case of changed contents. This works by calculation of a hashsum of the contents and adding it to the pods template annotations. This is recommended practice as documented in the Helm documentation in order to handle applications that require restarts on certain configuration changes.
[1.26.1]
CHANGES:
- add metadataNameOverride possibility to Hull.Object.Base to allow setting an object instance metadata.name that is different from the implicit component key. This enables special use-cases where e.g. the definition of a custom resource instance is done in the chart's values.yaml under a fixed key and the CustomResources actual instance name - maybe playing an important role for the operator functionality - is only set at deployment time dynamically
[1.26.0]
CHANGES:
- initial K8S 1.26 release
- deprecating 1.23 release
- build and release hull-demo chart for easy demoing and bootstrapping HULL based Helm Charts
FIXES:
- improved schema structure for centrally defined probe configurations (PR, thanks matthias4217)
- fix merging order for tests with additional overlay values.yamls
[1.25.10]
FIXES:
- when a dictionary structure contains a HULL_TRANSFORMATION key for producing dynamically rendered key-value content and additional static keys side-by-side, transformations were not being correctly processed for the structures beneath the static key contents
- some minor documentation fixes (links in main README.md, broken structures)
[1.25.9]
FIXES:
- fixed incorrect schema structure for imagePullPolicy enums (thanks matthias4217)
[1.25.8]
FIXES:
- fixed general linter error due to bad whitespace chomping between YAML objects, this did not affect template rendering however (https://github.com/vidispine/hull/issues/186)
- added strict linting to test cases, now all cases must not emit linting WARNINGs or ERRORs to be considered successful
[1.25.7]
FIXES:
- extend transformation scope from objects spec to Values.hull when computing initial transformations, fixes cases with first transformation resolving to another transformation which is then not resolved itself
- speed up rendering by only run transformations once on complete Values.hull dictionary instead of running it once for each object type
[1.25.6]
FIXES:
- render emtpy string instead of
<nil>when ConfigMap or Secret inline input is nil pointer
CHANGES:
- add debug option renderNilWhenInlineIsNil to print out
<nil>instead of empty string when an inline value resolves to a nil pointer - add debug option renderPathMissingWhenPathIsNonExistent to print out information about a missing file for a path value instead of an empty string when a path value does not resolve to an actual file
[1.25.5]
CHANGES:
- changed transformation notation for include for better readability
FIXES:
- fixed and improve include transformation
[1.25.4]
CHANGES:
- add new include transformation and short form to allow compact usage of includes with minimum typing in values.yaml.
FIXES:
- quote versions in Chart.yaml (https://github.com/vidispine/hull/issues/169)
[1.25.3]
CHANGES:
- for ConfigMap and Secret data, inline specification now always has precedence over path specification to make sure that content can always be overwritten at configuration time if required
- add active property to allow selecting amongst multiple volume definitions if they exist, eg. if a volume is defaulting to an emptyDir and is to be made a persistentVolumeClaim, the value of the active property (if specified) declares the concrete volume to render, otherwise Kubernetes will not accept multiple volume type definitions for a volume.
[1.25.2]
CHANGES:
- remove required property for endpoints and selector in ServiceMonitors from schema to allow better defaulting
[1.25.1]
CHANGES:
- add debug option renderBrokenHullGetTransformationReferences which allows to render HULL charts containing broken Get transformation references with non existing keys. By rendering these transformations with an informative placeholder instead of failing the chart rendering the broken references can be traced and fixed more easily before finishing writing the chart
- allows to use placeholder § to escape dots within key names so GET references also work when dots are within key names
[1.25.0]
CHANGES:
- initial K8S 1.25 release
- deprecating 1.22 release
- removed PodSecurityPolicy
[1.24.1]
CHANGES:
- improve intro documentation and add KH quote
- add Helm 3.9.0 to tests
- add option noObjectNamePrefixes to remove all object name prefixes globally
[1.24.0]
CHANGES:
- initial K8S 1.24 release
- deprecating 1.21 release
- added option to include ConfigMap binaryData from external path
[1.23.4]
CHANGES:
-
added new objects Namespace, EndpointSlice and LimitRange
-
update documentation
FIXES:
- disabling RBAC did not prevent rendering of Roles and ClusterRoles
[1.23.3]
CHANGES:
- added transformation pattern to array fields from ServiceMonitor definition
- update documentation
FIXES:
- HULL rules must be dictionary for roles in values.yaml
[1.23.2]
CHANGES:
- get transformation can now return complex dictionaries and array types
- introduce selector transformation and _HT& shortcut
FIXES:
- use fixed name template lower-case 'release-name' for helm template command compatibility with Helm 3.8. Previous versions created upper case 'RELEASE-NAME' by default for Release.Name which is changed to lowercase 'release-name' with Helm 3.8
[1.23.1]
CHANGES:
- allow to choose between rendering to single file or multiple files per object type to potentially eliminate performance penalty due to having one file only
- add test environments for both single and multi file usage
- add two example values.yamls
FIXES:
- allow using 63 instead of 54 chars for a fullname and name override
- remove dots end of labels and names
[1.23.0]
CHANGES:
- initial K8S 1.23 release
- deprecating 1.20 release
[1.22.13]
FIXES:
- changed probe port schema to anyOf to avoid clash when using oneOf transformation or string
[1.22.12]
FIXES:
- allow mixed transform only when dictionary is returned from transformation and other keys exist besides transformation trigger
[1.22.11]
CHANGES:
- added tests for get transformation results
- make every object field subjectable to string transformations irrelevant of input type by large scale extension of JSON schema
FIXES:
- using a get transformation to poulate Configmap/Secret contents produced bad character sequences
[1.22.10]
CHANGES:
- added short forms for transformations
- documentation improved
[1.22.9]
CHANGES:
- fix enabled properties allowed on policyrules in roles, envfrom and tls in ingresses
- allow shorter form of (index . "$") to access parent context
[1.22.8]
CHANGES:
-
add hull.util.transformation.bool transformation
-
BREAKING! change fields for registry population to overwrite any explicit registry fields
[1.22.7]
CHANGES:
- add CHANGELOG.md
- add ingressclass objects as main objects
- allow to specify rules in roles key-value based instead of as an array (array also supported)
- add unit tests for ClusterRole and ClusterRoleBindings
FIXES:
- clusterrole and clusterrolebinding objects with enabled=false or nulled were rendering incorrectly as empty objects
- cronjob pods must not have selector set
[1.22.6]
CHANGES:
- allow enabled property on all key-value pair HULL objects
- allow to use string as input for enabled property in order to use HULL transformations on enabled properties