Releases: operator-framework/operator-sdk
Releases · operator-framework/operator-sdk
v1.0.0
v1.0.0
Since v0.19
Additions
- The Ansible and Helm operators have a
version
subcommand that prints the version information for theansible-operator
andhelm-operator
binaries. (#3596) - Added
--ansible-args
command-line flag that allows users to specify arbitrary CLI arguments for Ansible-based operators that are passed through ansible-runner. For example, passing--ansible-vault
as an arbitrary argument allows user to store sensitive data in encrypted files. (#3374) generate bundle
andgenerate packagemanifests
will write RBAC objects (Roles, RoleBindings, their Cluster equivalents, and ServiceAccounts) not bound to CSV deployment service accounts to the resulting manifests directory. (#3610)- The
snakeCaseParameters
option has been added to thewatches.yaml
for Ansible-based Operators. This allows the user to configure whether parameters in the resource spec are automatically converted fromcamelCase
tosnake_case
. The default istrue
, so there is no behavior change for existing operators, but it can now be disabled. (#3245) - Added
projectName
key to the PROJECT config file (v3-alpha+). (#3438) - Added the
--from-version
flag togenerate packagemanifests
. (#3509) - The
generate bundle
command now adds scorecard bundle metadata tobundle.Dockerfile
andannotations.yaml
if--overwrite
is set (the default in a project'sMakefile
) or both files do not exist. (#3474) - Added
config/scorecard
kustomize scaffolds toinit
. (#3490)
Changes
- Breaking change: Changed the
go.sdk.operatorframework.io
plugin to only write aplugins
PROJECT field and run the OLM integration and scorecard plugins if the project version is "3-alpha" or above. (#3697) - Breaking change: Added a scaffold marker
+kubebuilder:scaffold:manifestskustomizesamples
toconfig/samples/kustomization.yaml
that allows updates without overwriting the entire file. (#3645) - Breaking change: Added
IMG
argument tobundle
make rule that accepts an operator image tag. This tag will be inserted into the manager's deployment manifest whenmake bundle IMG=<tag>
is run. (#3634) - Breaking change: Updated
operator-sdk cleanup
command to be more generic. (#3644) - Breaking change: Default install mode for
run packagemanifests
changed fromOwnNamespace
toAllNamespaces
. (#3663) - Breaking change: The Ansible and Helm operators now use controller-runtime's zap package to define logging flags. (#3596)
- Breaking change: The Ansible and Helm operators now use a
run
subcommand to run the operator. (#3596) - The
generate bundle
subcommand no longer requires a default channel be set nor defaults to the first channel provided to--channels
. (#3602) - The
bundle validate
subcommand no longer returns an error if a bundle does not have a default channel. (#3602) - Breaking change: The
--update-crds
flag has been renamed to--update-objects
for thegenerate packagemanifests
subcommand. (#3610) - Breaking change: Changed
--operator-version
flag to--version
inrun packagemanifests
. (#3599) - Breaking change: Changed
--operator-namespace
flag to--namespace
inrun packagemanifests
. (#3601) - Use structured logging in Ansible and Helm operator base images when printing version information. (#3564)
- The Ansible and Helm-based operators now use the controller-runtime's lease-based leader election instead of SDK's leader-for-life mechanism. (#3457) & (#3446)
- Breaking change: Added
--metrics-addr
flag to the Ansible and Helm-based operators to make it configurable, and changed the default port from:8383
to:8080
. (#3489) & (#3440) - Breaking change: Changed domain suffix used for plugins and CR annotations to consistently use
.sdk.operatorframework.io
. (#3527) - Breaking change: Removed the implementation for
EnqueueRequestForAnnotation
handler from the SDK repository and referenced it from operator-lib instead. (#3506) - Breaking change: The Ansible operator implementation in
pkg/ansible
was moved tointernal/ansible
. (#3560) - Breaking change: The Helm operator implementation in
pkg/helm
was moved tointernal/helm
. (#3537) - Breaking change: The Ansible operator's
--max-workers
flag andWORKERS_<Kind>_<Group>
environment variable have been renamed to--max-concurrent-reconciles
andMAX_CONCURRENT_RECONCILES_<Kind>_<Group>
respectively. (#3452) - Breaking change: The
meta
variable passed to Ansible playbooks and roles has been renamed toansible_operator_meta
. (#3562) - Breaking change: The scorecard configuration is now implemented as a componentconfig object and now includes a new top-level
stages
field, which allows users to define stages of tests and to enable parallelism within each stage. (#3490) & (#3434) - When a namespace is not provided on the command line, the scorecard command now looks for a namespace in the kubeconfig. If a namespace can not be found in the kubeconfig file, then 'default' is used. (#3478)
- Use on-disk bundle metadata in scorecard (either unpacked from an image or directly if a directory is passed) as the source of truth for bundle metadata, and not image labels which are informative only. (#3450)
- Breaking change: The
alpha scorecard
command has been promoted to the standard scorecard command. (#3444) - Breaking change: Changed scorecard text and json output to use a
v1alpha3.TestList
instead of aggregating all test results under a singlev1alpha3.Test
and set exit status to 1 when a test fails. (#3427) - Ansible & Helm-based Operators switched to using the
InstrumentedEnqueueRequestForObject
from operator-lib instead of controller-runtime'sEnqueueRequestForObject
. (#3523)
Removals
- Breaking change: Removed
olm-namespace
flag fromoperator-sdk olm install
command. (#3670) - Breaking change: Docker images for s390x architecture are removed due to issues with s390x machines failing to be scheduled and run in Travis CI. (#3710)
- Breaking change: Moved scorecard API v1alpha3 to the api repo under
pkg/apis/scorecard/v1alpha3
. All future scorecard APIs will be released in this repo. (#3622) - Breaking change: Removed package
version
. (#3617) - Breaking change: Removed
--operator-name
fromgenerate
subcommands in favor of usingproject-name
from the PROJECT config file (v3-alpha+). (#3530) - Breaking change: Removed
--include-paths
flag fromrun packagemanifests
. (#3599) - Breaking change: Removed
--olm-namespace
flag fromrun packagemanifests
. (#3601) - Breaking change: Removed support for the legacy layout. Operator SDK has a new CLI and project layout that is aligned with Kubebuilder. ([#3327](https://github.com/operator-framework/oper...
v1.0.0-alpha.2
v1.0.0-alpha.2
For documentation on this release, please visit https://master.sdk.operatorframework.io.
This site tracks the master branch, so documentation updates based on feedback from this alpha release will automatically be reflected until v1.0.0 is released.
Additions
- The Ansible and Helm operators have a
version
subcommand that prints the version information for theansible-operator
andhelm-operator
binaries. (#3596) - Added
--ansible-args
command-line flag that allows users to specify arbitrary CLI arguments for Ansible-based operators that are passed through ansible-runner. For example, passing--ansible-vault
as an arbitrary argument allows user to store sensitive data in encrypted files. (#3374) generate bundle
andgenerate packagemanifests
will write RBAC objects (Roles, RoleBindings, their Cluster equivalents, and ServiceAccounts) not bound to CSV deployment service accounts to the resulting manifests directory. (#3610)
Changes
- Breaking change: The Ansible and Helm operators now use controller-runtime's zap package to define logging flags. (#3596)
- Breaking change: The Ansible and Helm operators now use a
run
subcommand to run the operator. (#3596) - The
generate bundle
subcommand no longer requires a default channel be set nor defaults to the first channel provided to--channels
. (#3602) - The
bundle validate
subcommand no longer returns an error if a bundle does not have a default channel. (#3602) - Breaking change: The
--update-crds
flag has been renamed to--update-objects
for thegenerate packagemanifests
subcommand. (#3610) - Breaking change: Changed
--operator-version
flag to--version
inrun packagemanifests
. (#3599) - Breaking change: Changed
--operator-namespace
flag to--namespace
inrun packagemanifests
. (#3601)
Removals
- Breaking change: Moved scorecard API v1alpha3 to the api repo under
pkg/apis/scorecard/v1alpha3
. All future scorecard APIs will be released in this repo. (#3622) - Breaking change: Removed package
version
. (#3617) - Breaking change: Removed
--operator-name
fromgenerate
subcommands in favor of usingproject-name
from the PROJECT config file (v3-alpha+). (#3530) - Breaking change: Removed
--include-paths
flag fromrun packagemanifests
. (#3599) - Breaking change: Removed
--olm-namespace
flag fromrun packagemanifests
. (#3601)
Bug Fixes
v0.19.2
v1.0.0-alpha.1
v1.0.0-alpha.1
For documentation on this release, please visit https://master.sdk.operatorframework.io.
This site tracks the master
branch, so documentation updates based on feedback from this alpha release will automatically be reflected until v1.0.0
is released.
Additions
- The
snakeCaseParameters
option has been added to thewatches.yaml
for Ansible-based Operators. This allows the user to configure whether parameters in the resource spec are automatically converted fromcamelCase
tosnake_case
. The default istrue
, so there is no behavior change for existing operators, but it can now be disabled. (#3245) - Added
projectName
key to the PROJECT config file (v3-alpha+). (#3438) - Added the
--from-version
flag togenerate packagemanifests
. (#3509) - The
generate bundle
command now adds scorecard bundle metadata tobundle.Dockerfile
andannotations.yaml
if--overwrite
is set (the default in a project'sMakefile
) or both files do not exist. (#3474) - Added
config/scorecard
kustomize scaffolds toinit
. (#3490)
Changes
- Use structured logging in Ansible and Helm operator base images when printing version information. (#3564)
- The Ansible and Helm-based operators now use the controller-runtime's lease-based leader election instead of SDK's leader-for-life mechanism. (#3457) & (#3446)
- Breaking change: Added
--metrics-addr
flag to the Ansible and Helm-based operators to make it configurable, and changed the default port from:8383
to:8080
. (#3489) & (#3440) - Breaking change: Changed domain suffix used for plugins and CR annotations to consistently use
.sdk.operatorframework.io
. (#3527) - Breaking change: Removed the implementation for
EnqueueRequestForAnnotation
handler from the SDK repository and referenced it from operator-lib instead. (#3506) - Breaking change: The Ansible operator implementation in
pkg/ansible
was moved tointernal/ansible
. (#3560) - Breaking change: The Helm operator implementation in
pkg/helm
was moved tointernal/helm
. (#3537) - Breaking change: The Ansible operator's
--max-workers
flag andWORKERS_<Kind>_<Group>
environment variable have been renamed to--max-concurrent-reconciles
andMAX_CONCURRENT_RECONCILES_<Kind>_<Group>
respectively. (#3452) - Breaking change: The
meta
variable passed to Ansible playbooks and roles has been renamed toansible_operator_meta
. (#3562) - Breaking change: The scorecard configuration is now implemented as a componentconfig object and now includes a new top-level
stages
field, which allows users to define stages of tests and to enable parallelism within each stage. (#3490) & (#3434) - When a namespace is not provided on the command line, the scorecard command now looks for a namespace in the kubeconfig. If a namespace can not be found in the kubeconfig file, then 'default' is used. (#3478)
- Use on-disk bundle metadata in scorecard (either unpacked from an image or directly if a directory is passed) as the source of truth for bundle metadata, and not image labels which are informative only. (#3450)
- Breaking change: The
alpha scorecard
command has been promoted to the standard scorecard command. (#3444) - Breaking change: Changed scorecard text and json output to use a
v1alpha3.TestList
instead of aggregating all test results under a singlev1alpha3.Test
and set exit status to 1 when a test fails. (#3427) - Ansible & Helm-based Operators switched to using the
InstrumentedEnqueueRequestForObject
from operator-lib instead of controller-runtime'sEnqueueRequestForObject
. (#3523)
Removals
- Breaking change: Removed support for the legacy layout. Operator SDK has a new CLI and project layout that is aligned with Kubebuilder. (#3327) (#3343) (#3547) (#3566) (#3343) (#3466) (#3531) (#3451) (#3414) (#3414) (#3414) (#3414) (#3385) (#3406)
- Breaking change: Moved
pkg/log/zap
tointernal/log/zap
, therefore it is no longer a public API. (#3525) - Breaking change: Removed
pkg/predicate
:ResourceFilterPredicate
. (#3532) - Breaking change: Refactored and moved
pkg/predicate.GenerationChangedPredicate
(see this operator-lib PR for details). (#3532) - Breaking change: Removed
test
subcommand and the test frameworkpkg/test
. (#3409) - Breaking change: Removed
pkg/k8sutils
and its helpers methodsGetWatchNamespace()
,GetOperatorNamespace()
,GetOperatorName()
,ResourceExists()
,GetPod()
,GetGVKsFromAddToScheme()
andSupportsOwnerReference()
. (#3475) - Breaking change: Removed
pkg/kube-metrics
and its associated helpersNewNamespacedMetricsStores()
,NewClusterScopedMetricsStores()
,ServeMetrics()
, andGenerateAndServeCRMetrics()
. (#3484) - Breaking change: Removed
pkg/leader
andpkg/status
. These are now part of operator-lib. (#3503) - Breaking change: Removed
pkg/metrics
and its helpersGenerateAndServeCRMetrics()
andGetNamespacesForMetrics()
. (#3484) - Breaking change: Removed
pkg/ready
and its helper utilsReady
,Set()
,Unset()
. (#3476) - Breaking change: Removed
pkg/tls
since that pkg is a leftover from an earlier effort to make certificate management easier, but was abandoned in favor of alternatives like cert-manager. (#3468)
Bug Fixes
- Fixed a bug that caused the Ansible operator not to set the environment variables
ANSIBLE_ROLES_PATH
andANSIBLE_COLLECTIONS_PATH
based on the flags--ansible-roles-path
and--ansible-collections-path
. (#3549) - Use group and kind instead of only kind when parsing manifests in the CSV generator to avoid marshaling them into the wrong Go types. (#3334)
- Fixed issue that caused scorecard to fail loading local bundle due to a bug search method for the bundle metadata directory. (#3408)
- Fixed CVE-2020-14040 by updating to
golang.org/x/text/0.3.3
. (#3458) - The
scorecard
subcommand now removes existing pods if the--wait-time
deadline is exceeded and--skip-cleanup=false
(the default). Fixes #3419. (#3526) - Fixed a bug in scorecard that caused tests to fail with permission errors when loading the bundle. (#3428)
v0.19.1
For documentation on this release, please visit https://v0-19-x.sdk.operatorframework.io/.
Additions
- Added the
--from-version
flag togenerate packagemanifests
. (#3524)
Bug Fixes
- Fixed a bug that caused the Ansible operator not to set the environment variables
ANSIBLE_ROLES_PATH
andANSIBLE_COLLECTIONS_PATH
based on the flags--ansible-roles-path
and--ansible-collections-path
. (#3565)
v0.19.0
Note: this release includes ansible-operator
and helm-operator
binaries built for all corresponding image build architectures. See #3327 for details.
Additions
- Add "panic" level for --zap-stacktrace-level (allows "debug", "info", "error", "panic"). (#3040)
- The
operator-sdk
binary has a new CLI workflow and project layout for scaffolding Go operators that is aligned with Kubebuilder's CLI and project layout. See the new Quickstart Guide and the new CLI reference for more details. (#3190) bundle validate
can now use a containerd image ("none") tool to unpack images, removing the need for an external image tool like docker/podman. (#3222)- The SDK
scorecard
command adds a new test image, scorecard-test-kuttl, that allows end users to write and execute kuttl based tests. (#3278) - Add "--olm-namespace" flag to olm subcommands (install, uninstall) to allow users to specify the namespace where olm is to be installed or uninstalled. (#3300)
- Add sdk annotations to bundle resources (CSVs,
annotations.yaml
andbundle.dockerfile
). (#3120) - Add "--version" flag to olm subcommands (uninstall, status) to allow users to override the version of olm inferred from packageserver's CSV. (#3279)
- Alias
run packagemanifests
asrun pm
. (#3314) - Add
generate kustomize manifests
subcommand for new project layouts. (#3258) - Add
generate packagemanifests
subcommand for legacy project layouts. (#3149) - Add
generate packagemanifests
subcommand for new project layouts. (#3096) - Added predicate filtering function for labels based on selectors specified in watches.yaml. Events of resources that match the selector's labels will be skipped. (#3275)
- Add builds for
ansible-operator
andhelm-operator
binaries. (#3363) - Add new scorecard APIVersion "osdk.openshift.io/v1alpha3" and types. (#3125)
Changes
- Breaking change: Prevent the ansible-operator from mangling variables containing the uppercase representations of special words (e.g IP, HTTP, etc). (#3265)
- Breaking change: In Helm-based operators, the
UpdateSuccessful
condition reason was renamed toUpgradeSuccessful
to better align with Helm nomenclature. (#3345) - Breaking change: In Helm-based operators, the
UpdateError
condition reason was renamed toUpgradeError
to better align with Helm nomenclature. (#3269) - Upgrade Helm dependency for Helm based-Operators from
v3.2.0
tov3.2.4
in order to fix CVE-2020-4053. (#3313) - Change default value of
--overwrite
flag inoperator-sdk generate bundle
to true. (#3280) - The scorecard-test-kuttl image was updated to be based off the v0.5.1 version of kudobuilder/kuttl. This update fixes bugs found in kuttl v0.5.0. (#3369)
- The
alpha scorecard
subcommand now outputs results as a scorecard.operatorframework.io/v1alpha3 Test instead of a scorecard.operatorframework.io/v1alpha2 ScorecardOutput. As a result, the--list
argument will now just output a list of tests, without associated labels. (#3208)
Removals
- The
operator-sdk new
command no longer supports scaffolding new Go projects with the--type=Go
flag. To scaffold new projects, users are expected to useoperator-sdk init
as part of the new CLI for Go operators. (#3190)
Deprecations
- With the introduction of the new Kubebuilder aligned CLI and project layout for Go operators, the old CLI will still continue to work for Go projects scaffolded in the old layout with
operator-sdk new
. However the old CLI is now deprecated and will be removed in a future release. (#3190) - The migrate sub-command is deprecated. (#3319)
- Deprecate 'operator-sdk add crd'. Use 'operator-sdk add api' instead. (#3180)
bundle create
is deprecated in favor of a combination ofgenerate bundle
anddocker build -f bundle.Dockerfile ...
. (#3323)generate csv
is deprecated in favor ofgenerate bundle
orgenerate packagemanifests
. (#3322)- The flag
--git-init
in thenew
command was deprecated. (#3241)
Bug Fixes
- Fix leader election of follower showing that an old leader will be evicted when the current leader is healthy. (#3059)
- Fix bug in
operator-sdk bundle validation
that causes erroneous validation errors when the number of annotations in an existingannotations.yaml
does not equal the number of default bundle annotations by upgrading theoperator-registry
dependency. (#3221) - Fix the download URL for the
tini
binary on ARM64 for the ansible operator base image. (#3234) - The
generate crds
subcommand now checks for the existence of thepkg/apis
directory and logs a descriptive fatal error message if it does not exist or is not a directory. (#3091) - Fix bug in
bundle validate
that erroneously causes errors when a CRD manifest contains versions not present in a bundled CSV by bumping the api library version. (#3282) - Bump api validation library to fix "CRD key not found" validation bug. (#3154)
v0.17.2
v0.18.2
Bug Fixes
- Fix bug in
operator-sdk bundle validate
that causes erroneous validation errors when the number of annotations in an existingannotations.yaml
does not equal the number of default bundle annotations by upgrading theoperator-registry
dependency. (#3284) - Fix the download URL for the
tini
binary on ARM64 for the ansible operator base image. (#3286) - Fix bug in
bundle validate
that erroneously causes errors when a CRD manifest contains versions not present in a bundled CSV by bumping the api library version. (#3288)
v0.18.1
v0.18.0
Additions
- The Ansible operator now includes a healthz endpoint and liveness probe. All operators will now have a running healthz endpoint (not publicly exposed) without changes. (#2936)
- Adds the ability for Helm operators to properly watch and reconcile when cluster-scoped release resources are changed. (#2987)
- The CSV generator adds admission webhook config manifests present in --deploy-dir to new and existing CSV manifests. (#2729)
- Add 'run packagemanifests' subcommand, which has the same functionality of the deprecated 'run --olm' mode. (#3016)
- 'bundle generate' generates bundles for current project layouts; this has the same behavior as 'generate csv --make-manifests=true'. (#3088)
- Set a default channel to the channel supplied to 'bundle create --channels=' if exactly one channel is set. (#3124)
- Add '--kubeconfig' flag to '<run|cleanup> packagemanifests'. (#3067)
- Add support for additional API creation for Anisble/Helm based operators. (#2703)
- Add flag
--interactive
to the commandoperator-sdk generate csv
in order to enable working with interactive prompts while generating CSV. (#2891) - Add new hidden alpha flag
--output
to print the result ofoperator-sdk bundle validate
in JSON format to stdout. Logs are printed to stderr. (#3011) - Add 'run local' subcommand, which has the same functionality of the deprecated 'run --local' mode. (#3067)
- Add scorecard-test image push targets into Makefile. (#3107)
Changes
- In Helm-based operators, reconcile logic now uses three-way strategic merge patches for native kubernetes objects so that array patch strategies are correctly honored and applied. (#2869)
- 'bundle validate' will print errors and warnings from validation. (#3083)
- Breaking change: Set bundle dir permissions to 0755 so they can be read by in-cluster tooling. (#3129)
- Breaking change: Changed the default CRD version from
apiextensions.k8s.io/v1beta1
toapiextensions.k8s.io/v1
for commands that create or generate CRDs. (#2874) - Changed default API version for new Helm-based operators to
helm.operator-sdk/v1alpha1
. Thek8s.io
domain is reserved, so CRDs should not use it without explicit appproval. See the API Review Process for details. (#2859) - Breaking change: Updated Kubernetes dependencies to v1.18.2. (#2918)
- Breaking change: Updated controller-runtime to v0.6.0. (#2918)
- Updated controller-tools to v0.3.0. (#2918)
- Updated helm to v3.2.0. (#2918)
Removals
- Breaking change: The
inotify-tools
as a dependency of Ansible based-operator images which was deprecated and it will no longer scaffold the/bin/ao-logs
which was using it to print the Ansible logs in the side-car since the side-car ansible container was removed in the previous versions. (#2852) - Breaking change: Removed automatic migration of helm releases from v2 to v3. (#2918)
- Breaking change: Removed support for deprecated helm release naming scheme. (#2918)
Deprecations
- Deprecate 'run --olm' mode. Use 'run packagemanifests' instead. (#3016)
- Deprecate '--kubeconfig' flag on the 'cleanup' subcommand. Use 'run packagemanifests' instead. (#3067)
- Deprecate 'run --local' mode. Use 'run local' instead. (#3067)
Bug Fixes
- The Ansible Operator proxy will now return a 500 if it cannot determine whether a resource is virtual or not, instead of continuing on and skipping the cache. This will prevent resources that should have ownerReferences injected from being created without them, which would leave the user in a state that cannot be recovered without manual intervention. (#3112)
- The Ansible Operator proxy no longer will attempt to cache non-status subresource requests. This will fix the issue where attempting to get Pod logs returns the API Pod resource instead of the log contents. (#3103)
- Fix issue faced when the
healthz
endpoint is successfully called. (#3102)