Skip to content

Latest commit

 

History

History
241 lines (157 loc) · 24.9 KB

CHANGELOG.md

File metadata and controls

241 lines (157 loc) · 24.9 KB

Unreleased

Added

  • Adds support for building OCI images with podman, e.g. operator-sdk build --image-builder=podman. (#1488)

Changed

  • Remove TypeMeta declaration from the implementation of the objects #1462

Deprecated

Removed

Bug Fixes

  • Fixes a regression that causes Helm RBAC generation to contain an empty custom ruleset when the chart's default manifest contains only namespaced resources. (#1456)
  • Fixes an issue that causes Helm RBAC generation to fail when creating new operators with a Kubernetes context configured to connect to an OpenShift cluster. (#1461)

v0.8.0

Added

  • New option for operator-sdk build --image-builder, which can be used to specify which image builder to use. Adds support for buildah. (#1311)
  • Manager is now configured with a new DynamicRESTMapper, which accounts for the fact that the default RESTMapper, which only checks resource types at startup, can't handle the case of first creating a CRD and then an instance of that CRD. (#1329)
  • Unify CLI debug logging under a global --verbose flag (#1361)
  • Go module support by default for new Go operators and during Ansible and Helm operator migration. The dependency manager used for a new operator can be explicitly specified for new operators through the --dep-manager flag, available in operator-sdk new and operator-sdk migrate. dep is still available through --dep-manager=dep. (#1001)
  • New optional flag --custom-api-import for operator-sdk add controller to specify that the new controller reconciles a built-in or external Kubernetes API, and what import path and identifier it should have. (#1344)
  • Operator Scorecard plugin support (#1379). Documentation for the scorecard plugins API will be added in PR #1433.

Changed

  • When Helm operator projects are created, the SDK now generates RBAC rules in deploy/role.yaml based on the chart's default manifest. (#1188)
  • When debug level is 3 or higher, we will set the klog verbosity to that level. (#1322)
  • Relaxed requirements for groups in new project API's. Groups passed to operator-sdk add api's --api-version flag can now have no subdomains, ex core/v1. See (#1191) for discussion. (#1313)
  • Renamed --docker-build-args option to --image-build-args option for build subcommand, because this option can now be shared with other image build tools than docker when --image-builder option is specified. (#1311)
  • Reduces Helm release information in CR status to only the release name and manifest and moves it from status.conditions to a new top-level deployedRelease field. (#1309)
    • WARNING: Users with active CRs and releases who are upgrading their helm-based operator should upgrade to one based on v0.7.0 before upgrading further. Helm operators based on v0.8.0+ will not seamlessly transition release state to the persistent backend, and will instead uninstall and reinstall all managed releases.
  • Go operator CRDs are overwritten when being regenerated by operator-sdk generate openapi. Users can now rely on +kubebuilder annotations in their API code, which provide access to most OpenAPIv3 validation properties (the full set will be supported in the near future, see this PR) and other CRD fields. (#1278)
  • Use registry.access.redhat.com/ubi7/ubi-minimal:latest base image for the Go and Helm operators and scorecard proxy (#1376)
  • Allow "Owned CRDs Have Resources Listed" scorecard test to pass if the resources section exists

Deprecated

Removed

  • The SDK will no longer run defaulter-gen on running operator-sdk generate k8s. Defaulting for CRDs should be handled with mutating admission webhooks. (#1288)
  • The --version flag was removed. Users should use the operator-sdk version command. (#1444)
  • Breaking Change: The test cluster subcommand and the corresponding --enable-tests flag for the build subcommand have been removed (#1414)
  • Breaking Change: The --cluster-scoped flag for operator-sdk new has been removed so it won't scaffold a cluster-scoped operator. Read the operator scope documentation on the changes needed to run a cluster-scoped operator. (#1434)

Bug Fixes

  • In Helm-based operators, when a custom resource with a failing release is reverted back to a working state, the ReleaseFailed condition is now correctly removed. (#1321)
  • operator-sdk generate openapi no longer overwrites CRD values derived from +kubebuilder annotations in Go API code. See issues (#1212) and (#1323) for discussion. (#1278)
  • Running operator-sdk gen-csv on operators that do not have a CRDs directory, ex. deploy/crds, or do not have any owned CRDs, will not generate a "deploy/crds not found" error.

v0.7.0

Added

Changed

  • Updated the helm-operator to store release state in kubernetes secrets in the same namespace of the custom resource that defines the release. (#1102)
    • WARNING: Users with active CRs and releases who are upgrading their helm-based operator should not skip this version. Future versions will not seamlessly transition release state to the persistent backend, and will instead uninstall and reinstall all managed releases.
  • Change namespace-manifest flag in scorecard subcommand to namespaced-manifest to match other subcommands
  • Subcommands of operator-sdk generate are now verbose by default. (#1271)
  • operator-sdk olm-catalog gen-csv parses Custom Resource manifests from deploy/crds or a custom path specified in csv-config.yaml, encodes them in a JSON array, and sets the CSV's metadata.annotations.alm-examples field to that JSON. (#1116)

Bug Fixes

  • Fixed an issue that caused operator-sdk new --type=helm to fail for charts that have template files in nested template directories. (#1235)
  • Fix bug in the YAML scanner used by operator-sdk test and operator-sdk scorecard that could result in a panic if a manifest file started with --- (#1258)

v0.6.0

Added

  • New flags for operator-sdk new --type=helm, which can be used to populate the project with an existing chart. (#949)
  • Command operator-sdk olm-catalog flag --update-crds optionally copies CRD's from deploy/crds when creating a new CSV or updating an existing CSV, and --from-version uses another versioned CSV manifest as a base for a new CSV version. (#1016)
  • New flag --olm-deployed to direct the scorecard command to only use the CSV at --csv-path for manifest data, except for those provided to --cr-manifest. (#1044)
  • Command version prints the version of operator-sdk. (#1171)

Changed

  • Changed the Go, Helm, and Scorecard base images to registry.access.redhat.com/ubi7-dev-preview/ubi-minimal:7.6 (#1142)
  • CSV manifest are now versioned according to the operator-registry manifest format. See issue #900 for more details. (#1016)
  • Unexported CleanupNoT function from pkg/test, as it is only intended to be used internally (#1167)

Bug Fixes

  • Fix issue where running operator-sdk test local --up-local would sometimes leave a running process in the background after exit (#1089)

v0.5.0

Added

  • Updated the Kubernetes dependencies to 1.13.1 (#1020)
  • Updated the controller-runtime version to v0.1.10. See the controller-runtime v0.1.10 release notes for new features and bug fixes. (#1020)
  • By default the controller-runtime metrics are exposed on port 8383. This is done as part of the scaffold in the main.go file, the port can be adjusted by modifying the metricsPort variable. #786
  • A new command operator-sdk olm-catalog to be used as a parent for SDK subcommands generating code related to Operator Lifecycle Manager (OLM) Catalog integration, and subcommand operator-sdk olm-catalog gen-csv which generates a Cluster Service Version for an operator so the OLM can deploy the operator in a cluster. (#673)
  • Helm-based operators have leader election turned on by default. When upgrading, add environment variable POD_NAME to your operator's Deployment using the Kubernetes downward API. To see an example, run operator-sdk new --type=helm ... and see file deploy/operator.yaml. #1000
  • A new command operator-sdk generate openapi which generates OpenAPIv3 validation specs in Go and in CRD manifests as YAML. (#869)
  • The operator-sdk add api command now generates OpenAPIv3 validation specs in Go for that API, and in all CRD manifests as YAML.

Changed

  • In new Helm operator projects, the scaffolded CR spec field now contains the default values.yaml from the generated chart. (#967)

Deprecated

Removed

Bug Fixes

v0.4.1

Bug Fixes

  • Make up local subcommand respect KUBECONFIG env var (#996)
  • Make up local subcommand use default namespace set in kubeconfig instead of hardcoded default and also add ability to watch all namespaces for ansible and helm type operators (#996)
  • Added k8s_status modules back to generation (#972)
  • Update checks for gvk registration to cover all cases for ansible (#973 & #1019)
  • Update reconciler for ansible and helm to use the cache rather than the API client. (#1022 & #1048 & #1054)
  • Update reconciler to will update the status everytime for ansible (#1066)
  • Update ansible proxy to recover dependent watches when pod is killed (#1067)
  • Update ansible proxy to handle watching cluster scoped dependent watches (#1031)

v0.4.0

Added

  • A new command operator-sdk migrate which adds a main.go source file and any associated source files for an operator that is not of the "go" type. (#887 and #897)
  • New commands operator-sdk run ansible and operator-sdk run helm which run the SDK as ansible and helm operator processes, respectively. These are intended to be used when running in a Pod inside a cluster. Developers wanting to run their operator locally should continue to use up local. (#887 and #897)
  • Ansible operator proxy added the cache handler which allows the get requests to use the operators cache. #760
  • Ansible operator proxy added ability to dynamically watch dependent resource that were created by ansible operator. #857
  • Ansible-based operators have leader election turned on by default. When upgrading, add environment variable POD_NAME to your operator's Deployment using the Kubernetes downward API. To see an example, run operator-sdk new --type=ansible ... and see file deploy/operator.yaml.
  • A new command operator-sdk scorecard which runs a series of generic tests on operators to ensure that an operator follows best practices. For more information, see the Scorecard Documentation

Changed

Bug Fixes

  • Fixes deadlocks during operator deployment rollouts, which were caused by operator pods requiring a leader election lock to become ready (#932)

v0.3.0

Added

  • Helm type operator generation support (#776)

Changed

  • The SDK's Kubernetes Golang dependency versions/revisions have been updated from v1.11.2 to v1.12.3. (#807)
  • The controller-runtime version has been updated from v0.1.4 to v0.1.8. See the v0.1.8 release notes for details.
  • The SDK now generates the CRD with the status subresource enabled by default. See the client doc on how to update the status subresource. (#787)

Deprecated

Removed

Bug Fixes

v0.2.1

Bug Fixes

  • Pin controller-runtime version to v0.1.4 to fix dependency issues and pin ansible idna package to version 2.7 (#831)

v0.2.0

Changed

  • The SDK now uses logr as the default logger to unify the logging output with the controller-runtime logs. Users can still use a logger of their own choice. See the logging doc on how the SDK initializes and uses logr.
  • Ansible Operator CR status better aligns with conventions. (#639)

Added

  • A new command operator-sdk print-deps which prints Golang packages and versions expected by the current Operator SDK version. Supplying --as-file prints packages and versions in Gopkg.toml format. (#772)
  • Add cluster-scoped flag to operator-sdk new command (#747)
  • Add up-local flag to test local subcommand (#781)
  • Add no-setup flag to test local subcommand (#770)
  • Add image flag to test local subcommand (#768)
  • Ansible Operator log output includes much more information for troubleshooting ansible errors. (#713)
  • Ansible Operator periodic reconciliation can be disabled (#739)

Bug fixes

  • Make operator-sdk command work with composed GOPATH (#676)
  • Ansible Operator "--kubeconfig" command line option fixed (#705)

v0.1.1

Bug fixes

  • Fix hardcoded CRD version in crd scaffold (#690)

v0.1.0

Changed

v0.0.7

Added

  • Service account generation (#454)
  • Leader election (#530)
  • Incluster test support for test framework (#469)
  • Ansible type operator generation support (#486, #559)

Changed

  • Moved the rendering of deploy/operator.yaml to the operator-sdk new command instead of operator-sdk build

v0.0.6

Added

  • Added operator-sdk up command to help deploy an operator. Currently supports running an operator locally against an existing cluster e.g operator-sdk up local --kubeconfig=<path-to-kubeconfig> --namespace=<operator-namespace>. See operator-sdk up -h for help. #219 #274
  • Added initial default metrics to be captured and exposed by Prometheus. #323 exposes the metrics port and #349 adds the initial default metrics.
  • Added initial test framework for operators #377, #392, #393

Changed

  • All the modules in pkg/sdk have been combined into a single package. action, handler, informer types and query pkgs have been consolidated into pkg/sdk. #242
  • The SDK exposes the Kubernetes clientset via k8sclient.GetKubeClient() #295
  • The SDK now vendors the k8s code-generators for an operator instead of using the prebuilt image gcr.io/coreos-k8s-scale-testing/codegen:1.9.3 #319
  • The SDK exposes the Kubernetes rest config via k8sclient.GetKubeConfig() #338
  • Use time.Duration instead of int for sdk.Watch #427

Fixed

  • The cache of available clients is being reset every minute for discovery of newely added resources to a cluster. #280