Skip to content

v0.11.0

Compare
Choose a tag to compare
@hasbro17 hasbro17 released this 11 Oct 21:55
· 1883 commits to master since this release
v0.11.0
39c65c3

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)
  • 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.11.0 by checking the Version Upgrade Guide