Skip to content

Releases: operator-framework/operator-sdk

v0.15.2

13 Feb 23:02
ffaf278
Compare
Choose a tag to compare

Changed

  • Operator user setup and entrypoint scripts no longer insert dynamic runtime user entries into /etc/passwd. To use dynamic runtime users, use a container runtime that supports it (e.g. CRI-O). (#2469)

Bug Fixes

  • Fixed a regression in the operator-sdk run command that caused --local flags to be ignored (#2478)

v0.15.1

28 Jan 00:20
v0.15.1
e35ec7b
Compare
Choose a tag to compare

Bug Fixes

  • Fixed issue with Go dependencies caused by removed tag in openshift/api repository (#2466)

v0.15.0

22 Jan 23:38
21a93ca
Compare
Choose a tag to compare

Added

Changed

  • Changed error wrapping according to Go version 1.13+ error handling. (#2355)
  • Added retry logic to the cleanup function from the e2e test framework in order to allow it to be achieved in the scenarios where temporary network issues are faced. (#2277)
  • Breaking Change: Moved olm-catalog gen-csv to the generate csv subcommand. (#2439)
  • Breaking Change: run ansible/helm are now the hidden commands exec-entrypoint ansible/helm. All functionality of each subcommand is the same. (#2441)
  • Breaking Change: up local is now run --local. All functionality of this command is the same. (#2441)
  • Breaking Change: Moved the olm subcommand from alpha to its own subcommand. All functionality of this command is the same. (#2447)

Bug Fixes

  • Fixed a regression in the helm-operator that caused all releases to be deployed in the same namespace that the operator was deployed in, regardless of which namespace the CR was created in. Now release resources are created in the same namespace as the CR. (#2414)
  • Fix issue when the test-framework would attempt to create a namespace exceeding 63 characters. pkg/test/NewCtx() now creates a unique id instead of using the test name. TestCtx.GetNamespace() uses this unique id to create a namespace that avoids this scenario. (#2335)

Note: See how to upgrade your project to the version v0.15.0 by checking the Version Upgrade Guide

v0.14.1

20 Jan 17:37
v0.14.1
1c3106a
Compare
Choose a tag to compare

Bug Fixes

  • Fixed a regression in the helm-operator that caused all releases to be deployed in the same namespace that the operator was deployed in, regardless of which namespace the CR was created in. Now release resources are created in the same namespace as the CR. (#2414)

Note: See how to upgrade your project to the version v0.14.1 by checking the Version Upgrade Guide

v0.14.0

10 Jan 23:26
v0.14.0
4fb185b
Compare
Choose a tag to compare

Added

  • Added new --bundle flag to the operator-sdk scorecard command to support bundle validation testing using the validation API (https://github.com/operator-framework/api). (#1916
  • Added new log field to the operator-sdk scorecard v1alpha2 output to support tests that produce logging. (#1916
  • Added new bundle validation test to the operator-sdk scorecard OLM tests. (#1916
  • Added scorecard test short names to each scorecard test to allow users to run a specific scorecard test using the selector flag. (#1916
  • Improve Ansible logs in the Operator container for Ansible-based Operators. (#2321)
  • Added support for override values with environment variable expansion in the watches.yaml file for Helm-based operators. (#2325)

Changed

  • Replace usage of github.com/operator-framework/operator-sdk/pkg/restmapper.DynamicRESTMapper with sigs.k8s.io/controller-runtime/pkg/client/apiutil.DynamicRESTMapper. (#2309)
  • Upgraded Helm operator packages and base image from Helm v2 to Helm v3. Cluster state for pre-existing CRs using Helm v2-based operators will be automatically migrated to Helm v3's new release storage format, and existing releases may be upgraded due to changes in Helm v3's label injection. (#2080)
  • Fail operator-sdk olm-catalog gen-csv if it is not run from a project's root, which the command already assumes is the case. (#2322)
  • Breaking Change: Extract custom Ansible module k8s_status, which is now provided by the operator_sdk.util Ansible collection. See developer_guide for new usage. (#2310)
  • Upgrade minimal Ansible version in the init projects from 2.6 to 2.9 for collections support. (#2310)
  • Improve skip metrics logs when running the operator locally in order to make clear the information. (#2190)
  • Upgrade controller-tools version from v0.2.2 to v0.2.4. (#2368)

Deprecated

  • Deprecated github.com/operator-framework/operator-sdk/pkg/restmapper in favor of the DynamicRESTMapper implementation in controller-runtime. (#2309)

Bug Fixes

  • Fix operator-sdk build's --image-build-args to support spaces within quotes like --label some.name="First Last". (#2312)
  • Fix misleading Helm operator "release not found" errors during CR deletion. (#2359)

Note: See how to upgrade your project to the version v0.14.0 by checking the Version Upgrade Guide

v0.13.0

10 Dec 21:47
v0.13.0
1af9c95
Compare
Choose a tag to compare

v0.13.0

Added

  • Support for vars in top level ansible watches. (#2147)
  • Support for "ansible.operator-sdk/verbosity" annotation on Custom Resources watched by Ansible based operators to override verbosity on an individual resource. (#2102)
  • Support for relative helm chart paths in the Helm operator's watches.yaml file. (#2287)
  • New operator-sdk generate crds subcommand, which generates CRDs from Go types. (#2276)
  • Go API code can now be annotated to populate a CSV's spec.customresourcedefinitions.owned field on invoking olm-catalog gen-csv. (#1162)

Changed

  • Upgrade minimal Ansible version in the init projects from 2.4 to 2.6. (#2107)
  • Upgrade Kubernetes version from kubernetes-1.15.4 to kubernetes-1.16.2. (#2145)
  • Upgrade Helm version from v2.15.0 to v2.16.1. (#2145)
  • Upgrade controller-runtime version from v0.3.0 to v0.4.0. (#2145)
  • Updated pkg/test/e2eutil.WaitForDeployment() and pkg/test/e2eutil.WaitForOperatorDeployment() to successfully complete waiting when the available replica count is at least (rather than exactly) the minimum replica count required. (#2248)
  • Replace in the Ansible based operators module tests k8s_info for k8s_facts which is deprecated. (#2168)
  • Upgrade the Ansible version from 2.8 to 2.9 on the Ansible based operators image. (#2168)
  • Updated CRD generation for non-Go operators to use valid structural schema. (#2275)
  • Replace Role verb "*" with list of verb strings in generated files so the Role is compatible with OpenShift and Kubernetes. (#2175)
  • Breaking change: An existing CSV's spec.customresourcedefinitions.owned is now always overwritten except for each name, version, and kind on invoking olm-catalog gen-csv when Go API code annotations are present. (#1162)

Deprecated

  • Deprecated the operator-sdk generate openapi command. CRD generation is still supported with operator-sdk generate crds. It is now recommended to use openapi-gen directly for OpenAPI code generation. The generate openapi subcommand will be removed in a future release. (#2276)

Bug Fixes

  • Fixed log formatting issue that occurred while loading the configuration for Ansible-based operators. (#2246)
  • Fix issue faced in the Ansible based operators when jmespath queries are used because it was not installed. (#2252)
  • Updates operator-sdk build for go operators to compile the operator binary based on Go's built-in GOARCH detection. This fixes an issue that caused an amd64 binary to be built into non-amd64 base images when using operator-sdk on non-amd64 architectures. (#2268)
  • Fix scorecard behavior such that a CSV file is read correctly when olm-deployed is set to true. (#2274)
  • A CSV config's operator-name field will be used if --operator-name is not set. (#2297)
  • Populates a CSV's spec.install strategy if either name or strategy body are missing with a deployment-type strategy. (#2298)
  • When the current leader pod has been hard evicted but not deleted, another pod is able to delete the evicted pod, triggering garbage collection and allowing leader election to continue. (#2210)

Note: See how to upgrade your project to the version v0.13.0 by checking the Version Upgrade Guide

v0.12.0

05 Dec 16:46
v0.12.0
2445fcd
Compare
Choose a tag to compare

v0.12.0

Added

  • Added Operator Version: X.Y.Z information in the operator logs.(#1953)
  • Make Ansible verbosity configurable via the ansible-verbosity flag. (#2087)

Changed

  • Breaking change: Changed required Go version from 1.12 to 1.13. This change applies to the SDK project itself and Go projects scaffolded by the SDK. Projects that import this version of the SDK require Go 1.13 to compile. (#1949)
  • Upgrade Kubernetes version from kubernetes-1.14.1 to kubernetes-1.15.4. (#2083)
  • Upgrade Helm version from v2.14.1 to v2.15.0. (#2083)
  • Upgrade controller-runtime version from v0.2.0 to v0.3.0. (#2083)
  • Upgrade controller-tools version from v0.2.1+git to v0.2.2. (#2083)

Removed

  • Removed --dep-manager flag and support for dep-based projects. Projects will be scaffolded to use Go modules. (#1949)

Bug Fixes

  • OLM internal manager is not returning errors in the initialization. (#1976)
  • Added missing default role permission for deployments, which is required to create the metrics service for the operator. (#2090)
  • Handle invalid maxArtifacts annotation on CRs for Ansible based operators. (2093)
  • When validating package manifests, only return an error if default channel is not set and more than one channel is available. (#2116)

Note: See how to upgrade your project to the version v0.12.0 by checking the Version Upgrade Guide

v0.11.0

11 Oct 21:55
v0.11.0
39c65c3
Compare
Choose a tag to compare

v0.11.0

Added

  • Added new --skip-generation flag to the operator-sdk add api command to support skipping generation of deepcopy and OpenAPI code and OpenAPI CRD specs. (#1890)
  • The operator-sdk olm-catalog gen-csv command now produces indented JSON for the alm-examples annotation. (#1793)
  • Added flag --dep-manager to command operator-sdk print-deps to specify the type of dependency manager file to print. The choice of dependency manager is inferred from top-level dependency manager files present if --dep-manager is not set. (#1819)
  • Ansible based operators now gather and serve metrics about each custom resource on port 8686 of the metrics service. (#1723)
  • Added the Go version, OS, and architecture to the output of operator-sdk version (#1863)
  • Added support for ppc64le-linux for the operator-sdk binary and the Helm operator base image. (#1533)

Changed

  • The Helm operator now uses the CR name for the release name for newly created CRs. Existing CRs will continue to use their existing UID-based release name. When a release name collision occurs (when CRs of different types share the same name), the second CR will fail to install with an error about a duplicate name. (#1818)
  • Commands olm uninstall and olm status no longer use a --version flag to specify OLM version. This information is now retrieved from the running cluster. (#1634)
  • The Helm operator no longer prints manifest diffs in the operator log at verbosity levels lower than INFO (#1857)
  • CRD manifest spec.version is still supported, but users will see a warning message if spec.versions is not present and an error if spec.versions is populated but the version in spec.version is not in spec.versions. (#1876)
  • Upgrade base image for Go, Helm, and scorecard proxy from registry.access.redhat.com/ubi7/ubi-minimal:latest to registry.access.redhat.com/ubi8/ubi-minimal:latest. (#1952)
  • Upgrade base image for Ansible from registry.access.redhat.com/ubi7/ubi:latest to registry.access.redhat.com/ubi8/ubi:latest. (#1990 and #2004)
  • Updated kube-state-metrics dependency from v1.6.0 to v1.7.2. (#1943)

Breaking changes

See the v0.11.x version upgrade guide for more details on how to adjust for these breaking changes.

  • Upgrade Kubernetes version from kubernetes-1.13.4 to kubernetes-1.14.1 (#1876)
  • Upgrade github.com/operator-framework/operator-lifecycle-manager version from b8a4faf68e36feb6d99a6aec623b405e587b17b1 to 0.10.1 (#1876)
  • Upgrade controller-runtime version from v0.1.12 to v0.2.0 (#1876)
    • The package sigs.k8s.io/controller-runtime/pkg/runtime/scheme is deprecated, and contains no code. Replace this import with sigs.k8s.io/controller-runtime/pkg/scheme where relevant.
    • The package sigs.k8s.io/controller-runtime/pkg/runtime/log is deprecated. Replace this import with sigs.k8s.io/controller-runtime/pkg/log where relevant.
    • The package sigs.k8s.io/controller-runtime/pkg/runtime/signals is deprecated. Replace this import with sigs.k8s.io/controller-runtime/pkg/manager/signals where relevant.
    • All methods on sigs.k8s.io/controller-runtime/pkg/client.Client (except for Get()) have been updated. Instead of each using a struct-typed or variadic functional option parameter, or having no option parameter, each now uses a variadic interface option parameter typed for each method. See List() below for an example.
    • sigs.k8s.io/controller-runtime/pkg/client.Client's List() method signature has been updated: List(ctx context.Context, opts *client.ListOptions, list runtime.Object) error is now List(ctx context.Context, list runtime.Object, opts ...client.ListOption) error. To migrate:
      import (
        "context"
      
        "sigs.k8s.io/controller-runtime/pkg/client"
      )
      
      ...
      
      // Old
      listOpts := &client.ListOptions{}
      listOpts.InNamespace("namespace")
      err = r.client.List(context.TODO(), listOps, podList)
      // New
      listOpts := []client.ListOption{
        client.InNamespace("namespace"),        
      }
      err = r.client.List(context.TODO(), podList, listOpts...)
  • pkg/test.FrameworkClient methods List() and Delete() have new signatures corresponding to the homonymous methods of sigs.k8s.io/controller-runtime/pkg/client.Client. (#1876)
  • CRD file names were previously of the form <group>_<version>_<kind>_crd.yaml. Now that CRD manifest spec.version is deprecated in favor of spec.versions, i.e. multiple versions can be specified in one CRD, CRD file names have the form <full group>_<resource>_crd.yaml. <full group> is the full group name of your CRD while <group> is the last subdomain of <full group>, ex. foo.bar.com vs foo. <resource> is the plural lower-case CRD Kind found at spec.names.plural. (#1876)
  • Upgrade Python version from 2.7 to 3.6, Ansible version from 2.8.0 to ~=2.8 and ansible-runner from 1.2 to 1.3.4 in the Ansible based images. (#1947)
  • Replaced pkg/kube-metrics.NewCollectors() with pkg/kube-metrics.NewMetricsStores() and changed exported function signature for pkg/kube-metrics.ServeMetrics() due to a breaking change in kube-state-metrics. (#1943)

Removed

  • Removed flag --as-file from command operator-sdk print-deps, which now only prints packages and versions in dependency manager file format. The choice of dependency manager type is set by --dep-manager or inferred from top-level dependency manager files present if --dep-manager is not set. (#1819)

Bug Fixes

  • Configure the repo path correctly in operator-sdk add crd and prevent the command from running outside of an operator project. (#1660)
  • In the Helm operator, skip owner reference injection for cluster-scoped resources in release manifests. The Helm operator only supports namespace-scoped CRs, and namespaced resources cannot own cluster-scoped resources. (#1817)
  • Package manifests generated with gen-csv respect the --operator-name flag, channel names are checked for duplicates before (re-)generation. (#1693)
  • Generated inventory for Ansible-based Operators now sets the localhost's ansible_python_interpreter to {{ ansible_playbook_python }}, to properly match the implicit localhost. (#1952)
  • Fixed an issue in operator-sdk olm-catalog gen-csv where the generated CSV is missing the expected set of owned CRDs. (#2017)
  • The command operator-sdk olm-catalog gen-csv --csv-version=<version> --update-crds would fail to copy over CRD manifests into deploy/olm-catalog for manifests whose name didn't end with a _crd.yaml suffix. This has been fixed so gen-csv now copies all CRD manifests specified by deploy/olm-catalog/csv_config.yaml by checking the type of the manifest rather than the filename suffix. (#2015)
  • Added missing jmespath dependency to Ansible-based Operator .travis.yml file template. ([#2027](http...
Read more

v0.10.1

10 Oct 21:04
v0.10.1
872e7d9
Compare
Choose a tag to compare

v0.10.1

Bug Fixes

  • The command operator-sdk olm-catalog gen-csv --csv-version=<version> --update-crds would fail to copy over CRD manifests into deploy/olm-catalog for manifests whose name didn't end with a _crd.yaml suffix. This has been fixed so gen-csv now copies all CRD manifests specified by deploy/olm-catalog/csv_config.yaml by checking the type of the manifest rather than the filename suffix. (#2015)
  • Fixed an issue in operator-sdk olm-catalog gen-csv where the generated CSV is missing the expected set of owned CRDs. (#2017)
  • Fixed invalid usage of logr.Logger.Info() in the Ansible-based operator implementation, which caused unnecessary operator panics. (#2031)

Note: See how to upgrade your project to the version v0.10+ by checking the Version Upgrade Guide

v0.10.0

08 Aug 20:26
v0.10.0
ff80b17
Compare
Choose a tag to compare

Added

  • Document new compile-time dependency mercurial in user-facing documentation. (#1683)
  • Adds new flag --zap-time-encoding to the flagset provided by pkg/log/zap. This flag configures the timestamp format produced by the zap logger. See the logging doc for more information. (#1529)

Changed

  • Breaking change: CSV config field role-path is now role-paths and takes a list of strings. Users can now specify multiple Role and ClusterRole manifests using role-paths. (#1704)
  • Make ready package idempotent. Now, a user can call Set() or Unset() to set the operator's readiness without knowing the current state. (#1761)

Bug Fixes

  • Check if metadata.annotations['alm-examples'] is non-empty before creating contained CR manifests in the scorecard. (#1789)

Note: See how to upgrade your project to the version v0.10+ by checking the Version Upgrade Guide