- Remove TypeMeta declaration from the implementation of the objects #1462
- 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)
- 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 defaultRESTMapper, 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
--verboseflag (#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-managerflag, available inoperator-sdk newandoperator-sdk migrate.depis still available through--dep-manager=dep. (#1001) - New optional flag
--custom-api-importforoperator-sdk add controllerto 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.
- When Helm operator projects are created, the SDK now generates RBAC rules in
deploy/role.yamlbased 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-versionflag can now have no subdomains, excore/v1. See (#1191) for discussion. (#1313) - Renamed
--docker-build-argsoption to--image-build-argsoption forbuildsubcommand, because this option can now be shared with other image build tools than docker when--image-builderoption is specified. (#1311) - Reduces Helm release information in CR status to only the release name and manifest and moves it from
status.conditionsto a new top-leveldeployedReleasefield. (#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+kubebuilderannotations 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:latestbase 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
- The SDK will no longer run
defaulter-genon runningoperator-sdk generate k8s. Defaulting for CRDs should be handled with mutating admission webhooks. (#1288) - The
--versionflag was removed. Users should use theoperator-sdk versioncommand. (#1444) - Breaking Change: The
test clustersubcommand and the corresponding--enable-testsflag for thebuildsubcommand have been removed (#1414) - Breaking Change: The
--cluster-scopedflag foroperator-sdk newhas 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)
- In Helm-based operators, when a custom resource with a failing release is reverted back to a working state, the
ReleaseFailedcondition is now correctly removed. (#1321) operator-sdk generate openapino longer overwrites CRD values derived from+kubebuilderannotations in Go API code. See issues (#1212) and (#1323) for discussion. (#1278)- Running
operator-sdk gen-csvon 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.
- New optional flag
--header-filefor commandsoperator-sdk generate k8sandoperator-sdk add apito supply a boilerplate header file for generated code. (#1239) - JSON output support for
operator-sdk scorecardsubcommand (#1228)
- 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-manifestflag in scorecard subcommand tonamespaced-manifestto match other subcommands - Subcommands of
operator-sdk generateare now verbose by default. (#1271) operator-sdk olm-catalog gen-csvparses Custom Resource manifests fromdeploy/crdsor a custom path specified incsv-config.yaml, encodes them in a JSON array, and sets the CSV'smetadata.annotations.alm-examplesfield to that JSON. (#1116)
- Fixed an issue that caused
operator-sdk new --type=helmto fail for charts that have template files in nested template directories. (#1235) - Fix bug in the YAML scanner used by
operator-sdk testandoperator-sdk scorecardthat could result in a panic if a manifest file started with---(#1258)
- 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-catalogflag--update-crdsoptionally copies CRD's fromdeploy/crdswhen creating a new CSV or updating an existing CSV, and--from-versionuses another versioned CSV manifest as a base for a new CSV version. (#1016) - New flag
--olm-deployedto direct thescorecardcommand to only use the CSV at--csv-pathfor manifest data, except for those provided to--cr-manifest. (#1044) - Command
versionprints the version of operator-sdk. (#1171)
- 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-registrymanifest format. See issue #900 for more details. (#1016) - Unexported
CleanupNoTfunction frompkg/test, as it is only intended to be used internally (#1167)
- Fix issue where running
operator-sdk test local --up-localwould sometimes leave a running process in the background after exit (#1089)
- Updated the Kubernetes dependencies to
1.13.1(#1020) - Updated the controller-runtime version to
v0.1.10. See the controller-runtimev0.1.10release 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
metricsPortvariable. #786 - A new command
operator-sdk olm-catalogto be used as a parent for SDK subcommands generating code related to Operator Lifecycle Manager (OLM) Catalog integration, and subcommandoperator-sdk olm-catalog gen-csvwhich 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_NAMEto your operator's Deployment using the Kubernetes downward API. To see an example, runoperator-sdk new --type=helm ...and see filedeploy/operator.yaml. #1000 - A new command
operator-sdk generate openapiwhich generates OpenAPIv3 validation specs in Go and in CRD manifests as YAML. (#869) - The
operator-sdk add apicommand now generates OpenAPIv3 validation specs in Go for that API, and in all CRD manifests as YAML.
- In new Helm operator projects, the scaffolded CR
specfield now contains the default values.yaml from the generated chart. (#967)
- Make
up localsubcommand respectKUBECONFIGenv var (#996) - Make
up localsubcommand use default namespace set in kubeconfig instead of hardcodeddefaultand 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)
- A new command
operator-sdk migratewhich 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 ansibleandoperator-sdk run helmwhich 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 useup 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_NAMEto your operator's Deployment using the Kubernetes downward API. To see an example, runoperator-sdk new --type=ansible ...and see filedeploy/operator.yaml. - A new command
operator-sdk scorecardwhich runs a series of generic tests on operators to ensure that an operator follows best practices. For more information, see theScorecard Documentation
- The official images for the Ansible and Helm operators have moved! Travis now builds, tags, and pushes operator base images during CI (#832).
- Fixes deadlocks during operator deployment rollouts, which were caused by operator pods requiring a leader election lock to become ready (#932)
- Helm type operator generation support (#776)
- The SDK's Kubernetes Golang dependency versions/revisions have been updated from
v1.11.2tov1.12.3. (#807) - The controller-runtime version has been updated from
v0.1.4tov0.1.8. See thev0.1.8release 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)
- Pin controller-runtime version to v0.1.4 to fix dependency issues and pin ansible idna package to version 2.7 (#831)
- 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)
- A new command
operator-sdk print-depswhich prints Golang packages and versions expected by the current Operator SDK version. Supplying--as-fileprints packages and versions in Gopkg.toml format. (#772) - Add
cluster-scopedflag tooperator-sdk newcommand (#747) - Add
up-localflag totest localsubcommand (#781) - Add
no-setupflag totest localsubcommand (#770) - Add
imageflag totest localsubcommand (#768) - Ansible Operator log output includes much more information for troubleshooting ansible errors. (#713)
- Ansible Operator periodic reconciliation can be disabled (#739)
- Make operator-sdk command work with composed GOPATH (#676)
- Ansible Operator "--kubeconfig" command line option fixed (#705)
- Fix hardcoded CRD version in crd scaffold (#690)
- Use controller runtime library for controller and client APIs
- See migration guide to migrate your project to
v0.1.0
- Service account generation (#454)
- Leader election (#530)
- Incluster test support for test framework (#469)
- Ansible type operator generation support (#486, #559)
- Moved the rendering of
deploy/operator.yamlto theoperator-sdk newcommand instead ofoperator-sdk build
- Added
operator-sdk upcommand to help deploy an operator. Currently supports running an operator locally against an existing cluster e.goperator-sdk up local --kubeconfig=<path-to-kubeconfig> --namespace=<operator-namespace>. Seeoperator-sdk up -hfor 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
- All the modules in
pkg/sdkhave been combined into a single package.action,handler,informertypesandquerypkgs have been consolidated intopkg/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.Durationinstead ofintforsdk.Watch#427
- The cache of available clients is being reset every minute for discovery of newely added resources to a cluster. #280