- Excluded kinds are exported from the server (#245)
- Parallel execution errors out with:
Cannot stat ".combined.env"(#243)
- Add support for
StatefulSetresources (#235).
- Use
oc getwithout--exportflag, which has been removed in Kubernetes 1.19 (#230).
- Handle
HorizontalPodAutoscalerresoures (#227).
- Export resources and process templates concurrently (#220). This should not cause any change in behaviour, but you should notice Tailor being faster, especially against slow clusters.
- Ignore
managedFields(#222). The fixed problem only occurs when Tailor is used against OpenShift 4.
- Handle
Jobresoures (#212).
- Do not print timestamps when errors occur (b378a89).
- Change test infrastructure to GitHub Actions (#186 and #216), and implement easier to maintain approach for end-to-end tests (#215 and #219).
- Export
LimitRangeandQuotaresources (decfae9). Support for those resources was added in 1.0.0, but they were not exported, only applied. Note that this change may lead to differences in diff output compared to 1.1.4.
- Replace only whole words with
${TAILOR_NAMESPACE}(#211). Note that while this should yield better results than the previous behaviour, there might be rare situations where Tailor misses to replace the namespace now.
- Allow
--excludeto be repeated (#208).
- Improve hint when recreation is prevented (4e2d04a).
- Do not trim all annotations during export by default. Instead, only a few known annotations are removed (
kubectl.kubernetes.io/last-applied-configuration,openshift.io/image.dockerRepositoryCheck). If you want to trim other annotations, there is a new flag--trim-annotation. The flag can be repeated, and allows either exact match or prefix match (e.g.openshift.io/). (#207). - Recreate may fail (#204).
- Create
ServiceAccountandRoleBindingresources before e.g.DeploymentConfigresources to avoid pod startup failure due to missing service accounts (#202).
- Allow users to selectively apply changes (#198).
- Fail with proper error when template parameter does not have
nameproperty (#197). - Fix panic on invalid template (#200).
- Support
Deploymentresource (#189). - Support
LimitRangeandResourceQuotaresources (#194). - Export with parameterised namespace by default (#192).
- Use
oc get --exportinstead of deprecatedoc export. This allows to use Tailor with OpenShift 4 - however there is no manual or automated test setup yet which means OpenShift 4 is not officially supported yet (#160).
- Handle missing EOL in params file (#185).
- Comparing
CronJobs works now (#158). - Respect
--excludeflag when exporting (#149). - Exporting just one resource works as expected now (#188).
- Abort generating keys if files are already present (#193).
- Avoid
--forceflag when run against local cluster (#182).
-
Prefer
Tailorfile.NAMESPACEoverTailorfile, see #172. -
Add namespace env file if it exists, see #173.
-
Add
--verifyflag to check if any drift is present after applying (#179).
- Use
oc applyinstead of generating patches (#168). The change removes the custom Tailor annotations in favour of thekubectl.kubernetes.io/last-applied-configurationannotation. If there are any issues with unexpected drift or problems when reconciling, please consult https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/.
-
Exit with 1 when no diff is performed (#175).
-
Do not calculate drift when adding empty string to missing fields (#180).
-
Patching of arrays can fail (see #92. This was fixed by using
oc applyas outlined above.
- Remove --context-dir support (#176).
- Introduce new flag
--preserve-immutable-fields. It has the same effect as specifying--preservefor all immutable fields (such aspvc:/spec/accessModes). For more background, see #162.
-
Rename
statustodiffandupdatetoapply. For backwards compatibility, two aliasesstatusandupdatehave been created. As a consequence,--diffhas been renamed to--format. See #163. -
Rename
--ignore-pathto--preserveSee #165. For backwards compatibility,--ignore-pathis still supported (though deprecated). -
Return with non-zero exit code when detected drift is not reconciled. This allows scripts to know whether the user confirmed to apply the changes or not. See #166.
- Support cron jobs resources. See #155.
- Avoid drift in annotations after creation of resource (#142)
- Remove legacy fields
/userNamesand/groupNamesfromRolebindingresources. Those fields are added byoc exportbut might cause issues when set tonull. Tailor removes those now, so only changes insubjectshave any effect. See #140. - Do not escape field names when adding annotations object, as when
/metadata/annotationsis added, the keys inside need to contain raw slashes (/) instead of escaped ones (~1). Only when annotations already exist, keys containing a slash need to escape them. See #145.
- Export of resources with
/metadata/generateNameinstead of/metadata/namefailed as Tailor expects every resource to have a name. Now Tailor will fallback togenerateName, see #135.
- Deletion of resources does not show notice anymore (#131)
- Textual diff reflects actual changes corretly now. In 0.10.0, it showed some deletions which were not part of the JSON patches. See #130.
- Support multiple context directories. This basically allows to execute Tailor once for multiple directories. Alongside, template and param dir flags have been cleaned up. See #113 for more details.
- Hide internal annotations (#112)
- Unify annotation names. You can delete existing annotations in OCP starting
with
original-values.tailor.ioandmanaged-annotations.tailor.opendevstack.org. Note that this is a breaking change: Tailor will show drift on e.g. image references inDeploymentConfigresources. Oncetailor updatehas run (if the referenced image tag did not change, no de-deployment will happen), the drift disappears. See #76. - Avoid drift on empty values to reduce template boilerplate (#107)
- Hide secrets drift by default. If drift should be shown, pass
--reveal-secrets(#109) - Prevent resource recreation by default. If re-creation should be allowed, pass
--allow-recreate(#111) - Extract OpenShift client to allow easier testing. This should have no effect on the tool itself (#118)
- Adopt github.com/golang-standards/project-layout. This should have no effect on the tool itself.
- Exclusion of kinds/resources/labels via the
--excludeflag (#115).
- Addressed issues reported by golangci-lint (#119, thanks @u5surf).
- Do not issue removal patches when a path with an array value is ignored
- Item is not found when both name and selector is given (oc returns a single item then instead of a list).
TAILOR_NAMESPACEdetection was not working (#100).
- The
ocbinary might have a different version than the targeted cluster. This can lead to incorrect behaviour (e.g. constant drift). To avoid this, Tailor now checks whether the client and server version match and refuses to continue if this is not the case. Users running Tailor against multiple clusters with differing versions can now specify theocbinary to use via--oc-binaryor disregard the warning and proceed with--force. As a side-effect of this change, all operations require anoc loginnow. See #88. - In OCP versions above 3.9, a new field
lastTriggeredImageis added toimageChangeParamsautomatically. The value is not known to template authors and consequently stripped from the export before comparison (#90).
- Malformed templates caused a panic previously. Now a human-friendly error is displayed pointing at the syntax problem (#85).
- Automatically pass
TAILOR_NAMESPACEparam to templates if they define it in theparameterssection. The value is set to the namespace that Tailor runs against (#77).
- Unify log output during update (#78).
- Remove metadata from template as it is unsused by Tailor (#74).
- Ignore selector (e.g. set in a
Tailorfile) when a specific resource is given as Openshift does not accept both selector and resource (#72). - Surface errors during export as template (#70).
- Remove annotations from exported templates also in case they contain slashes (#73).
- [Feature] Rewrite diff engine. Tailor now uses
oc patchunder the hood to to update resources (instead ofoc apply). The new behaviour is more correct and less dangerous. (#49) - [Feature] Warn before all resources are deleted.
--forcehas to be given to proceed in this case. (#66) - [Feature] Implement flag to ignore paths,
--ignore-path. Paths can be ignored for all kinds, for one kind or for one resource. (#63) - [Feature] Add change summary at the end of
statusandupdatecommands. - [Feature] Support multiple param files via repearing
--param-file. (#56) - [Feature] Check if OCP project exists during initialisation. (#55)
- [Fix] Apply resource changes in specific order, starting with resources that do not have dependencies. (#54)
- [Task] Treat creationTimestamp as platform managed field (#51)
- [Task] Switch to Go 1.11 modules (#52)
- [Feature] Implement general handling of immutable fields. Previously Tailor tried to modify the resource which resulted in an error, now it recreates the resource (#33).
- [Feature] Add
--debugflag, which contains debug information, reducing the amount of printed information when--verboseis given.--debugimplies--verbose. - [Fix] Image reference changed accidentally when other parts of the DeploymentConfig changed (#38).
- [Fix] Propagate exit code from
ocproperly when runningtailor update.
- [Feature] Support multiple labels (#7).
- [Feature] Allow comments in
Tailorfile(either#or//). - [Fix] Allow whitespace around flags and their arguments in
Tailorfile. - [Fix] Check param dir existance if explicitly given (#24).
- [Fix] Don't panic when params are duplicated (#12).
- [Fix] Prevent original values annotation in exports (#3 and #5).
- [Task] Improve text about resource limiting (#25).
- [Task] Improve diff description (#6).
- [Task] Show found resources (#14).
- [Fix] Respect flags defined in Tailorfile that have default values (#22).
- [Feature]
Tailorfilesupport. - [Task] Use compact help template (which allows to show help for just one command).
- [Fix] Fix wrong export target when just one resource is specified (#11).
- [Fix] Percent signs (%) are not automatically encoded (duplicated) to prevent issues (#4).
- [Fix] Error when deleting resource due to
--selectornot allowed during delete operation (#13).
- Fix exiting with 1 and error statement all the time even though everything went fine.
- Rename
ocdifftotailorand release on GitHub.
- Prevent rendering when no public key files are found.
- Check if file exists at beginning of reveal command.
- Proper error message if editor is not found in PATH.
- Fix wrong export when a single resource was targeted.
- Prefer folder
public-keysover working dir if present when looking for public keys. - Increase specifity of blacklisted key regexes.
- Prefer folder ``` over working dir if present when looking for param files.
- Deal with modified values by saving the original value in an annotation and resetting the key to that value before comparing.
- Compile and compare single list instead of multiple lists. This reduces the number of API calls required and allows to export properly.
- Secrets handling (PGP encryption)
Initial version